API Reference

Complete reference of all Layer5 Cloud REST API endpoints

Layer5 Cloud REST API reference

This reference is generated from the OpenAPI schema used by the Layer5 docs.

  • 43resources
  • 293endpoints

Resources

Showing all endpoints.

Ready to explore

Select an endpoint

Open a resource, choose a tag, and pick an endpoint to view its request and response details here.

Academy GET

/api/academy/admin/registrations

Get academy registrations

Returns a list of academy registrations with user, curricula, and pagination details.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/admin/registrations

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/admin/registrations

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/admin/registrations

Parameters

Query parameters

NameTypeRequiredDescription
pageSizeintegerNoNumber of results per page
pagesizeintegerNoNumber of results per page. Deprecated alias of pageSize.
pageintegerNoPage number
contentTypearray of stringNoFilter by content types
statusarray of stringNoFilter by registration status

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
List of registrations with pagination info

application/json

FieldTypeRequiredDescription
dataarray of objectYesThe data of the curricularegistrationsresponse.
pageintegerYesCurrent page number of the result set.
pageSizeintegerYesNumber of items per page.
totalCountinteger (int64)YesTotal number of items available.
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

500
Server error
Academy GET

/api/academy/admin/summary

Get academy content summary

Returns a summary of all academy content with metrics.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/admin/summary

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/admin/summary

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/admin/summary

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
A list of content with total count and registration metrics

application/json

Aggregate metrics for the instructor console, mirroring the deployed handler’s InstructorConsoleSummary struct.
FieldTypeRequiredDescription
curriculaarray of objectNoPer-content-type registration counts.
curriculaListobjectNoCurricula with metrics for the organization.
orgConfigobjectNoAcademy module configuration for the organization.
registrationsSummaryarray of objectNoPer-status registration counts.
testsarray of objectNoPer-test outcome counts.
testsSummaryobjectNoAggregate test outcomes across the organization.
totalActiveLearnersintegerNoLearners with at least one active registration.
totalLearnersintegerNoTotal distinct learners registered for the organization.
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

500
Server error
Academy GET

/api/academy/certificates/{certificateId}

Get a certificate by ID

Returns a certificate identified by its ID.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/certificates/{certificateId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/certificates/{certificateId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/certificates/{certificateId}

Parameters

Path parameters

NameTypeRequiredDescription
certificateIdstringYesThe ID of the certificate to retrieve

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
A single certificate

application/json

FieldTypeRequiredDescription
descriptionstringYesDescription of the certificate
expirationDatestring (date-time)NoDate when the certificate expires. Dynamically calculated from issued_date and expires_in; not specified by instructors.
expiresInintegerNoNumber of months after which the certificate expires
idstring (uuid)YesUnique identifier for the certificate
issuedDatestring (date-time)YesDate when the certificate was issued
issuingAuthoritiesarray of objectYesList of issuing authorities for the certificate
orgIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
recipientIdstring (uuid)YesID of the recipient (user) who received the certificate
recipientNamestringYesName of the recipient (user) who received the certificate
titlestringYesTitle of the certificate
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

404
Certificate not found
500
Server error
Academy GET

/api/academy/curricula

Get academy content

Returns a list of academy content with optional filtering.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/curricula

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/curricula

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/curricula

Parameters

Query parameters

NameTypeRequiredDescription
contentTypearray of stringNoFilter content by content types
visibilityarray of stringNoFilter content by visibility (public/private)
levelarray of stringNoFilter content by difficulty level
orgIdarray of stringNoFilter content by organization IDs
categoryarray of stringNoFilter content by categories
statusarray of stringNoFilter by registration status
searchstringNoSearch content by title
sortstringNoSort results by a specific field (e.g., title, createdAt)
orderstringNoOrder of sorting (asc or desc)
pageSizeintegerNoNumber of results per page
pagesizeintegerNoNumber of results per page. Deprecated alias of pageSize.
pageintegerNoPage number

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
A list of content with total count

application/json

FieldTypeRequiredDescription
dataarray of objectYesThe data of the academycurriculawithmetricslistresponse.
totalintegerYesTotal number of Curricula
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

500
Server error
Academy POST

/api/academy/curricula

Create a new academy curricula

Creates a new academy curricula with the provided details.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/curricula

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/curricula

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/curricula

Request body

application/json Required
FieldTypeRequiredDescription
accessExpiresAtstringNoExpiry time for curricula access
accessStatusstringYesCurrent access status of the curricula
badgeIdstring (uuid)NoID of the badge to be awarded on completion of this curricula
metadataobjectYesAdditional metadata about the Curricula
orgIdstringYesOrganization ID that owns this learning path
teamIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
titlestringYesTitle of the curricula
typestringYesType of the curricula
workspaceIdstringYesID of the workspace to which this Curricula belongs

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
created the curricula

application/json

AcademyCurricula entity schema.
FieldTypeRequiredDescription
badgeIdstring (uuid)NoID of the badge to be awarded on completion of this curricula
createdAtstringYesWhen the Curricula item was created
deletedAtstringYesNo description provided.
idstring (uuid)YesId of the Curricula
inviteIdstringNoID of the invite associated with this Curricula
levelstringYesLevel of the Curricula
metadataobjectYesAdditional metadata about the Curricula
orgIdstringYesOrganization ID that owns this learning path
slugstringYesslug of the Curricula
statusstringYesStatus of the Curricula
typestringYesNo description provided.
updatedAtstringYesWhen the Curricula was last updated
visibilitystringYesVisibility of the Curricula
workspaceIdstringNoID of the workspace to which this Curricula belongs
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

500
Server error
Academy GET

/api/academy/curricula/registered

Get academy content

Returns a list of academy content registered by the user with optional filtering.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/curricula/registered

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/curricula/registered

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/curricula/registered

Parameters

Query parameters

NameTypeRequiredDescription
contentTypearray of stringNoFilter content by content types
orgIdarray of stringNoFilter content by organization IDs

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
A list of content with total count

application/json

FieldTypeRequiredDescription
dataarray of objectYesThe data of the academycurriculalistresponse.
totalintegerYesTotal number of Curricula
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

500
Server error
Academy POST

/api/academy/curricula/registrations/{id}/withdraw

Withdraw a user from academy content

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/curricula/registrations/{id}/withdraw

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/curricula/registrations/{id}/withdraw

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/curricula/registrations/{id}/withdraw

Parameters

Path parameters

NameTypeRequiredDescription
idstringYesThe ID of the curricula

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
registered content

application/json

FieldTypeRequiredDescription
certificateobjectYesIssued certificate for completing the curricula under registration
contentIdstring (uuid)YesID of the course content
createdAtstring (date-time)YesWhen the registration was created
deletedAtstring (date-time)NoTimestamp when the resource was deleted.
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
metadataobjectYesAdditional metadata about the registration
orgIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
statusstringYesStatus of the user’s course registration
updatedAtstring (date-time)YesWhen the registration was updated
userIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Server error
Academy GET

/api/academy/curricula/{id}

Get a single academy curricula by ID

Returns a single academy curricula identified by its ID.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/curricula/{id}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/curricula/{id}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/curricula/{id}

Parameters

Path parameters

NameTypeRequiredDescription
idstringYesThe ID of the curricula

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
A single curricula

application/json

AcademyCurricula entity schema.
FieldTypeRequiredDescription
badgeIdstring (uuid)NoID of the badge to be awarded on completion of this curricula
createdAtstringYesWhen the Curricula item was created
deletedAtstringYesNo description provided.
idstring (uuid)YesId of the Curricula
invitationobjectNoInvitation entity schema.
inviteIdstringNoID of the invite associated with this Curricula
levelstringYesLevel of the Curricula
metadataobjectYesAdditional metadata about the Curricula
orgIdstringYesOrganization ID that owns this learning path
registrationCountnumberYesNumber of registrations associated with this curriculum.
slugstringYesslug of the Curricula
statusstringYesStatus of the Curricula
typestringYesNo description provided.
updatedAtstringYesWhen the Curricula was last updated
visibilitystringYesVisibility of the Curricula
workspaceIdstringNoID of the workspace to which this Curricula belongs
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

404
Curricula not found
500
Server error
Academy PUT

/api/academy/curricula/{id}

Update an existing academy curricula by ID

Updates the details of an existing academy curricula identified by its ID.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/curricula/{id}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/curricula/{id}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/curricula/{id}

Parameters

Path parameters

NameTypeRequiredDescription
idstringYesThe ID of the curricula

Request body

application/json Required
FieldTypeRequiredDescription
accessExpiresAtstringNoExpiry time for curricula access
accessStatusstringYesCurrent access status of the curricula
badgeIdstring (uuid)NoID of the badge to be awarded on completion of this curricula
metadataobjectYesAdditional metadata about the Curricula
orgIdstringYesOrganization ID that owns this learning path
teamIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
titlestringYesTitle of the curricula
typestringYesType of the curricula
workspaceIdstringYesID of the workspace to which this Curricula belongs

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
updated the curricula

application/json

AcademyCurricula entity schema.
FieldTypeRequiredDescription
badgeIdstring (uuid)NoID of the badge to be awarded on completion of this curricula
createdAtstringYesWhen the Curricula item was created
deletedAtstringYesNo description provided.
idstring (uuid)YesId of the Curricula
invitationobjectNoInvitation entity schema.
inviteIdstringNoID of the invite associated with this Curricula
levelstringYesLevel of the Curricula
metadataobjectYesAdditional metadata about the Curricula
orgIdstringYesOrganization ID that owns this learning path
registrationCountnumberYesNumber of registrations associated with this curriculum.
slugstringYesslug of the Curricula
statusstringYesStatus of the Curricula
typestringYesNo description provided.
updatedAtstringYesWhen the Curricula was last updated
visibilitystringYesVisibility of the Curricula
workspaceIdstringNoID of the workspace to which this Curricula belongs
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

404
Curricula not found
500
Server error
Academy DELETE

/api/academy/curricula/{id}

Delete an academy curricula by ID

Deletes an existing academy curricula identified by its ID.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/curricula/{id}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/curricula/{id}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/curricula/{id}

Parameters

Path parameters

NameTypeRequiredDescription
idstringYesThe ID of the curricula

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Curricula deleted
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

404
Curricula not found
500
Server error
Academy POST

/api/academy/register

Register a user to academy content

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/register

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/register

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/register

Request body

application/json Required
FieldTypeRequiredDescription
contentIdstring (uuid)YesID of the academy content to register for
contentTypestringNoNo description provided.
userIdstring (uuid)YesID of the user registering for the content.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
registered content

application/json

FieldTypeRequiredDescription
certificateobjectYesIssued certificate for completing the curricula under registration
contentIdstring (uuid)YesID of the course content
createdAtstring (date-time)YesWhen the registration was created
deletedAtstring (date-time)NoTimestamp when the resource was deleted.
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
metadataobjectYesAdditional metadata about the registration
orgIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
statusstringYesStatus of the user’s course registration
updatedAtstring (date-time)YesWhen the registration was updated
userIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

500
Server error
Academy POST

/api/academy/registrations/test-sessions/start

Start a Test by ID

Starts a new test session for the quiz identified by its ID.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/registrations/test-sessions/start

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/registrations/test-sessions/start

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/registrations/test-sessions/start

Request body

application/json Required
FieldTypeRequiredDescription
registrationIdstring (uuid)YesID of the associated registration.
testAbsPathstringYesThe test abs path of the starttestrequest.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
A single test

application/json

FieldTypeRequiredDescription
datestring (date)YesThe date of the quiz.
descriptionstringYesDescription of the quiz.
draftbooleanYesThe draft of the quiz.
filePathstringYesThe file path of the quiz.
finalbooleanYesIndicates if the quiz is final . i.e this quiz will used to evaluate the completion of parent section eg course , module , learning path
idstringYesQuiz ID. Identifies a Hugo content page, not a database row, so it is an opaque content-scoped string. Not a UUID - stored records carry authored slugs.
lastmodstring (date)YesThe lastmod of the quiz.
layoutstringYesThe layout of the quiz.
maxAttemptsintegerYesMaximum number of attempts allowed for the quiz. A value of 0 indicates unlimited attempts.
nextPageobjectYesNo description provided.
orgIdstring (uuid)YesOrganization ID that owns this quiz
parentobjectNoNo description provided.
passPercentagenumber (float)YesThe pass percentage of the quiz.
permalinkstringYesThe permalink of the quiz.
prerequisitesarray of objectYesThe prerequisites of the quiz.
questionsarray of objectYesThe questions of the quiz.
relPermalinkstringYesThe rel permalink of the quiz.
sectionstringYesThe section of the quiz.
slugstringYesThe slug of the quiz.
timeLimitone of integer, stringYesTime limit for the quiz in minutes. A value of 0 indicates no time limit. Accepts a number or a string because both forms are real production data - the Hugo theme emits a JSON number, while payloads persisted by earlier revisions hold a string such as “25” or the non-numeric sentinel “infinite”. A string that does not parse to a positive number means “no time limit” and normalizes to 0.
titlestringYesThe title of the quiz.
totalMarksintegerYesThe total marks of the quiz.
totalQuestionsintegerYesThe total questions of the quiz.
totalQuestionSetsintegerYesThe total question sets of the quiz.
totalQuestionsInBankintegerYesThe total questions in bank of the quiz.
typestringYesType of the resource.
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

404
Quiz not found
500
Server error
Academy POST

/api/academy/registrations/test-sessions/submit

Submit a quiz for evaluation

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/registrations/test-sessions/submit

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/registrations/test-sessions/submit

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/registrations/test-sessions/submit

Request body

application/json Required
A learner’s answers to a quiz. Submitted as the submitQuiz request body and persisted verbatim as TestSubmission.submissionData. registrationId and userId are a convenience echo of the authoritative values on the enclosing TestSubmission (registrationId / userId, backed by the registration_id and owner uuid NOT NULL columns); read them from the enclosing submission, not from here.
FieldTypeRequiredDescription
answersarray of objectYesThe answers of the quizsubmission.
quizAbsPathstringYesThe quiz abs path of the quizsubmission.
registrationIdstring | null (uuid)NoID of the associated registration. Optional, because a submission may not carry this echo; when it is absent the authoritative value is TestSubmission.registrationId. Absence MUST be expressed as null or an omitted property - the empty string is not a valid identifier.
testSessionIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
userIdstring | null (uuid)NoID of the user who owns or created this resource. Optional, because a submission may not carry this echo; when it is absent the authoritative value is TestSubmission.userId. Absence MUST be expressed as null or an omitted property - the empty string is not a valid identifier.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Progress tracker updated

application/json

FieldTypeRequiredDescription
attemptedAtstring (date-time)YesThe attempted at of the quizevaluationresult.
attemptsintegerYesThe attempts of the quizevaluationresult.
correctSubmissionsobjectYesThe correct submissions of the quizevaluationresult.
passedbooleanYesThe passed of the quizevaluationresult.
passPercentagenumber (float)YesThe pass percentage of the quizevaluationresult.
percentageScorednumber (float)YesThe percentage scored of the quizevaluationresult.
quizobjectYesNo description provided.
scoreintegerYesThe score of the quizevaluationresult.
totalMarksintegerYesThe total marks of the quizevaluationresult.
400
Bad request

application/json

FieldTypeRequiredDescription
detailsstringNoThe details of the errorresponse.
errorstringNoThe error of the errorresponse.
401
Expired JWT token used or insufficient privilege

text/plain

500
Server error

application/json

FieldTypeRequiredDescription
detailsstringNoThe details of the errorresponse.
errorstringNoThe error of the errorresponse.
Academy GET

/api/academy/registrations/tests

Get test metadata

Returns metadata for test identified by its absolute path.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/registrations/tests

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/registrations/tests

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/registrations/tests

Parameters

Query parameters

NameTypeRequiredDescription
absPathstringYesThe absolute path of the test to retrieve

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
A single test

application/json

FieldTypeRequiredDescription
datestring (date)YesThe date of the quiz.
descriptionstringYesDescription of the quiz.
draftbooleanYesThe draft of the quiz.
filePathstringYesThe file path of the quiz.
finalbooleanYesIndicates if the quiz is final . i.e this quiz will used to evaluate the completion of parent section eg course , module , learning path
idstringYesQuiz ID. Identifies a Hugo content page, not a database row, so it is an opaque content-scoped string. Not a UUID - stored records carry authored slugs.
lastmodstring (date)YesThe lastmod of the quiz.
layoutstringYesThe layout of the quiz.
maxAttemptsintegerYesMaximum number of attempts allowed for the quiz. A value of 0 indicates unlimited attempts.
nextPageobjectYesNo description provided.
orgIdstring (uuid)YesOrganization ID that owns this quiz
parentobjectNoNo description provided.
passPercentagenumber (float)YesThe pass percentage of the quiz.
permalinkstringYesThe permalink of the quiz.
prerequisitesarray of objectYesThe prerequisites of the quiz.
questionsarray of objectYesThe questions of the quiz.
relPermalinkstringYesThe rel permalink of the quiz.
sectionstringYesThe section of the quiz.
slugstringYesThe slug of the quiz.
timeLimitone of integer, stringYesTime limit for the quiz in minutes. A value of 0 indicates no time limit. Accepts a number or a string because both forms are real production data - the Hugo theme emits a JSON number, while payloads persisted by earlier revisions hold a string such as “25” or the non-numeric sentinel “infinite”. A string that does not parse to a positive number means “no time limit” and normalizes to 0.
titlestringYesThe title of the quiz.
totalMarksintegerYesThe total marks of the quiz.
totalQuestionsintegerYesThe total questions of the quiz.
totalQuestionSetsintegerYesThe total question sets of the quiz.
totalQuestionsInBankintegerYesThe total questions in bank of the quiz.
typestringYesType of the resource.
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

404
Quiz not found
500
Server error
Academy GET

/api/academy/registrations/{contentId}

Get registration information for academy content

Returns registration data for a specific content item, optionally filtered by status.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/registrations/{contentId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/registrations/{contentId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/registrations/{contentId}

Parameters

Path parameters

NameTypeRequiredDescription
contentIdstringYesThe ID of the content to retrieve registration data for

Query parameters

NameTypeRequiredDescription
statusstringNoFilter registrations by status (e.g., registered, completed)

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Registration data for the specified content

application/json

FieldTypeRequiredDescription
certificateobjectYesIssued certificate for completing the curricula under registration
contentIdstring (uuid)YesID of the course content
createdAtstring (date-time)YesWhen the registration was created
deletedAtstring (date-time)NoTimestamp when the resource was deleted.
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
metadataobjectYesAdditional metadata about the registration
orgIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
statusstringYesStatus of the user’s course registration
updatedAtstring (date-time)YesWhen the registration was updated
userIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

404
Content not found
500
Server error
Academy GET

/api/academy/registrations/{id}/test-sessions

Get all tests for a registration

Returns all tests associated with a specific registration ID for a user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/registrations/{id}/test-sessions

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/registrations/{id}/test-sessions

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/registrations/{id}/test-sessions

Parameters

Path parameters

NameTypeRequiredDescription
idstringYesThe ID of the registration to retrieve tests for

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pagesizeintegerNoGet responses by pagesize
testAbsPathstringNoFilter tests by absolute path

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
A list of tests for the specified registration

application/json

400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

404
Registration not found
500
Server error
Academy POST

/api/academy/registrations/{registrationId}/progress-tracker/update-current-item

Update the current item in the progress tracker

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/registrations/{registrationId}/progress-tracker/update-current-item

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/registrations/{registrationId}/progress-tracker/update-current-item

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/registrations/{registrationId}/progress-tracker/update-current-item

Parameters

Path parameters

NameTypeRequiredDescription
registrationIdstringYesThe ID of the registration

Request body

application/json Required
FieldTypeRequiredDescription
contentTypestringYesNo description provided.
itemDataobjectYesNo description provided.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Progress tracker updated

application/json

FieldTypeRequiredDescription
contentTypestringNoNo description provided.
itemDataobjectNoNo description provided.
messagestringNoThe message of the updatecurrentitemprogressresponse.
progressTrackerobjectNoNo description provided.
registrationIdstring (uuid)NoID of the associated registration.
400
Bad request

application/json

FieldTypeRequiredDescription
detailsstringNoThe details of the errorresponse.
errorstringNoThe error of the errorresponse.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Server error

application/json

FieldTypeRequiredDescription
detailsstringNoThe details of the errorresponse.
errorstringNoThe error of the errorresponse.
Academy GET

/api/academy/{type}/{orgId}/{slug}

Get a single learning path

Returns a learning path identified by type, orgId, and slug.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/academy/{type}/{orgId}/{slug}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/academy/{type}/{orgId}/{slug}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/academy/{type}/{orgId}/{slug}

Parameters

Path parameters

NameTypeRequiredDescription
typestringYesNo description provided.
orgIdstringYesNo description provided.
slugstringYesNo description provided.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
A single academy content

application/json

AcademyCurricula entity schema.
FieldTypeRequiredDescription
badgeIdstring (uuid)NoID of the badge to be awarded on completion of this curricula
createdAtstringYesWhen the Curricula item was created
deletedAtstringYesNo description provided.
idstring (uuid)YesId of the Curricula
inviteIdstringNoID of the invite associated with this Curricula
levelstringYesLevel of the Curricula
metadataobjectYesAdditional metadata about the Curricula
orgIdstringYesOrganization ID that owns this learning path
slugstringYesslug of the Curricula
statusstringYesStatus of the Curricula
typestringYesNo description provided.
updatedAtstringYesWhen the Curricula was last updated
visibilitystringYesVisibility of the Curricula
workspaceIdstringNoID of the workspace to which this Curricula belongs
400
Invalid request parameters
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Server error
Keychain GET

/api/auth/keychains

List keychains

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/auth/keychains

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/auth/keychains

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/auth/keychains

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Keychain(s) fetched

application/json

A paginated list of keychains.
FieldTypeRequiredDescription
pageintegerYesZero-based page index returned in this response.
pageSizeintegerYesMaximum number of items returned on each page.
totalCountintegerYesTotal number of items across all pages.
keychainsarray of objectYesKeychains returned on the current page.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Keychain POST

/api/auth/keychains

Create a keychain

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/auth/keychains

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/auth/keychains

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/auth/keychains

Request body

application/json Required
Payload for creating or updating a keychain.
FieldTypeRequiredDescription
namestringYesName of the keychain.
ownerstring (uuid)NoOwner of the keychain.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Keychain created

application/json

Represents a collection of keys.
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the keychain.
namestringYesName of the keychain.
ownerstring (uuid)YesOwner of the keychain.
createdAtstring (date-time)YesTimestamp when the keychain was created.
updatedAtstring (date-time)YesTimestamp when the keychain was last updated.
deletedAtstring | null (date-time)NoTimestamp when the keychain was soft-deleted.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Keychain GET

/api/auth/keychains/{keychainId}

Get keychain by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/auth/keychains/{keychainId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/auth/keychains/{keychainId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/auth/keychains/{keychainId}

Parameters

Path parameters

NameTypeRequiredDescription
keychainIdstring (uuid)YesKeychain ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Keychain fetched

application/json

Represents a collection of keys.
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the keychain.
namestringYesName of the keychain.
ownerstring (uuid)YesOwner of the keychain.
createdAtstring (date-time)YesTimestamp when the keychain was created.
updatedAtstring (date-time)YesTimestamp when the keychain was last updated.
deletedAtstring | null (date-time)NoTimestamp when the keychain was soft-deleted.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Keychain PUT

/api/auth/keychains/{keychainId}

Update keychain

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/auth/keychains/{keychainId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/auth/keychains/{keychainId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/auth/keychains/{keychainId}

Parameters

Path parameters

NameTypeRequiredDescription
keychainIdstring (uuid)YesKeychain ID

Request body

application/json Required
Payload for creating or updating a keychain.
FieldTypeRequiredDescription
namestringYesName of the keychain.
ownerstring (uuid)NoOwner of the keychain.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Keychain updated

application/json

Represents a collection of keys.
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the keychain.
namestringYesName of the keychain.
ownerstring (uuid)YesOwner of the keychain.
createdAtstring (date-time)YesTimestamp when the keychain was created.
updatedAtstring (date-time)YesTimestamp when the keychain was last updated.
deletedAtstring | null (date-time)NoTimestamp when the keychain was soft-deleted.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Keychain DELETE

/api/auth/keychains/{keychainId}

Delete keychain

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/auth/keychains/{keychainId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/auth/keychains/{keychainId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/auth/keychains/{keychainId}

Parameters

Path parameters

NameTypeRequiredDescription
keychainIdstring (uuid)YesKeychain ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Keychain deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Keychain GET

/api/auth/keychains/{keychainId}/keys

List keys in a keychain

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/auth/keychains/{keychainId}/keys

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/auth/keychains/{keychainId}/keys

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/auth/keychains/{keychainId}/keys

Parameters

Path parameters

NameTypeRequiredDescription
keychainIdstring (uuid)YesKeychain ID

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Keys response

application/json

A paginated list of authorization keys.
FieldTypeRequiredDescription
pageintegerYesZero-based page index returned in this response.
pageSizeintegerYesMaximum number of items returned on each page.
totalCountintegerYesTotal number of items across all pages.
keysarray of objectYesKeys returned on the current page.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Keychain POST

/api/auth/keychains/{keychainId}/{keyId}

Add key to keychain

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/auth/keychains/{keychainId}/{keyId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/auth/keychains/{keychainId}/{keyId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/auth/keychains/{keychainId}/{keyId}

Parameters

Path parameters

NameTypeRequiredDescription
keychainIdstring (uuid)YesKeychain ID
keyIdstring (uuid)YesKey ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Key added to keychain
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Keychain DELETE

/api/auth/keychains/{keychainId}/{keyId}

Remove key from keychain

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/auth/keychains/{keychainId}/{keyId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/auth/keychains/{keychainId}/{keyId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/auth/keychains/{keychainId}/{keyId}

Parameters

Path parameters

NameTypeRequiredDescription
keychainIdstring (uuid)YesKeychain ID
keyIdstring (uuid)YesKey ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Key removed from keychain
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Key GET

/api/auth/keys

List key

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/auth/keys

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/auth/keys

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/auth/keys

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Keys fetched

application/json

A paginated list of authorization keys.
FieldTypeRequiredDescription
pageintegerYesZero-based page index returned in this response.
pageSizeintegerYesMaximum number of items returned on each page.
totalCountintegerYesTotal number of items across all pages.
keysarray of objectYesKeys returned on the current page.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Key POST

/api/auth/keys

Create or update a key

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/auth/keys

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/auth/keys

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/auth/keys

Request body

application/json Required
Payload for creating or updating a key.
FieldTypeRequiredDescription
idstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
functionstringNoOperation permitted by the key.
categorystringNoCategory for the key.
subcategorystringNoSubcategory for the key.
descriptionstringNoHuman readable description of the key.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Key upserted

application/json

Represents an authorization key used for access control.
FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
ownerstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
functionstringYesOperation permitted by the key.
categorystringYesCategory for the key.
subcategorystringYesSubcategory for the key.
descriptionstringYesHuman readable description of the key.
createdAtstring (date-time)YesTimestamp when the key was created.
updatedAtstring (date-time)YesTimestamp when the key was last updated.
deletedAtstring | null (date-time)NoTimestamp when the key was soft-deleted.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Key GET

/api/auth/keys/{keyId}

Get key by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/auth/keys/{keyId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/auth/keys/{keyId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/auth/keys/{keyId}

Parameters

Path parameters

NameTypeRequiredDescription
keyIdstring (uuid)YesKey ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Key response

application/json

Represents an authorization key used for access control.
FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
ownerstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
functionstringYesOperation permitted by the key.
categorystringYesCategory for the key.
subcategorystringYesSubcategory for the key.
descriptionstringYesHuman readable description of the key.
createdAtstring (date-time)YesTimestamp when the key was created.
updatedAtstring (date-time)YesTimestamp when the key was last updated.
deletedAtstring | null (date-time)NoTimestamp when the key was soft-deleted.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Key DELETE

/api/auth/keys/{keyId}

Delete key

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/auth/keys/{keyId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/auth/keys/{keyId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/auth/keys/{keyId}

Parameters

Path parameters

NameTypeRequiredDescription
keyIdstring (uuid)YesKey ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Key deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

BlowhornHealth GET

/api/blowhorn/health

Get Blowhorn health

Returns the frozen Blowhorn contract version and whether the organization of the authenticated session is bound. Migrations move server-side; this endpoint reports the contract the server speaks.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/blowhorn/health

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/blowhorn/health

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/blowhorn/health

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Blowhorn health response

application/json

Blowhorn contract version and organization binding status.
FieldTypeRequiredDescription
boundbooleanYesWhether the organization is bound for Blowhorn operations.
checkedAtstring (date-time)NoTime the binding was checked.
contractVersionstringYesFrozen Blowhorn contract version the server speaks.
organizationIdstring (uuid)NoOrganization whose binding was checked.
401
Expired JWT token used or insufficient privilege

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Design Designs GET

/api/catalog/content/classes

Get catalog content classes

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/catalog/content/classes

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/catalog/content/classes

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/catalog/content/classes

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of items per page (canonical camelCase form).

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Catalog content classes

application/json

FieldTypeRequiredDescription
classstringNoThe class of the catalogcontentclass.
descriptionstringNoDescription of the catalogcontentclass.
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Design Designs GET

/api/catalog/content/{type}

Get catalog content

Authentication

No authentication required

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/catalog/content/{type}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/catalog/content/{type}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/catalog/content/{type}

Parameters

Path parameters

NameTypeRequiredDescription
typestringYesNo description provided.

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of items per page (canonical camelCase form).
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
typestringNoNo description provided.
technologystringNoNo description provided.
metricsbooleanNoNo description provided.
classstringNoNo description provided.
userIdstringNoNo description provided.
orgIdstringNoNo description provided.
workspaceIdstringNoNo description provided.
teamIdstringNoNo description provided.
populatebooleanNoNo description provided.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Catalog content page

application/json

Paginated catalog content listing (designs, filters, aggregate counts).
FieldTypeRequiredDescription
categoryCountarray of objectNoCategory-by-count aggregates for the catalog page.
filtersarray of objectNoPublished filters included on this page.
modelsCountarray of objectNoModel-by-count aggregates for the catalog page.
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
patternsarray of objectNoPublished designs included on this page.
totalCountintegerNoTotal number of items available.
404
Result not found

text/plain

500
Internal server error

text/plain

Design Designs POST

/api/catalog/content/{type}

Publish catalog content

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/catalog/content/{type}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/catalog/content/{type}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/catalog/content/{type}

Parameters

Path parameters

NameTypeRequiredDescription
typestringYesNo description provided.

Request body

application/json Required

Schema: object

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Catalog request result

application/json

Server-returned catalog publish request as persisted by meshery-cloud (catalog_requests table). Records a user’s request to publish a design or filter to the catalog, along with the reviewer-visible requester identity and the request’s approval status.
FieldTypeRequiredDescription
contentClassstring | nullNoSupport-level classification of the content, stored in the content_class column (a Postgres enum). Nullable — legacy requests predate the column.
contentIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
contentNamestringYesHuman-readable name of the content at request time.
contentTypestringYesKind of catalog content the request refers to.
createdAtstring (date-time)YesTimestamp of request creation.
emailstring (email)YesRequesting user’s email address at request time.
firstNamestringYesRequesting user’s first name at request time.
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
lastNamestringYesRequesting user’s last name at request time.
statusstringYesApproval status of the request.
updatedAtstring (date-time)YesTimestamp of last request modification (approval or denial).
userobject | nullNoRequesting user record, joined inline by the catalog-request list handler when shaping responses. Server-projected from the users table; not a column on the catalog_requests table itself, so the generated Go field is tagged db:"-" to keep it out of ORM column scans.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

409
Conflict
500
Internal server error

text/plain

Design Designs POST

/api/catalog/content/{type}/unpublish

Unpublish catalog content

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/catalog/content/{type}/unpublish

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/catalog/content/{type}/unpublish

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/catalog/content/{type}/unpublish

Parameters

Path parameters

NameTypeRequiredDescription
typestringYesNo description provided.

Request body

application/json Required

Schema: object

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Catalog request result

application/json

Server-returned catalog publish request as persisted by meshery-cloud (catalog_requests table). Records a user’s request to publish a design or filter to the catalog, along with the reviewer-visible requester identity and the request’s approval status.
FieldTypeRequiredDescription
contentClassstring | nullNoSupport-level classification of the content, stored in the content_class column (a Postgres enum). Nullable — legacy requests predate the column.
contentIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
contentNamestringYesHuman-readable name of the content at request time.
contentTypestringYesKind of catalog content the request refers to.
createdAtstring (date-time)YesTimestamp of request creation.
emailstring (email)YesRequesting user’s email address at request time.
firstNamestringYesRequesting user’s first name at request time.
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
lastNamestringYesRequesting user’s last name at request time.
statusstringYesApproval status of the request.
updatedAtstring (date-time)YesTimestamp of last request modification (approval or denial).
userobject | nullNoRequesting user record, joined inline by the catalog-request list handler when shaping responses. Server-projected from the users table; not a column on the catalog_requests table itself, so the generated Go field is tagged db:"-" to keep it out of ORM column scans.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

409
Conflict
500
Internal server error

text/plain

Design Designs GET

/api/catalog/requests

Get catalog requests

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/catalog/requests

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/catalog/requests

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/catalog/requests

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of items per page (canonical camelCase form).
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
filterstringNoNo description provided.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Catalog requests page

application/json

Paginated catalog-request listing (pending publish approvals).
FieldTypeRequiredDescription
catalogRequestsarray of objectNoCatalog requests included on this page.
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
totalCountintegerNoTotal number of items available.
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Design Designs POST

/api/catalog/requests/approve

Approve a catalog request

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/catalog/requests/approve

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/catalog/requests/approve

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/catalog/requests/approve

Request body

application/json Required

Schema: object

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Request approved

application/json

400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

409
Conflict
500
Internal server error

text/plain

Design Designs POST

/api/catalog/requests/deny

Deny a catalog request

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/catalog/requests/deny

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/catalog/requests/deny

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/catalog/requests/deny

Request body

application/json Required

Schema: object

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Request denied

application/json

400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

409
Conflict
500
Internal server error

text/plain

Claim GET

/api/claims

List claims

Returns a paginated list of the claims in the organization of the authenticated session, active and historical, optionally filtered by resource, holding connection, user, status, outcome and the time the claim was taken. Ordered by claimedAt, newest first, unless order is claimedAt asc. Every member holding View Claims sees every claim in the organization.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/claims

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/claims

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/claims

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of items per page.
orderstringNoGet ordered responses
resourceTypestringNoFilter by claimed resource type.
resourceIdstring (uuid)NoFilter by claimed resource ID.
claimantConnectionIdstring (uuid)NoFilter by the connection that holds or held the claim.
claimantUserIdstring (uuid)NoFilter by the user whose session took the claim.
statusstringNoFilter by claim status, as read (a claim past expiresAt is expired).
outcomestringNoFilter by the outcome reported on release.
claimedSincestring (date-time)NoOnly claims taken at or after this time.
claimedUntilstring (date-time)NoOnly claims taken before this time.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Claims page

application/json

Paginated collection of claims.
FieldTypeRequiredDescription
claimsarray of objectYesClaims included on this page of results.
pageintegerYesCurrent page number of the result set.
pageSizeintegerYesNumber of items per page.
totalCountintegerYesTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Claim POST

/api/claims

Claim a resource

Takes a claim on the named resource for the connection connectionId, which must be the caller’s own live connection in the session organization. Succeeds with 201 when the resource has no active claim. When the same connection already holds the active claim the call is a replay and returns it unchanged with 200. An active claim held by another connection answers 409. A claim past expiresAt, or one whose holding connection was deleted, is marked expired and superseded. The resource must exist in the session organization; a server verifies the resource types it serves (for example content_item and schedule) and refuses any other type with 400. Decided in a single server-side statement, so of two racing claimants exactly one wins.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/claims

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/claims

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/claims

Request body

application/json Required
Payload for taking a claim. Contains only client-settable fields; the owning organizationId, claimantUserId, status, claimedAt, expiresAt and the timestamps are server-managed.
FieldTypeRequiredDescription
connectionIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
durationMinutesintegerNoRequested claim duration in minutes; the server applies its default (30) when omitted and may cap it.
resourceIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
resourceTypestringYesType of the resource to claim, for example content_item.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Replay - the same connection already holds the active claim

application/json

Server-returned claim: a time-bound hold that one connection takes on one resource so that competing workers never act on it twice. A claim is generic: it names the resource it holds by type and ID, and any construct can be claimed. A claim is held by a connection (claimantConnectionId, for example the connection a desktop client registered for its machine) on behalf of the user whose session took it (claimantUserId). At most one claim per resource is active in an organization. A claim whose expiresAt has passed reads as expired and the resource may be claimed again, so a holder that disappears never strands the resource. Released and expired claims are kept as history: a handoff is an expired claim followed by an active claim on the same resource. The holder reports what happened (outcome) when it releases the claim. The race between claimants is decided server-side in a single statement.
FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
resourceTypestringYesType of the claimed resource, the construct name in snake_case, for example content_item or schedule.
resourceIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
claimantConnectionIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
claimantUserIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
statusstringYesLifecycle of the claim. active while held, released once the holder (or a member allowed to release it) lets it go, expired once expiresAt passed without a renewal or the holding connection was deleted. Expiry is evaluated when the claim is read, so a claim never reads active past its expiresAt.
claimedAtstring (date-time)YesTime the claim was taken.
expiresAtstring (date-time)YesTime the claim lapses unless the holder renews it. Always set by the server; a claim past this time is stale.
renewedAtstring | null (date-time)NoTime of the last renewal. Null until the claim is first renewed.
releasedAtstring | null (date-time)NoTime the claim was released. Null while the claim is active or after it expired.
outcomestringNoWhat the releaser reported when the claim was released: completed when the work behind it finished, failed when it was attempted and did not succeed, cancelled when it was let go without the work being done (including a release by another member). Omitted while the claim is active and on an expired claim.
outcomeErrorstringNoError reported with a failed outcome. Omitted otherwise.
outcomeEventIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
releasedBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
createdAtstring (date-time)YesTimestamp of claim creation.
updatedAtstring (date-time)YesTimestamp of last claim modification.
201
Claim taken

application/json

Server-returned claim: a time-bound hold that one connection takes on one resource so that competing workers never act on it twice. A claim is generic: it names the resource it holds by type and ID, and any construct can be claimed. A claim is held by a connection (claimantConnectionId, for example the connection a desktop client registered for its machine) on behalf of the user whose session took it (claimantUserId). At most one claim per resource is active in an organization. A claim whose expiresAt has passed reads as expired and the resource may be claimed again, so a holder that disappears never strands the resource. Released and expired claims are kept as history: a handoff is an expired claim followed by an active claim on the same resource. The holder reports what happened (outcome) when it releases the claim. The race between claimants is decided server-side in a single statement.
FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
resourceTypestringYesType of the claimed resource, the construct name in snake_case, for example content_item or schedule.
resourceIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
claimantConnectionIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
claimantUserIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
statusstringYesLifecycle of the claim. active while held, released once the holder (or a member allowed to release it) lets it go, expired once expiresAt passed without a renewal or the holding connection was deleted. Expiry is evaluated when the claim is read, so a claim never reads active past its expiresAt.
claimedAtstring (date-time)YesTime the claim was taken.
expiresAtstring (date-time)YesTime the claim lapses unless the holder renews it. Always set by the server; a claim past this time is stale.
renewedAtstring | null (date-time)NoTime of the last renewal. Null until the claim is first renewed.
releasedAtstring | null (date-time)NoTime the claim was released. Null while the claim is active or after it expired.
outcomestringNoWhat the releaser reported when the claim was released: completed when the work behind it finished, failed when it was attempted and did not succeed, cancelled when it was let go without the work being done (including a release by another member). Omitted while the claim is active and on an expired claim.
outcomeErrorstringNoError reported with a failed outcome. Omitted otherwise.
outcomeEventIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
releasedBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
createdAtstring (date-time)YesTimestamp of claim creation.
updatedAtstring (date-time)YesTimestamp of last claim modification.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

409
Conflict - another connection holds the resource’s active claim, the claim is not active, or the caller may not renew or release it

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Claim GET

/api/claims/{claimId}

Get a claim by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/claims/{claimId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/claims/{claimId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/claims/{claimId}

Parameters

Path parameters

NameTypeRequiredDescription
claimIdstring (uuid)YesClaim ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Claim response

application/json

Server-returned claim: a time-bound hold that one connection takes on one resource so that competing workers never act on it twice. A claim is generic: it names the resource it holds by type and ID, and any construct can be claimed. A claim is held by a connection (claimantConnectionId, for example the connection a desktop client registered for its machine) on behalf of the user whose session took it (claimantUserId). At most one claim per resource is active in an organization. A claim whose expiresAt has passed reads as expired and the resource may be claimed again, so a holder that disappears never strands the resource. Released and expired claims are kept as history: a handoff is an expired claim followed by an active claim on the same resource. The holder reports what happened (outcome) when it releases the claim. The race between claimants is decided server-side in a single statement.
FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
resourceTypestringYesType of the claimed resource, the construct name in snake_case, for example content_item or schedule.
resourceIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
claimantConnectionIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
claimantUserIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
statusstringYesLifecycle of the claim. active while held, released once the holder (or a member allowed to release it) lets it go, expired once expiresAt passed without a renewal or the holding connection was deleted. Expiry is evaluated when the claim is read, so a claim never reads active past its expiresAt.
claimedAtstring (date-time)YesTime the claim was taken.
expiresAtstring (date-time)YesTime the claim lapses unless the holder renews it. Always set by the server; a claim past this time is stale.
renewedAtstring | null (date-time)NoTime of the last renewal. Null until the claim is first renewed.
releasedAtstring | null (date-time)NoTime the claim was released. Null while the claim is active or after it expired.
outcomestringNoWhat the releaser reported when the claim was released: completed when the work behind it finished, failed when it was attempted and did not succeed, cancelled when it was let go without the work being done (including a release by another member). Omitted while the claim is active and on an expired claim.
outcomeErrorstringNoError reported with a failed outcome. Omitted otherwise.
outcomeEventIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
releasedBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
createdAtstring (date-time)YesTimestamp of claim creation.
updatedAtstring (date-time)YesTimestamp of last claim modification.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Claim POST

/api/claims/{claimId}/release

Release a claim

Ends an active claim and records what happened: sets status to released, releasedAt, releasedBy and the reported outcome, outcomeError and outcomeEventId. The holder may release its own claim from any of its connections (the claim’s claimantUserId is the caller); a member holding Release claims of other members may release anyone’s. Anyone else is answered 409. Releasing a claim that is already released is a no-op that returns the stored claim unchanged, whatever outcome is sent. A claim that expired cannot be released (409): the resource may already have been handed off. outcomeError is accepted only with outcome: failed; outcomeEventId must name a live event the claim’s holder owns, else 404.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/claims/{claimId}/release

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/claims/{claimId}/release

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/claims/{claimId}/release

Parameters

Path parameters

NameTypeRequiredDescription
claimIdstring (uuid)YesClaim ID

Request body

application/json Required
Payload for releasing a claim with the outcome of the work it held. The releaser is the session user; no connection is needed, so a holder can release a stuck hold from another of its computers, and an authorized member can release someone else’s.
FieldTypeRequiredDescription
outcomestringYesWhat happened to the work the claim held.
outcomeErrorstringNoError behind a failed outcome. Refused with any other outcome.
outcomeEventIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Claim released

application/json

Server-returned claim: a time-bound hold that one connection takes on one resource so that competing workers never act on it twice. A claim is generic: it names the resource it holds by type and ID, and any construct can be claimed. A claim is held by a connection (claimantConnectionId, for example the connection a desktop client registered for its machine) on behalf of the user whose session took it (claimantUserId). At most one claim per resource is active in an organization. A claim whose expiresAt has passed reads as expired and the resource may be claimed again, so a holder that disappears never strands the resource. Released and expired claims are kept as history: a handoff is an expired claim followed by an active claim on the same resource. The holder reports what happened (outcome) when it releases the claim. The race between claimants is decided server-side in a single statement.
FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
resourceTypestringYesType of the claimed resource, the construct name in snake_case, for example content_item or schedule.
resourceIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
claimantConnectionIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
claimantUserIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
statusstringYesLifecycle of the claim. active while held, released once the holder (or a member allowed to release it) lets it go, expired once expiresAt passed without a renewal or the holding connection was deleted. Expiry is evaluated when the claim is read, so a claim never reads active past its expiresAt.
claimedAtstring (date-time)YesTime the claim was taken.
expiresAtstring (date-time)YesTime the claim lapses unless the holder renews it. Always set by the server; a claim past this time is stale.
renewedAtstring | null (date-time)NoTime of the last renewal. Null until the claim is first renewed.
releasedAtstring | null (date-time)NoTime the claim was released. Null while the claim is active or after it expired.
outcomestringNoWhat the releaser reported when the claim was released: completed when the work behind it finished, failed when it was attempted and did not succeed, cancelled when it was let go without the work being done (including a release by another member). Omitted while the claim is active and on an expired claim.
outcomeErrorstringNoError reported with a failed outcome. Omitted otherwise.
outcomeEventIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
releasedBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
createdAtstring (date-time)YesTimestamp of claim creation.
updatedAtstring (date-time)YesTimestamp of last claim modification.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

409
Conflict - another connection holds the resource’s active claim, the claim is not active, or the caller may not renew or release it

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Claim POST

/api/claims/{claimId}/renew

Renew a claim

Moves expiresAt forward and sets renewedAt, for the holding connection only: connectionId must be the caller’s own live connection and the one that holds the claim. A claim that is not active (released, or past expiresAt), or that another connection holds, answers 409 and is never taken back.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/claims/{claimId}/renew

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/claims/{claimId}/renew

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/claims/{claimId}/renew

Parameters

Path parameters

NameTypeRequiredDescription
claimIdstring (uuid)YesClaim ID

Request body

application/json Required
Payload for renewing a claim. Only the holding connection may renew.
FieldTypeRequiredDescription
connectionIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
durationMinutesintegerNoRequested extension in minutes from now; the server applies its default (30) when omitted and may cap it.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Claim renewed

application/json

Server-returned claim: a time-bound hold that one connection takes on one resource so that competing workers never act on it twice. A claim is generic: it names the resource it holds by type and ID, and any construct can be claimed. A claim is held by a connection (claimantConnectionId, for example the connection a desktop client registered for its machine) on behalf of the user whose session took it (claimantUserId). At most one claim per resource is active in an organization. A claim whose expiresAt has passed reads as expired and the resource may be claimed again, so a holder that disappears never strands the resource. Released and expired claims are kept as history: a handoff is an expired claim followed by an active claim on the same resource. The holder reports what happened (outcome) when it releases the claim. The race between claimants is decided server-side in a single statement.
FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
resourceTypestringYesType of the claimed resource, the construct name in snake_case, for example content_item or schedule.
resourceIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
claimantConnectionIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
claimantUserIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
statusstringYesLifecycle of the claim. active while held, released once the holder (or a member allowed to release it) lets it go, expired once expiresAt passed without a renewal or the holding connection was deleted. Expiry is evaluated when the claim is read, so a claim never reads active past its expiresAt.
claimedAtstring (date-time)YesTime the claim was taken.
expiresAtstring (date-time)YesTime the claim lapses unless the holder renews it. Always set by the server; a claim past this time is stale.
renewedAtstring | null (date-time)NoTime of the last renewal. Null until the claim is first renewed.
releasedAtstring | null (date-time)NoTime the claim was released. Null while the claim is active or after it expired.
outcomestringNoWhat the releaser reported when the claim was released: completed when the work behind it finished, failed when it was attempted and did not succeed, cancelled when it was let go without the work being done (including a release by another member). Omitted while the claim is active and on an expired claim.
outcomeErrorstringNoError reported with a failed outcome. Omitted otherwise.
outcomeEventIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
releasedBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
createdAtstring (date-time)YesTimestamp of claim creation.
updatedAtstring (date-time)YesTimestamp of last claim modification.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

409
Conflict - another connection holds the resource’s active claim, the claim is not active, or the caller may not renew or release it

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

ContentItem GET

/api/content-items

List content items

Returns a paginated list of the live content items in the organization of the authenticated session, ordered by rowNumber unless order names another column (rowNumber, createdAt, updatedAt). search matches the profile or the content values, case-insensitively. threadId returns one whole thread: the root item it names and every live item whose threadId names it, ordered by threadIndex (the root first) unless order names another column.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content-items

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content-items

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content-items

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of items per page (canonical camelCase form).
pagesizeintegerNoNumber of items per page. Deprecated alias of pageSize; canonical pageSize wins when both are present.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
profilestringNoFilter by owning profile subject (exact match).
threadIdstring (uuid)NoReturn one thread: the root item this ID names and every live item whose threadId names it.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Content item page

application/json

Paginated collection of content items.
FieldTypeRequiredDescription
contentItemsarray of objectNoContent items included on this page of results.
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
totalCountintegerNoTotal number of items available.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

ContentItem POST

/api/content-items

Insert a content item

Inserts a new content item. Insert-only: any supplied id and expectedFingerprint are ignored; existing rows change only through the conditional updateContentItem. The fingerprint is server-computed. Row numbers are unique across the live content items of the organization, whatever their profile. When rowNumber is omitted the server assigns the next row number of the organization (one more than the highest row number the organization has used, counting soft-deleted content items so a deleted item’s number is not handed out again by assignment), atomically with the insert, so concurrent inserts never receive the same number. An organization that has never had a content item is assigned row number 1 first (an explicit rowNumber of 0 is still accepted). A supplied rowNumber that another live content item of the organization already holds refuses the insert with a 409. A rulesOfEngagement outside its schema (an unknown preset or dial, or a value out of range) is refused with a 400, on insert and on update alike. Each mediaAssetIds entry must name a media asset of the session organization, else 400 (the same 400 for a missing, another organization’s and a deleted asset), on insert and on update alike. The server does not require the asset to be ready at write time: deleting an asset does not check content item references, and such an item is refused by name when it posts, so the posting client checks readiness. Thread fields are checked against the organization’s live content items in the same transaction as the insert, and a violation is refused with a 400: threadId must name a live item of the organization that is not itself part of a thread; replyToId requires threadId and must name that root or a live item of the same thread; threadIndex is required exactly when threadId is given and must exceed the position of the item replyToId names (the root counts as 0). An item of another organization, a deleted item and a missing one receive the same 400. A threadIndex that another live item of the same thread already holds refuses the insert with a 409.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content-items

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content-items

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content-items

Request body

application/json Required
Payload for inserting or updating a content item. Contains only client-settable fields; the owning organizationId (derived from the authenticated session), the server-computed fingerprint and the server-generated createdAt / updatedAt timestamps are intentionally excluded.
FieldTypeRequiredDescription
dataobjectNoContent values, stored as a JSON blob.
expectedFingerprintstringNoOptimistic-concurrency precondition for update: when supplied, the update applies only when the stored fingerprint still matches, and is refused with a 409 otherwise. Ignored on insert.
idstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
mediaAssetIdsarray of string (uuid)NoThe media assets the item posts, in posting order. Omitted on insert means none; omitted on update keeps the stored list (old clients send the whole item without it); an empty array clears it.
profilestringYesSubject of the owning profile.
replyToIdstring (uuid)NoID of the item this item answers directly: the root named by threadId or an item of the same thread. Requires threadId. Read on insert; on update it must be omitted or equal the stored value.
rowNumberintegerNoRow number of the content item, unique across the live content items of the organization. Optional: omitted on insert, the server assigns the next row number of the organization; omitted on update, the stored row number is kept.
rulesOfEngagementobjectNoThe item’s own rules of engagement, which can only tighten the rules its profile and platform run under. Omitted on insert, the item has none; omitted on update, the stored rules are kept; null on update clears them.
threadIdstring (uuid)NoID of the thread’s root item. Read on insert; on update it must be omitted or equal the stored value.
threadIndexintegerNoPosition of the item in its thread, the root counting as 0. Required exactly when threadId is given. Read on insert; on update it must be omitted or equal the stored value.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Content item created

application/json

Server-returned content item as persisted by the owning service. Content items carry a row number and a server-computed fingerprint over their canonical values; updates are conditional on the fingerprint the writer read, so stale writes are refused rather than silently applied. An item may carry its own rules of engagement, which can only tighten, and may belong to a thread through threadId, replyToId and threadIndex. See docs/content-item-contract.md.
FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
profilestringYesSubject of the owning profile.
rowNumberintegerYesRow number of the content item, unique across the live content items of the organization.
fingerprintstringYesHex digest over the canonical content values (data, profile, rowNumber and, when set, rulesOfEngagement and mediaAssetIds), typed so null, empty string, zero and false differ. An item without them hashes exactly as it did before the fields existed. The thread fields are fixed at insert and are not part of it. Server-computed; used for conditional updates.
dataobjectNoContent values, stored as a JSON blob.
createdAtstring (date-time)YesTimestamp of content item creation.
updatedAtstring (date-time)YesTimestamp of last content item modification.
deletedAtstring | null (date-time)NoTimestamp when the content item was soft-deleted.
createdBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
rulesOfEngagementobjectNoThe item’s own rules of engagement, set by the order that wrote it. They can only tighten: the client that runs the item applies the stricter of these and the rules that apply to the item’s profile and platform without them, and the warm-up and the pause after a sign-in challenge always apply. The server validates the shape and stores the value; it does not resolve it. Omitted when the item has none, in which case the item runs under the rules that apply without them.
threadIdstring (uuid)NoID of the root item of the thread this item belongs to: the first post of a split thread, or the first transmission of a conversation between profiles. Omitted on a standalone item and on a root itself; a root is the item other items name here. Set on insert only.
replyToIdstring (uuid)NoID of the item this item answers directly: the thread root or another item of the same thread. A split thread’s part names the part before it; a reply in a conversation between profiles names the transmission above it. Omitted when the item answers nothing. Never set without threadId. Set on insert only.
threadIndexintegerNoPosition of the item in its thread, counting the root as 0. Present exactly when threadId is, unique among the live items of the thread, and greater than the position of the item named by replyToId. Set on insert only.
mediaAssetIdsarray of string (uuid)NoThe media assets the item posts, in posting order. Ids only, never URLs. Omitted when the item posts no file.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

409
Conflict - the stale expectedFingerprint precondition no longer matches the stored content fingerprint, another live content item of the organization already holds the same rowNumber, or another live item of the same thread already holds the same threadIndex

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

ContentItem GET

/api/content-items/{contentItemId}

Get a content item by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content-items/{contentItemId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content-items/{contentItemId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content-items/{contentItemId}

Parameters

Path parameters

NameTypeRequiredDescription
contentItemIdstring (uuid)YesContent item ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Content item response

application/json

Server-returned content item as persisted by the owning service. Content items carry a row number and a server-computed fingerprint over their canonical values; updates are conditional on the fingerprint the writer read, so stale writes are refused rather than silently applied. An item may carry its own rules of engagement, which can only tighten, and may belong to a thread through threadId, replyToId and threadIndex. See docs/content-item-contract.md.
FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
profilestringYesSubject of the owning profile.
rowNumberintegerYesRow number of the content item, unique across the live content items of the organization.
fingerprintstringYesHex digest over the canonical content values (data, profile, rowNumber and, when set, rulesOfEngagement and mediaAssetIds), typed so null, empty string, zero and false differ. An item without them hashes exactly as it did before the fields existed. The thread fields are fixed at insert and are not part of it. Server-computed; used for conditional updates.
dataobjectNoContent values, stored as a JSON blob.
createdAtstring (date-time)YesTimestamp of content item creation.
updatedAtstring (date-time)YesTimestamp of last content item modification.
deletedAtstring | null (date-time)NoTimestamp when the content item was soft-deleted.
createdBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
rulesOfEngagementobjectNoThe item’s own rules of engagement, set by the order that wrote it. They can only tighten: the client that runs the item applies the stricter of these and the rules that apply to the item’s profile and platform without them, and the warm-up and the pause after a sign-in challenge always apply. The server validates the shape and stores the value; it does not resolve it. Omitted when the item has none, in which case the item runs under the rules that apply without them.
threadIdstring (uuid)NoID of the root item of the thread this item belongs to: the first post of a split thread, or the first transmission of a conversation between profiles. Omitted on a standalone item and on a root itself; a root is the item other items name here. Set on insert only.
replyToIdstring (uuid)NoID of the item this item answers directly: the thread root or another item of the same thread. A split thread’s part names the part before it; a reply in a conversation between profiles names the transmission above it. Omitted when the item answers nothing. Never set without threadId. Set on insert only.
threadIndexintegerNoPosition of the item in its thread, counting the root as 0. Present exactly when threadId is, unique among the live items of the thread, and greater than the position of the item named by replyToId. Set on insert only.
mediaAssetIdsarray of string (uuid)NoThe media assets the item posts, in posting order. Ids only, never URLs. Omitted when the item posts no file.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

ContentItem PUT

/api/content-items/{contentItemId}

Update a content item

Conditionally updates the content item. When expectedFingerprint is supplied and stale, the update is refused with a 409, as is an update that would move the item onto a rowNumber another live content item of the organization holds. An omitted rowNumber keeps the stored one. An omitted rulesOfEngagement keeps the stored rules and null clears them, so a writer that does not know the field never erases it. An omitted mediaAssetIds keeps the stored list and [] clears it. The thread fields are fixed at insert: omitted, or equal to the stored values, they are kept; any other value is refused with a 400.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content-items/{contentItemId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content-items/{contentItemId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content-items/{contentItemId}

Parameters

Path parameters

NameTypeRequiredDescription
contentItemIdstring (uuid)YesContent item ID

Request body

application/json Required
Payload for inserting or updating a content item. Contains only client-settable fields; the owning organizationId (derived from the authenticated session), the server-computed fingerprint and the server-generated createdAt / updatedAt timestamps are intentionally excluded.
FieldTypeRequiredDescription
dataobjectNoContent values, stored as a JSON blob.
expectedFingerprintstringNoOptimistic-concurrency precondition for update: when supplied, the update applies only when the stored fingerprint still matches, and is refused with a 409 otherwise. Ignored on insert.
idstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
mediaAssetIdsarray of string (uuid)NoThe media assets the item posts, in posting order. Omitted on insert means none; omitted on update keeps the stored list (old clients send the whole item without it); an empty array clears it.
profilestringYesSubject of the owning profile.
replyToIdstring (uuid)NoID of the item this item answers directly: the root named by threadId or an item of the same thread. Requires threadId. Read on insert; on update it must be omitted or equal the stored value.
rowNumberintegerNoRow number of the content item, unique across the live content items of the organization. Optional: omitted on insert, the server assigns the next row number of the organization; omitted on update, the stored row number is kept.
rulesOfEngagementobjectNoThe item’s own rules of engagement, which can only tighten the rules its profile and platform run under. Omitted on insert, the item has none; omitted on update, the stored rules are kept; null on update clears them.
threadIdstring (uuid)NoID of the thread’s root item. Read on insert; on update it must be omitted or equal the stored value.
threadIndexintegerNoPosition of the item in its thread, the root counting as 0. Required exactly when threadId is given. Read on insert; on update it must be omitted or equal the stored value.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Content item updated

application/json

Server-returned content item as persisted by the owning service. Content items carry a row number and a server-computed fingerprint over their canonical values; updates are conditional on the fingerprint the writer read, so stale writes are refused rather than silently applied. An item may carry its own rules of engagement, which can only tighten, and may belong to a thread through threadId, replyToId and threadIndex. See docs/content-item-contract.md.
FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
profilestringYesSubject of the owning profile.
rowNumberintegerYesRow number of the content item, unique across the live content items of the organization.
fingerprintstringYesHex digest over the canonical content values (data, profile, rowNumber and, when set, rulesOfEngagement and mediaAssetIds), typed so null, empty string, zero and false differ. An item without them hashes exactly as it did before the fields existed. The thread fields are fixed at insert and are not part of it. Server-computed; used for conditional updates.
dataobjectNoContent values, stored as a JSON blob.
createdAtstring (date-time)YesTimestamp of content item creation.
updatedAtstring (date-time)YesTimestamp of last content item modification.
deletedAtstring | null (date-time)NoTimestamp when the content item was soft-deleted.
createdBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
rulesOfEngagementobjectNoThe item’s own rules of engagement, set by the order that wrote it. They can only tighten: the client that runs the item applies the stricter of these and the rules that apply to the item’s profile and platform without them, and the warm-up and the pause after a sign-in challenge always apply. The server validates the shape and stores the value; it does not resolve it. Omitted when the item has none, in which case the item runs under the rules that apply without them.
threadIdstring (uuid)NoID of the root item of the thread this item belongs to: the first post of a split thread, or the first transmission of a conversation between profiles. Omitted on a standalone item and on a root itself; a root is the item other items name here. Set on insert only.
replyToIdstring (uuid)NoID of the item this item answers directly: the thread root or another item of the same thread. A split thread’s part names the part before it; a reply in a conversation between profiles names the transmission above it. Omitted when the item answers nothing. Never set without threadId. Set on insert only.
threadIndexintegerNoPosition of the item in its thread, counting the root as 0. Present exactly when threadId is, unique among the live items of the thread, and greater than the position of the item named by replyToId. Set on insert only.
mediaAssetIdsarray of string (uuid)NoThe media assets the item posts, in posting order. Ids only, never URLs. Omitted when the item posts no file.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

409
Conflict - the stale expectedFingerprint precondition no longer matches the stored content fingerprint, another live content item of the organization already holds the same rowNumber, or another live item of the same thread already holds the same threadIndex

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

ContentItem DELETE

/api/content-items/{contentItemId}

Delete a content item

Soft-deletes the content item. When expectedFingerprint is supplied, the delete applies only when the stored fingerprint still matches and is refused with a 409 otherwise; without it the delete is unconditional. Deleting an item that other items name in threadId or replyToId leaves their references as they are.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content-items/{contentItemId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content-items/{contentItemId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content-items/{contentItemId}

Parameters

Path parameters

NameTypeRequiredDescription
contentItemIdstring (uuid)YesContent item ID

Query parameters

NameTypeRequiredDescription
expectedFingerprintstringNoOptional optimistic-concurrency precondition for delete: the delete applies only when the stored fingerprint still matches.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Content item deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

409
Conflict - the stale expectedFingerprint precondition no longer matches the stored content fingerprint, another live content item of the organization already holds the same rowNumber, or another live item of the same thread already holds the same threadIndex

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Design Designs POST

/api/content/design/share

Share a design, view, or filter by email

Shares a design (pattern), view, or filter with a list of email addresses. When share is true, the content’s visibility is flipped to public and an invitation email is sent to each recipient. When share is false, visibility is reverted to private. Only the owner of the content may change its sharing mode.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/design/share

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/design/share

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/design/share

Request body

application/json Required
Body for sharing a design, filter, or view with recipients by email.
Payload for sharing a piece of content (design, filter, or view) with one or more recipients by email. This schema backs both POST /api/content/design/share and POST /api/content/view/share; the server dispatches on contentType to decide which entity to mutate.
FieldTypeRequiredDescription
contentIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
contentTypestringYesThe kind of content being shared. Must match the entity the handler expects — pattern and filter are valid on the design share endpoint; view is valid on the view share endpoint.
emailsarray of string (email)YesEmail addresses of the recipients to share this content with.
sharebooleanYesWhen true, flip visibility to public and send invitation emails to the recipients. When false, revert visibility to private.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Content shared.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Caller is not the owner of the content.
404
Result not found

text/plain

500
Internal server error

text/plain

Filter GET

/api/content/filters

Get filters

Returns a paginated list of filters accessible to the user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/filters

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/filters

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/filters

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of items per page (canonical camelCase form).
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
orgIdstring (uuid)NoUser’s organization ID
visibilityarray of stringNoFilter by visibility (public, private, published). May be repeated.
ownerstring (uuid)NoUUID of the owning user. Pass when fetching public/published filters for a specific user (public-profile lookups).

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Filters response

application/json

Paginated collection of filters.
FieldTypeRequiredDescription
filtersarray of objectNoFilters included on this page of results.
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
totalCountintegerNoTotal number of items available.
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Filter POST

/api/content/filters

Save filter

Creates or updates a Meshery filter.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/filters

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/filters

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/filters

Request body

application/json Required
Payload for upserting a filter via POST /api/content/filters. Mirrors meshery-cloud’s MesheryFilterRequestBody and meshery’s MesheryFilterRequestBody — the wrapper carries an optional source URL/path plus a save toggle and an embedded filterData payload. Wire form for the embedded payload field is canonical camelCase (filterData); legacy snake_case (filter_data) is accepted by the existing handlers for the deprecation window but new clients MUST emit filterData.
FieldTypeRequiredDescription
configstringNoOptional opaque configuration string passed through to the underlying filter runtime. Persisted only on the local meshery MesheryFilterPayload shape; meshery-cloud currently ignores the field, but it is documented here so the canonical contract is single-sourced.
filterDataobjectNoFilter body to persist.
pathstringNoOptional source path the filter was loaded from.
savebooleanNoWhen true, persist the filter in addition to parsing it. When false, the server returns the parsed payload without committing it to the database.
urlstring (uri)NoOptional source URL the filter was fetched from.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Filter saved

application/json

Server-returned Meshery filter resource as persisted by meshery-cloud (meshery_filters table) and consumed by meshery’s models.MesheryFilter. Filters carry an opaque body (filterFile) plus catalog and visibility metadata, and follow the same content-resource shape as designs minus the catalog engagement counters (the meshery_filters table has no view_count / download_count columns).
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated filter ID.
namestringYesHuman-readable filter name; required, used for catalog listings.
ownerstring (uuid)YesOwning user ID.
filterFilestring (byte)NoRaw filter source persisted as a byte array (bytea column filter_file). Wire form is base64 per OpenAPI format: byte.
filterResourcestringNoFilter resource discriminator describing the filter body’s source format (e.g. WASM module identifier or external resource path). Stored in the filter_resource text column.
locationobjectNoOptional structured location metadata (branch, host, path, …).
visibilitystringNoVisibility scope (private, public, published).
catalogDataobjectNoCatalog metadata attached to the filter when published.
createdAtstring (date-time)YesTimestamp of filter creation.
updatedAtstring (date-time)YesTimestamp of last filter modification.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Filter POST

/api/content/filters/clone/{filterId}

Clone filter

Creates a copy of an existing filter.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/filters/clone/{filterId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/filters/clone/{filterId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/filters/clone/{filterId}

Parameters

Path parameters

NameTypeRequiredDescription
filterIdstring (uuid)YesFilter ID

Request body

application/json Required
Payload for POST /api/content/filters/clone/{filterId}. The only client-settable field is the optional name applied to the cloned filter; the server derives ownership and visibility from the request context.
FieldTypeRequiredDescription
namestringNoOptional name to apply to the cloned filter. Defaults to a server-generated derivative of the source filter’s name.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Filter cloned

application/json

Server-returned Meshery filter resource as persisted by meshery-cloud (meshery_filters table) and consumed by meshery’s models.MesheryFilter. Filters carry an opaque body (filterFile) plus catalog and visibility metadata, and follow the same content-resource shape as designs minus the catalog engagement counters (the meshery_filters table has no view_count / download_count columns).
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated filter ID.
namestringYesHuman-readable filter name; required, used for catalog listings.
ownerstring (uuid)YesOwning user ID.
filterFilestring (byte)NoRaw filter source persisted as a byte array (bytea column filter_file). Wire form is base64 per OpenAPI format: byte.
filterResourcestringNoFilter resource discriminator describing the filter body’s source format (e.g. WASM module identifier or external resource path). Stored in the filter_resource text column.
locationobjectNoOptional structured location metadata (branch, host, path, …).
visibilitystringNoVisibility scope (private, public, published).
catalogDataobjectNoCatalog metadata attached to the filter when published.
createdAtstring (date-time)YesTimestamp of filter creation.
updatedAtstring (date-time)YesTimestamp of last filter modification.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Filter POST

/api/content/filters/delete

Bulk delete filters

Deletes multiple filters by ID. Modeled as a POST .../delete sub-resource because REST clients and proxies may strip request bodies on DELETE.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/filters/delete

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/filters/delete

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/filters/delete

Request body

application/json Required
Payload for bulk deleting filters by ID.
FieldTypeRequiredDescription
filtersarray of objectYesFilters targeted for deletion.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Filters deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Filter GET

/api/content/filters/download/{filterId}

Download filter file

Downloads the raw filter body associated with the supplied filter ID. The server streams the bytes verbatim with Content-Type: application/wasm and a Content-Disposition: attachment header naming the filter.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/filters/download/{filterId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/filters/download/{filterId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/filters/download/{filterId}

Parameters

Path parameters

NameTypeRequiredDescription
filterIdstring (uuid)YesFilter ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Filter file content

application/wasm

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Filter GET

/api/content/filters/{filterId}

Get filter by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/filters/{filterId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/filters/{filterId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/filters/{filterId}

Parameters

Path parameters

NameTypeRequiredDescription
filterIdstring (uuid)YesFilter ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Filter response

application/json

Server-returned Meshery filter resource as persisted by meshery-cloud (meshery_filters table) and consumed by meshery’s models.MesheryFilter. Filters carry an opaque body (filterFile) plus catalog and visibility metadata, and follow the same content-resource shape as designs minus the catalog engagement counters (the meshery_filters table has no view_count / download_count columns).
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated filter ID.
namestringYesHuman-readable filter name; required, used for catalog listings.
ownerstring (uuid)YesOwning user ID.
filterFilestring (byte)NoRaw filter source persisted as a byte array (bytea column filter_file). Wire form is base64 per OpenAPI format: byte.
filterResourcestringNoFilter resource discriminator describing the filter body’s source format (e.g. WASM module identifier or external resource path). Stored in the filter_resource text column.
locationobjectNoOptional structured location metadata (branch, host, path, …).
visibilitystringNoVisibility scope (private, public, published).
catalogDataobjectNoCatalog metadata attached to the filter when published.
createdAtstring (date-time)YesTimestamp of filter creation.
updatedAtstring (date-time)YesTimestamp of last filter modification.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Filter PUT

/api/content/filters/{filterId}

Update filter by ID

Updates the filter at the supplied ID with the provided payload. Provided as a canonical-CRUD complement to the upsert POST /api/content/filters form so consumers that prefer explicit update semantics can address the resource directly.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/filters/{filterId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/filters/{filterId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/filters/{filterId}

Parameters

Path parameters

NameTypeRequiredDescription
filterIdstring (uuid)YesFilter ID

Request body

application/json Required
Payload for creating or updating a filter via POST /api/content/filters or PUT /api/content/filters/{filterId}. Contains only client-settable fields; server-generated createdAt / updatedAt and the owning userId (which the server derives from the authenticated session) are intentionally excluded.
FieldTypeRequiredDescription
catalogDataobjectNoCatalog metadata to attach when publishing.
filterFilestring (byte)NoRaw filter source as base64-encoded bytes (format: byte). Optional on update — the server preserves the existing body when omitted.
filterResourcestringNoFilter resource discriminator describing the body’s source format (e.g. WASM module identifier or external resource path).
idstring (uuid)NoExisting filter ID for updates; omit on create. Wrapped in an allOf so we can attach the json:"id,omitempty" tag for upsert ergonomics without recursing into the underlying UUID definition.
locationobjectNoOptional structured location metadata.
namestringYesHuman-readable filter name.
visibilitystringNoRequested visibility scope. The server may downgrade a requested published value to private for callers that do not own the filter.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Filter updated

application/json

Server-returned Meshery filter resource as persisted by meshery-cloud (meshery_filters table) and consumed by meshery’s models.MesheryFilter. Filters carry an opaque body (filterFile) plus catalog and visibility metadata, and follow the same content-resource shape as designs minus the catalog engagement counters (the meshery_filters table has no view_count / download_count columns).
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated filter ID.
namestringYesHuman-readable filter name; required, used for catalog listings.
ownerstring (uuid)YesOwning user ID.
filterFilestring (byte)NoRaw filter source persisted as a byte array (bytea column filter_file). Wire form is base64 per OpenAPI format: byte.
filterResourcestringNoFilter resource discriminator describing the filter body’s source format (e.g. WASM module identifier or external resource path). Stored in the filter_resource text column.
locationobjectNoOptional structured location metadata (branch, host, path, …).
visibilitystringNoVisibility scope (private, public, published).
catalogDataobjectNoCatalog metadata attached to the filter when published.
createdAtstring (date-time)YesTimestamp of filter creation.
updatedAtstring (date-time)YesTimestamp of last filter modification.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Filter DELETE

/api/content/filters/{filterId}

Delete filter by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/filters/{filterId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/filters/{filterId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/filters/{filterId}

Parameters

Path parameters

NameTypeRequiredDescription
filterIdstring (uuid)YesFilter ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Filter deleted
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Design Designs GET

/api/content/patterns

Get designs

Returns a paginated list of infrastructure designs accessible to the user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/patterns

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/patterns

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/patterns

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of items per page (canonical camelCase form).
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
orgIdstring (uuid)NoUser’s organization ID
visibilitystringNoFilter by visibility (public, private, published)
userIdstring (uuid)NoUUID of User. Pass userId for fetching public and published designs.
metricsbooleanNoWhether to include usage metrics in the response.
workspaceIdstring (uuid)NoFilter designs by workspace ID.
populatebooleanNoPopulate additional nested fields in the response.
sharedbooleanNoInclude designs shared with the caller.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Designs response

application/json

Paginated collection of designs.
FieldTypeRequiredDescription
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
patternsarray of objectNoDesigns included on this page of results.
resultTypestringNoOptional discriminator describing which collection the page represents.
totalCountintegerNoTotal number of items available.
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Design Designs POST

/api/content/patterns

Save design

Creates or updates an infrastructure design. The server assigns organizationId from the session organization; clients do not send it. On update the organization stays the one assigned at create.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/patterns

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/patterns

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/patterns

Request body

application/json Required
Payload for upserting a design via POST /api/content/patterns.
FieldTypeRequiredDescription
namestringNoHuman-readable design name.
pathstringNoOptional source path the design was loaded from.
patternDataobjectNoDesign body to persist.
savebooleanNoWhen true, persist the design in addition to parsing it.
urlstring (uri)NoOptional source URL the design was fetched from.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Design saved

application/json

Server-returned design (pattern) resource as persisted in meshery_patterns. organizationId is required and read-only: the server assigns it from the session organization and clients never send it.
FieldTypeRequiredDescription
catalogDataobjectNoCatalog metadata attached to the design when published.
cloneCountintegerNoServer-aggregated count of times this design has been cloned from the catalog. Server-managed and ignored on writes.
createdAtstring (date-time)NoTimestamp of design creation.
deploymentCountintegerNoServer-aggregated count of deployments originated from this design. Server-managed and ignored on writes.
designTypestring | nullNoDiscriminator identifying the source format of the design body, persisted in the meshery_patterns table’s source_type column (nullable; null for legacy rows imported before the column was introduced). For catalog listings the server may also project this field from the attached catalog metadata. Use this field to branch rendering between native Meshery designs and imported Helm charts, Kubernetes manifests, and Docker Compose files.
downloadCountintegerNoServer-aggregated count of downloads of this design from the catalog. Server-managed and ignored on writes.
idstring (uuid)NoServer-generated design ID.
locationobjectNoOptional structured location metadata (branch, host, path, …). For a design bound to a GitHub source the keys are those of DesignSourceLocation, including commitSha.
namestringNoHuman-readable design name.
organizationIdstring (uuid)YesThe organization the design belongs to. The server sets it from the session organization (X-Current-Orgid, or the caller’s selected organization) on create, including import. Never accepted from clients. A workspace this design is assigned to must belong to this same organization.
patternFilestringNoRaw design body as it is persisted in the meshery_patterns table’s pattern_file column. The wire form is the YAML/JSON string the server stores verbatim; consumers that need the structured form transcode at the boundary by parsing the string into a PatternFile (see #/components/schemas/PatternFile) and marshalling it back when they write. Keeping the wire shape as a string mirrors the column’s actual representation and avoids forcing every consumer through the structured-vs- string union that the previous *PatternFile typing implied.
shareCountintegerNoServer-aggregated count of share events for this design. Server-managed and ignored on writes.
sourceContentstring | null (byte)NoRaw bytes of the imported source artifact (Helm chart tarball, Kubernetes manifest, Docker Compose file, etc.) preserved in the meshery_patterns table’s source_content column for non-Meshery-Design imports. Empty / null for native Meshery designs. Server-managed: populated by the import and upload handlers and scrubbed to null on most read responses, so clients should treat this as opaque base64-encoded bytes when it does appear on the wire.
updatedAtstring (date-time)NoTimestamp of last design modification.
userobject | nullNoOwning user record, joined inline by the catalog list/get handlers when shaping responses. Server-projected from the users table via the design’s userId; not a column on the meshery_patterns table itself, so the generated Go field is tagged db:"-" to keep it out of ORM column scans.
userIdstring (uuid)NoOwning user ID.
viewCountintegerNoServer-aggregated count of views on this design in the catalog. Present on list/catalog responses; server-managed and ignored on writes.
visibilitystringNoVisibility scope of the design — controls whether non-owners may read or list it. private is owner-only, public is readable by anyone in the org, and published is visible in the catalog.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Design Designs POST

/api/content/patterns/clone/{designId}

Clone design

Creates a copy of an existing design.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/patterns/clone/{designId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/patterns/clone/{designId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/patterns/clone/{designId}

Parameters

Path parameters

NameTypeRequiredDescription
designIdstring (uuid)YesDesign (Pattern) ID

Request body

application/json Required
Payload for cloning a design. The optional name is applied to the cloned design; the server derives ownership and visibility from the request context.
FieldTypeRequiredDescription
namestringNoOptional name to apply to the cloned design.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Design cloned

application/json

Server-returned design (pattern) resource as persisted in meshery_patterns. organizationId is required and read-only: the server assigns it from the session organization and clients never send it.
FieldTypeRequiredDescription
catalogDataobjectNoCatalog metadata attached to the design when published.
cloneCountintegerNoServer-aggregated count of times this design has been cloned from the catalog. Server-managed and ignored on writes.
createdAtstring (date-time)NoTimestamp of design creation.
deploymentCountintegerNoServer-aggregated count of deployments originated from this design. Server-managed and ignored on writes.
designTypestring | nullNoDiscriminator identifying the source format of the design body, persisted in the meshery_patterns table’s source_type column (nullable; null for legacy rows imported before the column was introduced). For catalog listings the server may also project this field from the attached catalog metadata. Use this field to branch rendering between native Meshery designs and imported Helm charts, Kubernetes manifests, and Docker Compose files.
downloadCountintegerNoServer-aggregated count of downloads of this design from the catalog. Server-managed and ignored on writes.
idstring (uuid)NoServer-generated design ID.
locationobjectNoOptional structured location metadata (branch, host, path, …). For a design bound to a GitHub source the keys are those of DesignSourceLocation, including commitSha.
namestringNoHuman-readable design name.
organizationIdstring (uuid)YesThe organization the design belongs to. The server sets it from the session organization (X-Current-Orgid, or the caller’s selected organization) on create, including import. Never accepted from clients. A workspace this design is assigned to must belong to this same organization.
patternFilestringNoRaw design body as it is persisted in the meshery_patterns table’s pattern_file column. The wire form is the YAML/JSON string the server stores verbatim; consumers that need the structured form transcode at the boundary by parsing the string into a PatternFile (see #/components/schemas/PatternFile) and marshalling it back when they write. Keeping the wire shape as a string mirrors the column’s actual representation and avoids forcing every consumer through the structured-vs- string union that the previous *PatternFile typing implied.
shareCountintegerNoServer-aggregated count of share events for this design. Server-managed and ignored on writes.
sourceContentstring | null (byte)NoRaw bytes of the imported source artifact (Helm chart tarball, Kubernetes manifest, Docker Compose file, etc.) preserved in the meshery_patterns table’s source_content column for non-Meshery-Design imports. Empty / null for native Meshery designs. Server-managed: populated by the import and upload handlers and scrubbed to null on most read responses, so clients should treat this as opaque base64-encoded bytes when it does appear on the wire.
updatedAtstring (date-time)NoTimestamp of last design modification.
userobject | nullNoOwning user record, joined inline by the catalog list/get handlers when shaping responses. Server-projected from the users table via the design’s userId; not a column on the meshery_patterns table itself, so the generated Go field is tagged db:"-" to keep it out of ORM column scans.
userIdstring (uuid)NoOwning user ID.
viewCountintegerNoServer-aggregated count of views on this design in the catalog. Present on list/catalog responses; server-managed and ignored on writes.
visibilitystringNoVisibility scope of the design — controls whether non-owners may read or list it. private is owner-only, public is readable by anyone in the org, and published is visible in the catalog.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Design Designs POST

/api/content/patterns/delete

Bulk delete designs

Deletes multiple designs by ID.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/patterns/delete

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/patterns/delete

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/patterns/delete

Request body

application/json Required
Payload for bulk deleting designs by ID.
FieldTypeRequiredDescription
patternsarray of objectNoDesigns targeted for deletion.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Designs deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Design Designs GET

/api/content/patterns/download/{designId}

Download design file

Downloads the raw design file for the specified design.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/patterns/download/{designId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/patterns/download/{designId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/patterns/download/{designId}

Parameters

Path parameters

NameTypeRequiredDescription
designIdstring (uuid)YesDesign (Pattern) ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Design file content

application/yaml

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Design Designs POST

/api/content/patterns/refresh/{designId}

Refresh design from its source

Re-fetches the source file recorded in the design’s location (type: github, host: github.com/<owner>/<repo>, path, optional branch; an empty branch means the repository’s default branch), re-identifies it, and rewrites the design’s content in place under the same design ID. A Meshery Design source replaces patternFile; any other source type (Helm Chart, Kubernetes Manifest, Docker Compose) replaces sourceContent and clears patternFile, so Meshery reconverts it the next time the design is opened - exactly the state a first import leaves. Only the design’s owner may refresh it. No request body. Denials: 404 answers both “no such design” and “not the caller’s design” with the same body by design, so the route is not an existence oracle; 403 means the repository is not reachable through one of the caller’s verified GitHub App installations - the installations GitHub lists for the caller’s own GitHub account when they authorize the App. The refusal is deliberately uniform: the App not being installed on the repository’s account and its being installed there for someone else answer the same body, so the route does not reveal where the App is installed. A distinct 403 whose MeshKit error asks for re-authorization means the caller’s GitHub connection predates verification; re-authorize it (see startGithubAuthorization) before use; 409 means the design has no refreshable source (location.type is not github, or host/path is missing) or its source path no longer resolves to an importable file; 502 means GitHub could not be reached or rejected the request. The server resolves the tracked ref to a commit, reads the file at that commit, and records it in location.commitSha.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/patterns/refresh/{designId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/patterns/refresh/{designId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/patterns/refresh/{designId}

Parameters

Path parameters

NameTypeRequiredDescription
designIdstring (uuid)YesDesign (Pattern) ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Design refreshed. sourceContent and patternFile are omitted from the response body (they can be megabytes), as on import.

application/json

Server-returned design (pattern) resource as persisted in meshery_patterns. organizationId is required and read-only: the server assigns it from the session organization and clients never send it.
FieldTypeRequiredDescription
catalogDataobjectNoCatalog metadata attached to the design when published.
cloneCountintegerNoServer-aggregated count of times this design has been cloned from the catalog. Server-managed and ignored on writes.
createdAtstring (date-time)NoTimestamp of design creation.
deploymentCountintegerNoServer-aggregated count of deployments originated from this design. Server-managed and ignored on writes.
designTypestring | nullNoDiscriminator identifying the source format of the design body, persisted in the meshery_patterns table’s source_type column (nullable; null for legacy rows imported before the column was introduced). For catalog listings the server may also project this field from the attached catalog metadata. Use this field to branch rendering between native Meshery designs and imported Helm charts, Kubernetes manifests, and Docker Compose files.
downloadCountintegerNoServer-aggregated count of downloads of this design from the catalog. Server-managed and ignored on writes.
idstring (uuid)NoServer-generated design ID.
locationobjectNoOptional structured location metadata (branch, host, path, …). For a design bound to a GitHub source the keys are those of DesignSourceLocation, including commitSha.
namestringNoHuman-readable design name.
organizationIdstring (uuid)YesThe organization the design belongs to. The server sets it from the session organization (X-Current-Orgid, or the caller’s selected organization) on create, including import. Never accepted from clients. A workspace this design is assigned to must belong to this same organization.
patternFilestringNoRaw design body as it is persisted in the meshery_patterns table’s pattern_file column. The wire form is the YAML/JSON string the server stores verbatim; consumers that need the structured form transcode at the boundary by parsing the string into a PatternFile (see #/components/schemas/PatternFile) and marshalling it back when they write. Keeping the wire shape as a string mirrors the column’s actual representation and avoids forcing every consumer through the structured-vs- string union that the previous *PatternFile typing implied.
shareCountintegerNoServer-aggregated count of share events for this design. Server-managed and ignored on writes.
sourceContentstring | null (byte)NoRaw bytes of the imported source artifact (Helm chart tarball, Kubernetes manifest, Docker Compose file, etc.) preserved in the meshery_patterns table’s source_content column for non-Meshery-Design imports. Empty / null for native Meshery designs. Server-managed: populated by the import and upload handlers and scrubbed to null on most read responses, so clients should treat this as opaque base64-encoded bytes when it does appear on the wire.
updatedAtstring (date-time)NoTimestamp of last design modification.
userobject | nullNoOwning user record, joined inline by the catalog list/get handlers when shaping responses. Server-projected from the users table via the design’s userId; not a column on the meshery_patterns table itself, so the generated Go field is tagged db:"-" to keep it out of ORM column scans.
userIdstring (uuid)NoOwning user ID.
viewCountintegerNoServer-aggregated count of views on this design in the catalog. Present on list/catalog responses; server-managed and ignored on writes.
visibilitystringNoVisibility scope of the design — controls whether non-owners may read or list it. private is owner-only, public is readable by anyone in the org, and published is visible in the catalog.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
404
Result not found

text/plain

409
Publish request already exists

text/plain

500
Internal server error

text/plain

502
Bad gateway - an upstream service the operation depends on could not be reached or rejected the request

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
PatternResource GET

/api/content/patterns/resource

Get pattern resources

Returns a paginated list of pattern resources owned by the authenticated user, optionally filtered by resource identity fields and organization or workspace scope.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/patterns/resource

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/patterns/resource

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/patterns/resource

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of items per page (canonical camelCase form).
pagesizeintegerNoNumber of items per page. Deprecated alias of pageSize kept for the meshery server’s remote provider, which still sends the lowercase form; canonical pageSize wins when both are present.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
namestringNoFilter by resource name.
namespacestringNoFilter by Kubernetes namespace.
typestringNoFilter by resource type discriminator.
oamTypestringNoFilter by OAM categorization (e.g. workload, trait, scope).
orgIdstring (uuid)NoScope results to an organization.
workspaceIdstring (uuid)NoScope results to a workspace.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Pattern resources page

application/json

Paginated collection of pattern resources.
FieldTypeRequiredDescription
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
resourcesarray of objectNoPattern resources included on this page of results.
totalCountintegerNoTotal number of items available.
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

PatternResource POST

/api/content/patterns/resource

Save pattern resource

Creates a new pattern resource when no id is supplied, or updates the entry matching the provided id. Ownership is derived from the authenticated session; any client-supplied owner is ignored.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/patterns/resource

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/patterns/resource

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/patterns/resource

Request body

application/json Required
Payload for creating or updating a pattern resource via POST /api/content/patterns/resource. Contains only client-settable fields; the owning userId (derived from the authenticated session), the deleted marker, and the server-generated createdAt / updatedAt timestamps are intentionally excluded.
FieldTypeRequiredDescription
idstring (uuid)NoExisting pattern resource ID for updates; omit on create.
namestringYesName of the provisioned resource.
namespacestringYesKubernetes namespace the resource was provisioned into.
oamTypestringYesOAM categorization of the resource (e.g. workload, trait, scope).
typestringYesResource type discriminator (e.g. the Kubernetes kind).

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Pattern resource saved

application/json

Server-returned Meshery pattern resource as persisted by meshery-cloud (meshery_pattern_resources table). A pattern resource records the Kubernetes-addressable identity (name, namespace, type, OAM type) of a resource provisioned from a design, and is used by the design engine to deduplicate provisioned resources. This v1beta3 shape supersedes the legacy v1alpha2 snake_case wire form and corrects its Namepace typo to namespace.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated pattern resource ID.
userIdstring (uuid)YesOwning user ID. Persisted in the owner column of the meshery_pattern_resources table (confirmed against the production schema dump); the wire identifier stays camelCase userId per the identifier-naming contract.
namestringYesName of the provisioned resource.
namespacestringYesKubernetes namespace the resource was provisioned into. Corrects the legacy v1alpha2 Namepace typo.
typestringYesResource type discriminator (e.g. the Kubernetes kind).
oamTypestringYesOAM (Open Application Model) categorization of the resource, stored in the oam_type column (e.g. workload, trait, scope).
deletedbooleanYesSoft-delete marker. Server-managed; rows are flagged rather than removed so the design engine can reconcile prior provisions.
createdAtstring (date-time)YesTimestamp of pattern resource creation.
updatedAtstring (date-time)YesTimestamp of last pattern resource modification.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

PatternResource GET

/api/content/patterns/resource/{patternResourceId}

Get pattern resource by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/patterns/resource/{patternResourceId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/patterns/resource/{patternResourceId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/patterns/resource/{patternResourceId}

Parameters

Path parameters

NameTypeRequiredDescription
patternResourceIdstring (uuid)YesPattern resource ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Pattern resource response

application/json

Server-returned Meshery pattern resource as persisted by meshery-cloud (meshery_pattern_resources table). A pattern resource records the Kubernetes-addressable identity (name, namespace, type, OAM type) of a resource provisioned from a design, and is used by the design engine to deduplicate provisioned resources. This v1beta3 shape supersedes the legacy v1alpha2 snake_case wire form and corrects its Namepace typo to namespace.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated pattern resource ID.
userIdstring (uuid)YesOwning user ID. Persisted in the owner column of the meshery_pattern_resources table (confirmed against the production schema dump); the wire identifier stays camelCase userId per the identifier-naming contract.
namestringYesName of the provisioned resource.
namespacestringYesKubernetes namespace the resource was provisioned into. Corrects the legacy v1alpha2 Namepace typo.
typestringYesResource type discriminator (e.g. the Kubernetes kind).
oamTypestringYesOAM (Open Application Model) categorization of the resource, stored in the oam_type column (e.g. workload, trait, scope).
deletedbooleanYesSoft-delete marker. Server-managed; rows are flagged rather than removed so the design engine can reconcile prior provisions.
createdAtstring (date-time)YesTimestamp of pattern resource creation.
updatedAtstring (date-time)YesTimestamp of last pattern resource modification.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

PatternResource DELETE

/api/content/patterns/resource/{patternResourceId}

Delete pattern resource

Soft-deletes the pattern resource and returns the deleted entity. The live meshery-cloud handler responds 200 with the deleted resource body (not 204), so the deleted record’s identity remains available to the caller.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/patterns/resource/{patternResourceId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/patterns/resource/{patternResourceId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/patterns/resource/{patternResourceId}

Parameters

Path parameters

NameTypeRequiredDescription
patternResourceIdstring (uuid)YesPattern resource ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Deleted pattern resource

application/json

Server-returned Meshery pattern resource as persisted by meshery-cloud (meshery_pattern_resources table). A pattern resource records the Kubernetes-addressable identity (name, namespace, type, OAM type) of a resource provisioned from a design, and is used by the design engine to deduplicate provisioned resources. This v1beta3 shape supersedes the legacy v1alpha2 snake_case wire form and corrects its Namepace typo to namespace.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated pattern resource ID.
userIdstring (uuid)YesOwning user ID. Persisted in the owner column of the meshery_pattern_resources table (confirmed against the production schema dump); the wire identifier stays camelCase userId per the identifier-naming contract.
namestringYesName of the provisioned resource.
namespacestringYesKubernetes namespace the resource was provisioned into. Corrects the legacy v1alpha2 Namepace typo.
typestringYesResource type discriminator (e.g. the Kubernetes kind).
oamTypestringYesOAM (Open Application Model) categorization of the resource, stored in the oam_type column (e.g. workload, trait, scope).
deletedbooleanYesSoft-delete marker. Server-managed; rows are flagged rather than removed so the design engine can reconcile prior provisions.
createdAtstring (date-time)YesTimestamp of pattern resource creation.
updatedAtstring (date-time)YesTimestamp of last pattern resource modification.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Design Designs POST

/api/content/patterns/upload/{designId}

Upload design source content

Replaces the raw source content blob stored alongside a design. The server (meshery-cloud’s UpsertPatternSourceContent handler) reads the entire request body as opaque bytes via io.ReadAll and persists them without interpretation, so the content-type is whatever the uploader sent — application/octet-stream is the canonical choice. The previous declaration reused MesheryPatternImportRequestBody under multipart/form-data, which the handler never parses; it remained wired up solely to share a schema ref with /api/pattern/import. See meshery/schemas#771 for the drift analysis.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/patterns/upload/{designId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/patterns/upload/{designId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/patterns/upload/{designId}

Parameters

Path parameters

NameTypeRequiredDescription
designIdstring (uuid)YesDesign (Pattern) ID

Request body

application/octet-stream Required
Opaque design source bytes (yaml, tarball, etc.)

Schema: string (binary)

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Design source content uploaded
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Design Designs GET

/api/content/patterns/{designId}

Get design by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/patterns/{designId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/patterns/{designId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/patterns/{designId}

Parameters

Path parameters

NameTypeRequiredDescription
designIdstring (uuid)YesDesign (Pattern) ID

Query parameters

NameTypeRequiredDescription
metricsbooleanNoWhether to include usage metrics in the response.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Design response

application/json

Server-returned design (pattern) resource as persisted in meshery_patterns. organizationId is required and read-only: the server assigns it from the session organization and clients never send it.
FieldTypeRequiredDescription
catalogDataobjectNoCatalog metadata attached to the design when published.
cloneCountintegerNoServer-aggregated count of times this design has been cloned from the catalog. Server-managed and ignored on writes.
createdAtstring (date-time)NoTimestamp of design creation.
deploymentCountintegerNoServer-aggregated count of deployments originated from this design. Server-managed and ignored on writes.
designTypestring | nullNoDiscriminator identifying the source format of the design body, persisted in the meshery_patterns table’s source_type column (nullable; null for legacy rows imported before the column was introduced). For catalog listings the server may also project this field from the attached catalog metadata. Use this field to branch rendering between native Meshery designs and imported Helm charts, Kubernetes manifests, and Docker Compose files.
downloadCountintegerNoServer-aggregated count of downloads of this design from the catalog. Server-managed and ignored on writes.
idstring (uuid)NoServer-generated design ID.
locationobjectNoOptional structured location metadata (branch, host, path, …). For a design bound to a GitHub source the keys are those of DesignSourceLocation, including commitSha.
namestringNoHuman-readable design name.
organizationIdstring (uuid)YesThe organization the design belongs to. The server sets it from the session organization (X-Current-Orgid, or the caller’s selected organization) on create, including import. Never accepted from clients. A workspace this design is assigned to must belong to this same organization.
patternFilestringNoRaw design body as it is persisted in the meshery_patterns table’s pattern_file column. The wire form is the YAML/JSON string the server stores verbatim; consumers that need the structured form transcode at the boundary by parsing the string into a PatternFile (see #/components/schemas/PatternFile) and marshalling it back when they write. Keeping the wire shape as a string mirrors the column’s actual representation and avoids forcing every consumer through the structured-vs- string union that the previous *PatternFile typing implied.
shareCountintegerNoServer-aggregated count of share events for this design. Server-managed and ignored on writes.
sourceContentstring | null (byte)NoRaw bytes of the imported source artifact (Helm chart tarball, Kubernetes manifest, Docker Compose file, etc.) preserved in the meshery_patterns table’s source_content column for non-Meshery-Design imports. Empty / null for native Meshery designs. Server-managed: populated by the import and upload handlers and scrubbed to null on most read responses, so clients should treat this as opaque base64-encoded bytes when it does appear on the wire.
updatedAtstring (date-time)NoTimestamp of last design modification.
userobject | nullNoOwning user record, joined inline by the catalog list/get handlers when shaping responses. Server-projected from the users table via the design’s userId; not a column on the meshery_patterns table itself, so the generated Go field is tagged db:"-" to keep it out of ORM column scans.
userIdstring (uuid)NoOwning user ID.
viewCountintegerNoServer-aggregated count of views on this design in the catalog. Present on list/catalog responses; server-managed and ignored on writes.
visibilitystringNoVisibility scope of the design — controls whether non-owners may read or list it. private is owner-only, public is readable by anyone in the org, and published is visible in the catalog.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Design Designs DELETE

/api/content/patterns/{designId}

Delete design by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/patterns/{designId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/patterns/{designId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/patterns/{designId}

Parameters

Path parameters

NameTypeRequiredDescription
designIdstring (uuid)YesDesign (Pattern) ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Design deleted
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Design Designs PATCH

/api/content/patterns/{designId}/source

Remap a design's GitHub source

Re-points the design’s source binding - the GitHub file its location records and refreshPatternFromSource re-reads - at another repository, path or ref. The design’s content is not changed: call refreshPatternFromSource afterwards to replace it from the new source. The server resolves ref to a commit and confirms that path names an importable file at that commit before it writes anything, so a binding that a refresh could not read is never stored. It writes location as type: github, host, path and branch (= ref). When the binding changes, location.commitSha is removed, because the stored content was not read from the new source; it is kept when the request names the binding the design already has. A design with no GitHub source (an upload or URL import) may be bound to one; it becomes refreshable. Only the design’s owner may remap it. Denials: 404 answers “no such design”, “not the caller’s design” and “connectionId is not the caller’s own live GitHub connection” with the same body, so the route is not an existence oracle; 403 means the repository is not reachable through one of the caller’s verified GitHub App installations - the installations GitHub lists for the caller’s own GitHub account when they authorize the App. The refusal is deliberately uniform: the App not being installed on the repository’s account and its being installed there for someone else answer the same body, so the route does not reveal where the App is installed. A distinct 403 whose MeshKit error asks for re-authorization means the caller’s GitHub connection predates verification; re-authorize it (see startGithubAuthorization) before use; 409 means ref does not resolve to a commit, or path does not name an importable file at it (missing, a directory, or not a supported format); 502 means GitHub could not be reached or rejected the request.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/patterns/{designId}/source

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/patterns/{designId}/source

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/patterns/{designId}/source

Parameters

Path parameters

NameTypeRequiredDescription
designIdstring (uuid)YesDesign (Pattern) ID

Request body

application/json Required
The GitHub file a design is bound to - what refreshPatternFromSource re-reads.
FieldTypeRequiredDescription
connectionIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
hoststringYesRepository as github.com/<owner>/<repo> - the same form location.host stores.
pathstringYesRepository-relative path of a file (not a directory), with no leading slash.
refstringNoBranch or tag the binding tracks, stored as location.branch. Empty or omitted means the repository’s default branch.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Source binding updated. sourceContent and patternFile are omitted from the response body, as on refresh and import.

application/json

Server-returned design (pattern) resource as persisted in meshery_patterns. organizationId is required and read-only: the server assigns it from the session organization and clients never send it.
FieldTypeRequiredDescription
catalogDataobjectNoCatalog metadata attached to the design when published.
cloneCountintegerNoServer-aggregated count of times this design has been cloned from the catalog. Server-managed and ignored on writes.
createdAtstring (date-time)NoTimestamp of design creation.
deploymentCountintegerNoServer-aggregated count of deployments originated from this design. Server-managed and ignored on writes.
designTypestring | nullNoDiscriminator identifying the source format of the design body, persisted in the meshery_patterns table’s source_type column (nullable; null for legacy rows imported before the column was introduced). For catalog listings the server may also project this field from the attached catalog metadata. Use this field to branch rendering between native Meshery designs and imported Helm charts, Kubernetes manifests, and Docker Compose files.
downloadCountintegerNoServer-aggregated count of downloads of this design from the catalog. Server-managed and ignored on writes.
idstring (uuid)NoServer-generated design ID.
locationobjectNoOptional structured location metadata (branch, host, path, …). For a design bound to a GitHub source the keys are those of DesignSourceLocation, including commitSha.
namestringNoHuman-readable design name.
organizationIdstring (uuid)YesThe organization the design belongs to. The server sets it from the session organization (X-Current-Orgid, or the caller’s selected organization) on create, including import. Never accepted from clients. A workspace this design is assigned to must belong to this same organization.
patternFilestringNoRaw design body as it is persisted in the meshery_patterns table’s pattern_file column. The wire form is the YAML/JSON string the server stores verbatim; consumers that need the structured form transcode at the boundary by parsing the string into a PatternFile (see #/components/schemas/PatternFile) and marshalling it back when they write. Keeping the wire shape as a string mirrors the column’s actual representation and avoids forcing every consumer through the structured-vs- string union that the previous *PatternFile typing implied.
shareCountintegerNoServer-aggregated count of share events for this design. Server-managed and ignored on writes.
sourceContentstring | null (byte)NoRaw bytes of the imported source artifact (Helm chart tarball, Kubernetes manifest, Docker Compose file, etc.) preserved in the meshery_patterns table’s source_content column for non-Meshery-Design imports. Empty / null for native Meshery designs. Server-managed: populated by the import and upload handlers and scrubbed to null on most read responses, so clients should treat this as opaque base64-encoded bytes when it does appear on the wire.
updatedAtstring (date-time)NoTimestamp of last design modification.
userobject | nullNoOwning user record, joined inline by the catalog list/get handlers when shaping responses. Server-projected from the users table via the design’s userId; not a column on the meshery_patterns table itself, so the generated Go field is tagged db:"-" to keep it out of ORM column scans.
userIdstring (uuid)NoOwning user ID.
viewCountintegerNoServer-aggregated count of views on this design in the catalog. Present on list/catalog responses; server-managed and ignored on writes.
visibilitystringNoVisibility scope of the design — controls whether non-owners may read or list it. private is owner-only, public is readable by anyone in the org, and published is visible in the catalog.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
404
Result not found

text/plain

409
Publish request already exists

text/plain

500
Internal server error

text/plain

502
Bad gateway - an upstream service the operation depends on could not be reached or rejected the request

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
View POST

/api/content/view/share

Share a view by email

Shares a view with a list of email addresses. When share is true, the view’s visibility is flipped to public and an invitation email is sent to each recipient. When share is false, visibility is reverted to private. Only the owner of the view (or a provider admin) may change its sharing mode.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/view/share

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/view/share

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/view/share

Request body

application/json Required
Body for sharing a view with recipients by email.
Payload for sharing a view with one or more recipients by email. The wire format matches the canonical design share payload (design.ContentSharePayload in v1beta2/design), restricted to the view content type since that is all this endpoint accepts.
FieldTypeRequiredDescription
contentIdstring (uuid)YesIdentifier of the view being shared.
contentTypestringYesThe kind of content being shared. Only view is accepted on this endpoint.
emailsarray of string (email)YesEmail addresses of the recipients to share this view with.
sharebooleanYesWhen true, flip the view’s visibility to public and send invitation emails to the recipients. When false, revert visibility to private.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
View shared.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Caller is not the owner of the view.
404
Result not found

text/plain

500
Internal server error

text/plain

View GET

/api/content/views

Get views

Returns a paginated list of views accessible to the user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/views

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/views

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/views

Parameters

Query parameters

NameTypeRequiredDescription
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
filterstringNoJSON-encoded filter string for assignment and soft-delete filters.
sharedbooleanNoWhen true, include views shared with the user.
visibilitystringNoFilter by visibility level (public, private).
orgIdstringNoOrganization ID to scope the request.
userIdstringNoUUID of the user whose views to retrieve.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Views page

application/json

Paginated list of views with location enrichment.
FieldTypeRequiredDescription
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
viewsarray of objectNoViews in this page, enriched with workspace and organization context.
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

View POST

/api/content/views

Create a view

Creates a new view with the given filters and metadata.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/views

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/views

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/views

Request body

application/json Required
Body for creating or updating a view
Payload for creating or updating a view.
FieldTypeRequiredDescription
filtersobjectNoFilter configuration for this view.
metadataobjectNoMetadata associated with the view.
namestringYesDisplay name of the view.
visibilitystringNoVisibility level of the view.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Created view

application/json

A saved view with filters and metadata that defines a customized perspective of Meshery resources. Learn more at https://docs.meshery.io/concepts/logical/views
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the view.
namestringYesDisplay name of the view.
visibilitystringYesVisibility level of the view.
filtersobjectNoFilter configuration that defines which resources this view displays.
metadataobjectNoAdditional metadata associated with the view.
userIdstring (uuid)YesID of the user who created the view.
createdAtstring (date-time)YesTimestamp when the view was created.
updatedAtstring (date-time)YesTimestamp when the view was last updated.
deletedAtstring | null (date-time)NoTimestamp when the view was soft deleted. Null while the view remains active.

Example response

{
  "createdAt": "0001-01-01T00:00:00Z",
  "deletedAt": null,
  "filters": {},
  "id": "00000000-0000-0000-0000-000000000000",
  "metadata": {},
  "name": "My Kubernetes View",
  "updatedAt": "0001-01-01T00:00:00Z",
  "userId": "00000000-0000-0000-0000-000000000000",
  "visibility": "private"
}
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

View GET

/api/content/views/{viewId}

Get a view by ID

Returns a single view by its unique identifier.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/views/{viewId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/views/{viewId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/views/{viewId}

Parameters

Path parameters

NameTypeRequiredDescription
viewIdstring (uuid)YesView ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
View

application/json

A saved view with filters and metadata that defines a customized perspective of Meshery resources. Learn more at https://docs.meshery.io/concepts/logical/views
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the view.
namestringYesDisplay name of the view.
visibilitystringYesVisibility level of the view.
filtersobjectNoFilter configuration that defines which resources this view displays.
metadataobjectNoAdditional metadata associated with the view.
userIdstring (uuid)YesID of the user who created the view.
createdAtstring (date-time)YesTimestamp when the view was created.
updatedAtstring (date-time)YesTimestamp when the view was last updated.
deletedAtstring | null (date-time)NoTimestamp when the view was soft deleted. Null while the view remains active.

Example response

{
  "createdAt": "0001-01-01T00:00:00Z",
  "deletedAt": null,
  "filters": {},
  "id": "00000000-0000-0000-0000-000000000000",
  "metadata": {},
  "name": "My Kubernetes View",
  "updatedAt": "0001-01-01T00:00:00Z",
  "userId": "00000000-0000-0000-0000-000000000000",
  "visibility": "private"
}
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

View PUT

/api/content/views/{viewId}

Update a view

Updates an existing view with new filters, metadata, or visibility.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/views/{viewId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/views/{viewId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/views/{viewId}

Parameters

Path parameters

NameTypeRequiredDescription
viewIdstring (uuid)YesView ID

Request body

application/json Required
Body for creating or updating a view
Payload for creating or updating a view.
FieldTypeRequiredDescription
filtersobjectNoFilter configuration for this view.
metadataobjectNoMetadata associated with the view.
namestringYesDisplay name of the view.
visibilitystringNoVisibility level of the view.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Updated view

application/json

A saved view with filters and metadata that defines a customized perspective of Meshery resources. Learn more at https://docs.meshery.io/concepts/logical/views
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the view.
namestringYesDisplay name of the view.
visibilitystringYesVisibility level of the view.
filtersobjectNoFilter configuration that defines which resources this view displays.
metadataobjectNoAdditional metadata associated with the view.
userIdstring (uuid)YesID of the user who created the view.
createdAtstring (date-time)YesTimestamp when the view was created.
updatedAtstring (date-time)YesTimestamp when the view was last updated.
deletedAtstring | null (date-time)NoTimestamp when the view was soft deleted. Null while the view remains active.

Example response

{
  "createdAt": "0001-01-01T00:00:00Z",
  "deletedAt": null,
  "filters": {},
  "id": "00000000-0000-0000-0000-000000000000",
  "metadata": {},
  "name": "My Kubernetes View",
  "updatedAt": "0001-01-01T00:00:00Z",
  "userId": "00000000-0000-0000-0000-000000000000",
  "visibility": "private"
}
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

View DELETE

/api/content/views/{viewId}

Delete a view

Soft-deletes a view by its unique identifier.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/content/views/{viewId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/content/views/{viewId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/content/views/{viewId}

Parameters

Path parameters

NameTypeRequiredDescription
viewIdstring (uuid)YesView ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
View deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Diagnostics POST

/api/diagnostics/failures

Submit a failure diagnostic

Accepts a small, anonymous, redacted diagnostic of a client-side failure, so maintainers learn about it before anyone writes in. Authentication is a per-client-kind, per-release-channel pre-shared key in the X-Client-Key header (a speed bump plus a revocation handle, not a strong secret: the key ships in the app and can be extracted). A signed-in caller may use its bearer token instead; then the organization is attached, and only then. The server enforces a body cap, strict decoding (unknown fields are rejected), rate limits, server-side re-redaction, and a 90-day retention on stored rows. Served by Layer5 Cloud (meshery-cloud #6330); see Blowhorn issue #771.

Authentication

Diagnostics ClientKey or Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/diagnostics/failures

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/diagnostics/failures

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/diagnostics/failures

Request body

application/json Required
A single anonymous, redacted report of a client-side failure. The same failure is deduplicated per install per day: one report carries the first time it was seen and how many times it has occurred since. Nothing in this report identifies a person: no config files, logs, account names, post text, or tokens, and the failure message keeps only the redacted cause sentence. Every object in this schema is closed (additionalProperties: false), so a client sending an unknown field gets a 400 rather than a silently widened report.
FieldTypeRequiredDescription
clientobjectYesNo description provided.
compatobjectYesNo description provided.
countintegerYesHow many times the same failure has occurred on this install within the deduplication window (per install per day).
diagnosticIdstring (uuid)YesId generated by the client for this report. A human support request links back to it through AnonymousSupportRequest.diagnosticId.
failureobjectYesNo description provided.
firstSeenAtstring (date-time)YesWhen this failure was first seen on this install, for the deduplication window the count covers.
installIdstring (uuid)NoOptional per-install id, present only when the person has not opted out of failure reports. A random uuid4 minted once per install (Blowhorn’s installationId, written beside cloud.yaml and reused), never a hardware id. Omitted entirely when opted out.
occurredAtstring (date-time)YesWhen this occurrence of the failure happened.
osobjectYesNo description provided.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Failure diagnostic stored

application/json

FieldTypeRequiredDescription
diagnosticIdstring (uuid)YesThe stored diagnostic’s id: the client’s own when it sent one, otherwise generated by the server. Send it as AnonymousSupportRequest.diagnosticId to link a human report to this diagnostic.
400
Invalid request body or request param

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
401
Neither a signed-in session nor a valid X-Client-Key. A missing, revoked, expired, not-yet-valid or unknown key all answer alike, so key existence is not an oracle. Rotate the client key; this is not an expired session.

application/json

FieldTypeRequiredDescription
messagestringYesThe refusal, for example “Client key required for operation is invalid or missing”.
413
The request body exceeds the 16 KB cap. Do not retry the same body.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
429
Rate limit exceeded; retry after the Retry-After interval.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
503
The diagnostics store is not configured on this server; retry later.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
Feature GET

/api/entitlement/features

Get all features defined across plans

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/entitlement/features

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/entitlement/features

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/entitlement/features

Parameters

Query parameters

NameTypeRequiredDescription
pagestringNoGet responses by page
pagesizestringNoGet responses by pagesize

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Features response

application/json

List of features.
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the feature.
plan_idstring (uuid)YesIdentifier of the plan granting this feature.
planobjectNoThe plan granting this feature. Populated only when the association is explicitly loaded.
namestringYesName of the entitled feature.
quantitynumber (double)YesQuantity of the feature granted by the plan. For a cap-style feature this is the maximum, and the sentinel value 999999999999 denotes unlimited. For a capability-style feature any value greater than 0 grants the capability.
created_atstring (date-time)YesTimestamp when the resource was created.
updated_atstring (date-time)YesTimestamp when the resource was updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Plan GET

/api/entitlement/plans

Get all plans supported by the system

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/entitlement/plans

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/entitlement/plans

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/entitlement/plans

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pagesizeintegerNoGet responses by pagesize

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Plans response

application/json

FieldTypeRequiredDescription
cadencestringYesBilling cadence for the plan (monthly, annually, or none).
currencystringYesCurrency in which the plan is priced.
idstring (uuid)YesUnique identifier for the plan.
minimumUnitsintegerYesMinimum number of units required for the plan.
namestringYesDisplay name of the plan.
pricePerUnitnumberYesPrice per unit of the plan.
unitstringYesUnit of consumption this plan charges against (e.g. user).
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Subscription Subscriptions GET

/api/entitlement/subscriptions

Read subscriptions

Returns all subscriptions for the organization

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/entitlement/subscriptions

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/entitlement/subscriptions

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/entitlement/subscriptions

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pagesizeintegerNoGet responses by pagesize
orderstringNoGet ordered responses
statusarray of stringNoFilter subscriptions by status
planIdarray of string (uuid)NoFilter subscriptions by plan UUID. Repeat for multiple values.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Subscriptions response

application/json

Paginated list of subscriptions.
FieldTypeRequiredDescription
pageintegerYesCurrent page number of the result set.
pageSizeintegerYesNumber of items per page.
subscriptionsarray of objectYesSubscriptions returned on the current page.
totalCountintegerYesTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

500
Internal server error

text/plain

Subscription Subscriptions POST

/api/entitlement/subscriptions

Update an existing subscription

Updates the subscription named by id in the request body. Despite the historical “upsert” name, this route does not create: a body carrying no id is refused with 400. Subscriptions are minted from the payment processor’s own response, either by the checkout flow (POST /api/entitlement/subscriptions/create) or by the payment-processor webhook, and neither of those reaches this route.

Two independent authorization gates guard this route and they answer differently. The route’s own middleware runs first. It authorizes against the organization named by the route’s orgId path parameter when the route has one, and otherwise against whichever organization the caller currently has selected - and this route has no orgId parameter, so here it is the selected one. A caller who is not a provider admin, an Organization Admin or an Organization Owner of that organization is refused with 403 before the body is read at all. The handler then re-checks against the stored subscription’s own organization, which need not be the selected one: the caller must be a provider admin, or an Organization Admin or Organization Owner of that organization, and a caller who is not receives 404 - the same answer an absent subscription gives, and deliberately indistinguishable from it, so that the route cannot be used to discover which subscription IDs exist.

The fields the payment processor and the webhook own are pinned to the stored row before the write, and any client-supplied value for them is ignored rather than honoured: orgId, billingId, status, startDate and endDate. The writable surface is planId and quantity, and the write replaces both - a body that omits one stores that field’s zero value rather than preserving the stored one, so send both on every call.

The 200 body is a SubscriptionPage carrying the single updated subscription (page 0, pageSize 1, totalCount 1), not a bare subscription object.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/entitlement/subscriptions

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/entitlement/subscriptions

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/entitlement/subscriptions

Request body

application/json Required

Body of an update to an existing subscription (POST /api/entitlement/subscriptions).

This is an update payload, never a create payload: id names the subscription to update and the server refuses a body without one. It is also a full replacement of the writable surface rather than a partial merge, which is why planId and quantity are both required - omitting either stores its zero value.

The fields the payment processor and the webhook own - orgId, billingId, status, startDate and endDate - are deliberately absent: the server pins each of them to the stored row and ignores any value supplied for them.

FieldTypeRequiredDescription
idstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
planIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
quantityintegerYesNumber of units subscribed (eg number of users).

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Subscription updated

application/json

Paginated list of subscriptions.
FieldTypeRequiredDescription
pageintegerYesCurrent page number of the result set.
pageSizeintegerYesNumber of items per page.
subscriptionsarray of objectYesSubscriptions returned on the current page.
totalCountintegerYesTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Subscription Subscriptions POST

/api/entitlement/subscriptions/create

Create a new subscription for an organization

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/entitlement/subscriptions/create

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/entitlement/subscriptions/create

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/entitlement/subscriptions/create

Request body

application/json Required
Payload for creating a new subscription through a payment processor.
FieldTypeRequiredDescription
couponIdstringNoCoupon ID to apply.
emailstring (email)NoEmail of the customer.
orgIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
paymentProcessorstringNoPayment processor used to complete the subscription checkout.
planIdstringNoPrice ID from the payment processor.
userCountintegerNoNumber of users in the organization.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
A new subscription has been created

application/json

Response body returned after a subscription is created.
FieldTypeRequiredDescription
clientSecretstringNoClient secret returned by the payment processor for the subscription checkout flow.
subscriptionIdstringNoID of the associated subscription in the payment processor.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

500
Internal server error

text/plain

Feature GET

/api/entitlement/subscriptions/organizations/{orgId}/features

Get the active features entitled to an organization through its subscriptions

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/entitlement/subscriptions/organizations/{orgId}/features

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/entitlement/subscriptions/organizations/{orgId}/features

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/entitlement/subscriptions/organizations/{orgId}/features

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesThe ID of the organization

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Features response

application/json

List of features.
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the feature.
plan_idstring (uuid)YesIdentifier of the plan granting this feature.
planobjectNoThe plan granting this feature. Populated only when the association is explicitly loaded.
namestringYesName of the entitled feature.
quantitynumber (double)YesQuantity of the feature granted by the plan. For a cap-style feature this is the maximum, and the sentinel value 999999999999 denotes unlimited. For a capability-style feature any value greater than 0 grants the capability.
created_atstring (date-time)YesTimestamp when the resource was created.
updated_atstring (date-time)YesTimestamp when the resource was updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Subscription Payment Processors POST

/api/entitlement/subscriptions/webhooks

Handle webhook events from payment processors

Authentication

No authentication required

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/entitlement/subscriptions/webhooks

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/entitlement/subscriptions/webhooks

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/entitlement/subscriptions/webhooks

Request body

application/json Required
Payload for webhook events from payment processors.

Schema: object

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Webhook processed
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Subscription Subscriptions GET

/api/entitlement/subscriptions/{subscriptionId}

Read a single subscription

Returns the subscription named by subscriptionId.

Authorization is evaluated against the subscription’s own organization, the same bar the org-scoped list route (GET /api/entitlement/subscriptions) enforces over the same data: the caller must be a provider admin, or an Organization Admin or Organization Owner of that organization. A caller who is not receives 404, deliberately indistinguishable from an absent subscription, so that the route cannot be used to enumerate subscription IDs.

Unlike the update route, this one is registered without any organization-scoped middleware, so it never answers 403: every authorization denial, whether “not yours” or “not there”, is that same 404. A malformed request still answers 400 and an unauthenticated one 401, as below.

A subscriptionId that is not a UUID is refused with 400, and an unauthenticated caller with 401.

The 200 body is a SubscriptionPage carrying the single subscription (page 0, pageSize 1, totalCount 1), not a bare subscription object.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/entitlement/subscriptions/{subscriptionId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/entitlement/subscriptions/{subscriptionId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/entitlement/subscriptions/{subscriptionId}

Parameters

Path parameters

NameTypeRequiredDescription
subscriptionIdstring (uuid)YesSubscription ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Subscription response

application/json

Paginated list of subscriptions.
FieldTypeRequiredDescription
pageintegerYesCurrent page number of the result set.
pageSizeintegerYesNumber of items per page.
subscriptionsarray of objectYesSubscriptions returned on the current page.
totalCountintegerYesTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Subscription Subscriptions POST

/api/entitlement/subscriptions/{subscriptionId}/cancel

Cancel an existing subscription. The subscription will remain active until the end of the billing period and then it will be canceled.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/entitlement/subscriptions/{subscriptionId}/cancel

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/entitlement/subscriptions/{subscriptionId}/cancel

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/entitlement/subscriptions/{subscriptionId}/cancel

Parameters

Path parameters

NameTypeRequiredDescription
subscriptionIdstring (uuid)YesSubscription ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Subscription cancellation scheduled

application/json

Paginated list of subscriptions.
FieldTypeRequiredDescription
pageintegerYesCurrent page number of the result set.
pageSizeintegerYesNumber of items per page.
subscriptionsarray of objectYesSubscriptions returned on the current page.
totalCountintegerYesTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Subscription Subscriptions POST

/api/entitlement/subscriptions/{subscriptionId}/upgrade

Upgrade or downgrade an existing subscription by changing one of the plans in the subscription

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/entitlement/subscriptions/{subscriptionId}/upgrade

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/entitlement/subscriptions/{subscriptionId}/upgrade

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/entitlement/subscriptions/{subscriptionId}/upgrade

Parameters

Path parameters

NameTypeRequiredDescription
subscriptionIdstring (uuid)YesSubscription ID

Request body

application/json Required
Payload for upgrading or downgrading a subscription by changing one of its plans.
FieldTypeRequiredDescription
newPlanIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
oldPlanIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Subscription upgraded

application/json

Subscription entity schema.
FieldTypeRequiredDescription
billingIdstringYesBilling ID of the subscription. The ID of the subscription in the external billing system (for example, Stripe).
createdAtstring (date-time)NoTimestamp when the subscription was created.
deletedAtstring (date-time)NoTimestamp when the subscription was soft-deleted, if applicable.
endDatestring (date-time)NoTimestamp when the current subscription period ends.
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
orgIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
planobjectNoEager-loaded plan associated with this subscription.
planIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
quantityintegerYesNumber of units subscribed (eg number of users).
startDatestring (date-time)NoTimestamp when the subscription period started.
statusstringYesCurrent status of the subscription (e.g. active, past_due, canceled).
updatedAtstring (date-time)NoTimestamp when the subscription was last updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Subscription Subscriptions POST

/api/entitlement/subscriptions/{subscriptionId}/upgrade-preview

Preview the invoice for upgrading or downgrading an existing subscription by changing one of the plans in the subscription

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/entitlement/subscriptions/{subscriptionId}/upgrade-preview

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/entitlement/subscriptions/{subscriptionId}/upgrade-preview

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/entitlement/subscriptions/{subscriptionId}/upgrade-preview

Parameters

Path parameters

NameTypeRequiredDescription
subscriptionIdstring (uuid)YesSubscription ID

Request body

application/json Required
Payload for upgrading or downgrading a subscription by changing one of its plans.
FieldTypeRequiredDescription
newPlanIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
oldPlanIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Preview of the upgraded subscription invoice

application/json

400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Environment GET

/api/environments

Get all environments

Gets all environments

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/environments

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/environments

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/environments

Parameters

Query parameters

NameTypeRequiredDescription
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
orgIdstring (uuid)YesUser’s organization ID
purposestringNoReturn only environments with this purpose; absent returns every purpose the caller may see. The filter only narrows the environments the caller can already list and grants no visibility - a caller who cannot see administrative environments receives an empty page for purpose=administrative.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Environments

application/json

Paginated list of environments.
FieldTypeRequiredDescription
environmentsarray of objectNoEnvironments associated with this resource.
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Environment POST

/api/environments

Create an environment

Creates a new environment

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/environments

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/environments

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/environments

Request body

application/json Required
Body for creating environment
Payload for creating or updating an environment. Carries only the client-settable fields. Server-owned fields are deliberately absent: id, owner, createdAt, updatedAt and deletedAt because the server assigns them. purpose is present but limited to the non-privileged values, because permission to create an environment must not confer the ability to designate it administrative. Limiting it here is a codegen guarantee rather than access control: the registrant connection inlines the full environment entity, so purpose still reaches the registerRegistryComponent and registerRegistryRelationship request types, and every consumer must refuse a privileged value on input whatever surface it arrives on. Do not widen EnvironmentPayloadPurpose to a privileged value - see https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.
FieldTypeRequiredDescription
descriptionstringNoAn environment is a collection of resources, such as connections & credentials. Provide a detailed description to clarify the purpose of this environment and the types of resources it encompasses. You can modify the description at any time. Learn more about environments here.
metadataobjectNoFree-form settings stored with the environment.
namestringYesAn environment is a collection of resources. Provide a name that meaningfully represents these resources. You can change the name of the environment even after its creation.
organizationIdstring (uuid)YesSelect an organization in which you want to create this new environment. Keep in mind that the organization cannot be changed after creation.
purposestringNoThe purpose a client may give an environment on create or update: user (an ordinary environment). Profiles are not environments; they are their own construct at /api/profiles, assigned to workspaces. Omitted means user on create and unchanged on update. A server refuses any other value with 400, and never lets this field change an environment that already carries a privileged purpose.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Created environment

application/json

Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments
FieldTypeRequiredDescription
idstring (uuid)YesID
schemaVersionstringYesSpecifies the version of the schema to which the environment conforms.
namestringYesEnvironment name
descriptionstringYesEnvironment description
organizationIdstring (uuid)YesEnvironment organization ID
ownerstring (uuid)NoEnvironment owner
createdAtstring (date-time)NoTimestamp when the environment was created.
metadataobjectNoAdditional metadata associated with the environment.
updatedAtstring (date-time)NoTimestamp when the environment was last updated.
deletedAtstring | null (date-time)NoTimestamp when the environment was soft deleted. Null while the environment remains active.
purposestringNo

What the environment exists for. user is an ordinary environment that people create to logically group Connections and their Credentials. administrative designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust. Profiles are not environments: they are their own construct (schemas/constructs/v1beta3/profile, served at /api/profiles and assigned to workspaces under /api/workspaces/{workspaceId}/profiles).

Absent means user. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for “not user”, so the property fails closed.

At most one live environment per organization may carry any single privileged purpose - administrative, and each privileged value a later version adds. Name those values explicitly wherever the rule is enforced, including the database index predicate: a “not user” test also matches the empty value that unmigrated rows and un-normalised writes read back as, which means ordinary. A resolver that selects an environment by purpose MUST fail closed when more than one live row matches: return an error rather than whichever row the database happened to return first.

Privileged values are server-owned and never client-settable. EnvironmentPayload, which every environment POST and PUT requestBody references, accepts only the non-privileged value user, and the create-or-edit form has no field for it, so the environment create and update endpoints cannot designate an environment administrative. That restriction is a codegen guarantee, never access control: the registrant connection inlines the full environment entity, so registerRegistryComponent and registerRegistryRelationship do carry purpose in a request type and consumers MUST refuse it on input there too. Whatever surface a value arrives on, every consumer MUST assign this property only from server-side provisioning or a data migration. Permission to create an environment does not confer the ability to make one administrative.

The database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer’s obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.

Example response

{
  "createdAt": "0001-01-01T00:00:00Z",
  "deletedAt": null,
  "description": "Connections and credentials for the production cluster.",
  "id": "00000000-0000-0000-0000-000000000000",
  "metadata": {},
  "name": "Production Environment",
  "organizationId": "00000000-0000-0000-0000-000000000000",
  "owner": "00000000-0000-0000-0000-000000000000",
  "purpose": "user",
  "schemaVersion": "environments.meshery.io/v1beta3",
  "updatedAt": "0001-01-01T00:00:00Z"
}
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Environment GET

/api/environments/{environmentId}

Get environment by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/environments/{environmentId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/environments/{environmentId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/environments/{environmentId}

Parameters

Path parameters

NameTypeRequiredDescription
environmentIdstring (uuid)YesEnvironment ID

Query parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesUser’s organization ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Environment page

application/json

Paginated list of environments.
FieldTypeRequiredDescription
environmentsarray of objectNoEnvironments associated with this resource.
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Environment PUT

/api/environments/{environmentId}

Update an environment

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/environments/{environmentId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/environments/{environmentId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/environments/{environmentId}

Parameters

Path parameters

NameTypeRequiredDescription
environmentIdstring (uuid)YesEnvironment ID

Request body

application/json Required
Body for creating environment
Payload for creating or updating an environment. Carries only the client-settable fields. Server-owned fields are deliberately absent: id, owner, createdAt, updatedAt and deletedAt because the server assigns them. purpose is present but limited to the non-privileged values, because permission to create an environment must not confer the ability to designate it administrative. Limiting it here is a codegen guarantee rather than access control: the registrant connection inlines the full environment entity, so purpose still reaches the registerRegistryComponent and registerRegistryRelationship request types, and every consumer must refuse a privileged value on input whatever surface it arrives on. Do not widen EnvironmentPayloadPurpose to a privileged value - see https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.
FieldTypeRequiredDescription
descriptionstringNoAn environment is a collection of resources, such as connections & credentials. Provide a detailed description to clarify the purpose of this environment and the types of resources it encompasses. You can modify the description at any time. Learn more about environments here.
metadataobjectNoFree-form settings stored with the environment.
namestringYesAn environment is a collection of resources. Provide a name that meaningfully represents these resources. You can change the name of the environment even after its creation.
organizationIdstring (uuid)YesSelect an organization in which you want to create this new environment. Keep in mind that the organization cannot be changed after creation.
purposestringNoThe purpose a client may give an environment on create or update: user (an ordinary environment). Profiles are not environments; they are their own construct at /api/profiles, assigned to workspaces. Omitted means user on create and unchanged on update. A server refuses any other value with 400, and never lets this field change an environment that already carries a privileged purpose.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Environment page

application/json

Paginated list of environments.
FieldTypeRequiredDescription
environmentsarray of objectNoEnvironments associated with this resource.
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Environment DELETE

/api/environments/{environmentId}

Delete an environment

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/environments/{environmentId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/environments/{environmentId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/environments/{environmentId}

Parameters

Path parameters

NameTypeRequiredDescription
environmentIdstring (uuid)YesEnvironment ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Environment deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Environment GET

/api/environments/{environmentId}/connections

Get environment connections

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/environments/{environmentId}/connections

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/environments/{environmentId}/connections

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/environments/{environmentId}/connections

Parameters

Path parameters

NameTypeRequiredDescription
environmentIdstring (uuid)YesEnvironment ID

Query parameters

NameTypeRequiredDescription
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
filterstringNoJSON-encoded filter string used to scope the connection listing.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Environment connections

application/json

Paginated list of connections associated with an environment.
FieldTypeRequiredDescription
connectionsarray of objectNoThe connections of the environmentconnectionspage.
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
totalCountintegerNoTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Connection API Connections POST

/api/environments/{environmentId}/connections/{connectionId}

Add connection to environment

Associate a connection with an environment

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/environments/{environmentId}/connections/{connectionId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/environments/{environmentId}/connections/{connectionId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/environments/{environmentId}/connections/{connectionId}

Parameters

Path parameters

NameTypeRequiredDescription
environmentIdstring (uuid)YesEnvironment ID
connectionIdstring (uuid)YesConnection ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Connection added to environment
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Connection API Connections DELETE

/api/environments/{environmentId}/connections/{connectionId}

Remove connection from environment

Disassociate a connection from an environment

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/environments/{environmentId}/connections/{connectionId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/environments/{environmentId}/connections/{connectionId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/environments/{environmentId}/connections/{connectionId}

Parameters

Path parameters

NameTypeRequiredDescription
environmentIdstring (uuid)YesEnvironment ID
connectionIdstring (uuid)YesConnection ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Connection removed from environment
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Events GET

/api/events

Get events aggregate summary

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/events

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/events

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/events

Parameters

Query parameters

NameTypeRequiredDescription
cumulativebooleanNoWhen true, return cumulative aggregate counts across all time.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Events aggregate

application/json

Aggregated event counts across categories.
FieldTypeRequiredDescription
auditintegerNoCount of audit-category events.
401
Unauthorized
403
Forbidden

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
404
Not found - the caller is not a provider-wide Provider Admin

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Server error
Events POST

/api/events

Create a new event

Records an event and answers 201 with it. When the payload carries an idempotencyKey the authenticated caller already used, nothing new is recorded and the answer is 200 with the event first recorded under that key. The server assigns the organization from the session; clients do not send it.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/events

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/events

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/events

Request body

application/json Required
Payload for creating a new event.
FieldTypeRequiredDescription
actionstringNoThe action of the event.
categorystringNoThe category of the event.
descriptionstringNoDescription of the event.
idempotencyKeystringNoOptional client-chosen key that makes recording this event safe to retry. Keys are scoped to the authenticated caller (organization and user), never to the client-settable owner field, so owner may be omitted without affecting deduplication. The first event a caller records with a key is kept, and a later create with the same key records nothing and answers 200 with that event, whatever the rest of the payload says. Use a value that names the occurrence, for example a run id, so a client replaying a local queue after a timeout never records a duplicate. Omit it for events that need no deduplication.
ownerstring (uuid)NoUUID of the user associated with the event.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
An event with this idempotencyKey was already recorded by the same caller; it is returned unchanged and no new event is recorded.

application/json

One recorded event (an event_trackers row) in the wire form MeshKit’s models/events.Event serializes. Meshery Cloud returns these, for example, as the per-path failure records of a GitHub repository import (importGithubRepository, errors). Unlike EventResult, it carries no joined user profile fields.
FieldTypeRequiredDescription
actedUponstring (uuid)YesID of the entity on which the event was performed.
actionstringYesAction taken on the resource, for example import.
categorystringYesResource kind the operation was invoked on, for example pattern.
createdAtstring (date-time)YesTimestamp when the event was recorded.
deletedAtstring | null (date-time)NoTimestamp when the event was soft-deleted; omitted when it was not.
descriptionstringYesHuman-readable summary of what happened.
idstring (uuid)YesEvent ID.
metadataobject | nullYesEvent-specific details; the structure varies by event kind. null when the producer attached none.
operationIdstring (uuid)YesID correlating the events one operation emitted.
ownerstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
severitystringYesEvent level. MeshKit’s producers set one of emergency, alert, critical, error, warning, informational, debug or success. The set is not closed on the wire - the event write APIs persist the value they are given - so consumers must tolerate other values.
statusstringYesRead state of the event. MeshKit records new events as unread, and acknowledged ones become read; the event status APIs persist any value they are given, so consumers must tolerate other values.
systemIdstring (uuid)YesID of the system instance that emitted the event. A Meshery Server sends its server instance ID; an event the provider emits itself carries the nil UUID. A client that registered a connection for its machine (for example a desktop client) sets its connection ID, so an event that records a run names the computer that ran it and can be joined to the claim it released (Claim.outcomeEventId) and to the connection (connections.id). The value is asserted by the sender and is not checked against the caller’s connections.
updatedAtstring (date-time)YesTimestamp when the event was last updated.
201
Event created

application/json

One recorded event (an event_trackers row) in the wire form MeshKit’s models/events.Event serializes. Meshery Cloud returns these, for example, as the per-path failure records of a GitHub repository import (importGithubRepository, errors). Unlike EventResult, it carries no joined user profile fields.
FieldTypeRequiredDescription
actedUponstring (uuid)YesID of the entity on which the event was performed.
actionstringYesAction taken on the resource, for example import.
categorystringYesResource kind the operation was invoked on, for example pattern.
createdAtstring (date-time)YesTimestamp when the event was recorded.
deletedAtstring | null (date-time)NoTimestamp when the event was soft-deleted; omitted when it was not.
descriptionstringYesHuman-readable summary of what happened.
idstring (uuid)YesEvent ID.
metadataobject | nullYesEvent-specific details; the structure varies by event kind. null when the producer attached none.
operationIdstring (uuid)YesID correlating the events one operation emitted.
ownerstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
severitystringYesEvent level. MeshKit’s producers set one of emergency, alert, critical, error, warning, informational, debug or success. The set is not closed on the wire - the event write APIs persist the value they are given - so consumers must tolerate other values.
statusstringYesRead state of the event. MeshKit records new events as unread, and acknowledged ones become read; the event status APIs persist any value they are given, so consumers must tolerate other values.
systemIdstring (uuid)YesID of the system instance that emitted the event. A Meshery Server sends its server instance ID; an event the provider emits itself carries the nil UUID. A client that registered a connection for its machine (for example a desktop client) sets its connection ID, so an event that records a run names the computer that ran it and can be joined to the claim it released (Claim.outcomeEventId) and to the connection (connections.id). The value is asserted by the sender and is not checked against the caller’s connections.
updatedAtstring (date-time)YesTimestamp when the event was last updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Events POST

/api/events/delete

Bulk delete events

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/events/delete

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/events/delete

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/events/delete

Request body

application/json Required
Payload for bulk-deleting events by ID.
FieldTypeRequiredDescription
idsarray of string (uuid)YesUUIDs of the events to delete.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Events deleted

application/json

Response body returned after bulk event deletion.
FieldTypeRequiredDescription
deletedarray of string (uuid)NoUUIDs of events that were deleted.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Events GET

/api/events/list

Get events list

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/events/list

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/events/list

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/events/list

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pagesizeintegerNoGet responses by pagesize
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
filterstringNoGet filtered reponses
scopestringNoWhich events are returned. user (default): only the caller’s own events (unchanged behavior). organization: every member’s events in the caller’s session organization. Requires organization administration permission in the session organization; callers without it get 403.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Events page

application/json

Paginated list of events.
FieldTypeRequiredDescription
dataarray of objectNoThe events returned on the current page.
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
401
Unauthorized
403
Forbidden

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
404
Not found
429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Server error
Events PUT

/api/events/status

Bulk update event status

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/events/status

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/events/status

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/events/status

Request body

application/json Required
Payload for bulk-updating the status of events.
FieldTypeRequiredDescription
idsarray of string (uuid)YesUUIDs of the events to update.
statusstringYesNew status to apply to the selected events.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Events updated

application/json

Response body returned after bulk event status update.
FieldTypeRequiredDescription
updatedarray of string (uuid)NoUUIDs of events whose status was updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Events GET

/api/events/summary

Get event summary by user

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/events/summary

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/events/summary

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/events/summary

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pagesizeintegerNoGet responses by pagesize
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
filterstringNoGet filtered reponses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Event summary page

application/json

Paginated list of per-user event summaries.
FieldTypeRequiredDescription
dataarray of objectNoThe event summaries returned on the current page.
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
totalCountintegerNoTotal number of items available.
401
Unauthorized
404
Not found
429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Server error
Events GET

/api/events/types

Get event types

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/events/types

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/events/types

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/events/types

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Event types

application/json

FieldTypeRequiredDescription
actionstringNoThe action of the event type.
categorystringNoThe category of the event type.
401
Unauthorized
404
Not found
429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Server error
Events DELETE

/api/events/{eventId}

Delete a single event

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/events/{eventId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/events/{eventId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/events/{eventId}

Parameters

Path parameters

NameTypeRequiredDescription
eventIdstring (uuid)YesID of the event.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Event deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Events PUT

/api/events/{eventId}/status

Update status of a single event

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/events/{eventId}/status

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/events/{eventId}/status

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/events/{eventId}/status

Parameters

Path parameters

NameTypeRequiredDescription
eventIdstring (uuid)YesID of the event.

Request body

application/json Required
Payload for updating the status of a single event.
FieldTypeRequiredDescription
statusstringYesCurrent status of the event.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Event status updated

application/json

Response body returned after updating an event’s status.
FieldTypeRequiredDescription
eventIdstring (uuid)NoUUID of the event whose status was updated.
messagestringNoHuman-readable status message.
statusstringNoUpdated status of the event.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Badge GET

/api/identity/badges

Get available badges

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/badges

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/badges

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/badges

Parameters

Query parameters

NameTypeRequiredDescription
orgIdstring (uuid)NoOrganization ID to scope the badge listing to.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Available badges

application/json

Map of badges available in an organization, keyed by badge label.
FieldTypeRequiredDescription
badgesobjectNoAvailable badges, keyed by badge label.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Token GET

/api/identity/native/authorize

Authorize native client sign-in

Browser-facing step of the native client sign-in flow (RFC 8252 loopback redirect with RFC 7636 PKCE). Requires the session cookie of a signed-in user and the Create Token permission. Validates the request. When the request names the client application (client) and its version (clientVersion) and that version is below the provider minimum, it renders the update page with status 426 and issues nothing. Otherwise it stores a single-use authorization code that expires after 60 seconds, bound to the user, the client name and the PKCE code challenge, and redirects the browser to http://127.0.0.1:{port}/callback with code and state query parameters. Only the 127.0.0.1 loopback IP literal is ever used; no token or cookie is placed in the redirect; no consent page is shown.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/native/authorize

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/native/authorize

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/native/authorize

Parameters

Query parameters

NameTypeRequiredDescription
clientNamestringYesDisplay name of the native client asking to sign in. Used as the name and purpose of the minted token.
clientstringNoIdentifier of the client application, as in the capabilities client parameter. Selects the minimum version checked against clientVersion.
clientVersionstringNoVersion of the client application, for example v1.25.0.
portintegerYesPort on 127.0.0.1 where the native client listens for the callback.
codeChallengestringYesPKCE code challenge, BASE64URL(SHA256(codeVerifier)) without padding.
codeChallengeMethodstringYesPKCE challenge method. Only S256 is accepted.
statestringYesOpaque value from the native client, returned unchanged on the callback.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

302
Redirect to the loopback callback carrying code and state. The callback’s query parameters are described by NativeAuthorizationCallback.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

426
Update page; the client’s version is below the provider’s minimum for that client.

text/html

500
Internal server error

text/plain

Token POST

/api/identity/native/token

Exchange native client authorization code

Redeems a single-use authorization code from the native client sign-in flow. The caller proves possession of the PKCE code verifier (BASE64URL(SHA256(codeVerifier)) must equal the stored S256 challenge). The code is consumed on the first redemption attempt, whether or not the verifier matches. On success an API token is minted for the user with name and purpose set to the client name. This call is authenticated by the code and verifier, not by a session.

Authentication

No authentication required

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/native/token

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/native/token

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/native/token

Request body

application/json Required
Redeems a native client authorization code with its PKCE verifier.
FieldTypeRequiredDescription
codestringYesSingle-use authorization code from the loopback callback.
codeVerifierstringYesPKCE code verifier (RFC 7636, 43 to 128 unreserved characters).

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
API token minted for the native client

application/json

Represents a user-owned API token or OAuth session.
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the token.
ownerstring (uuid)YesUUID of the user who owns the token.
providerstringYesAuthentication provider associated with the token.
accessTokenstringYesAccess token value.
refreshTokenstringNoRefresh token value when applicable.
namestringYesHuman-readable token name.
purposestringYesPurpose for which the token was created.
isOauthbooleanYesWhether this entry represents an OAuth session.
createdAtstring (date-time)YesTimestamp when the token was created.
updatedAtstring (date-time)YesTimestamp when the token was last updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Organization Organizations GET

/api/identity/orgs

Read organizations

Returns organizations for the current user.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoZero-based index of the result page to return.
pageSizeintegerNoMaximum number of items returned on each page.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
allbooleanNoGet all possible entries

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Organizations response

application/json

Paginated list of organizations.
FieldTypeRequiredDescription
organizationsarray of objectNoOrganizations in this page.
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
204
No content
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Organization Organizations POST

/api/identity/orgs

Create an organization

Creates a new organization.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs

Request body

application/json Required
Body for creating or updating an organization
Payload for creating or updating an organization. Contains only client-settable fields.
FieldTypeRequiredDescription
countrystringNoCountry of the organization.
descriptionstringNoDescription of the organization.
namestringNoName of the organization.
notifyOrgUpdatebooleanNoIndicates whether organization members should be notified of this update.
preferencesobjectNoOrganization-level user experience preferences.
regionstringNoRegion of the organization.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Single-organization page response

application/json

Single-organization wrapper used by current meshery-cloud organization handlers.
FieldTypeRequiredDescription
organizationsarray of objectNoOrganizations returned in this single-item page wrapper.
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

500
Internal server error

text/plain

Organization Organizations GET

/api/identity/orgs/by-domain

Get organization by domain

Unauthenticated lookup. Servers MUST omit preferences.schedulePause from this response; the organization-wide pause is read through getOrgPreferences.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/by-domain

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/by-domain

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/by-domain

Parameters

Query parameters

NameTypeRequiredDescription
domainstringYesDomain name of the organization to look up.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Organization response

application/json

An organization in Meshery Cloud. Organizations are the top-level tenancy boundary and own teams, workspaces, environments, designs, and other resources. Learn more at https://docs.meshery.io/concepts/logical/organizations
FieldTypeRequiredDescription
countrystringYesCountry of the organization.
createdAtstring (date-time)YesTimestamp when the organization was created.
deletedAtstring (date-time)NoTimestamp when the organization was soft-deleted. Null while the organization is active.
descriptionstringYesDescription of the organization.
domainstring | nullNoDomain of the organization.
idstring (uuid)YesOrganization ID.
metadataobjectYesFree-form metadata associated with the organization, including preferences.
namestringYesName of the organization.
ownerstring (uuid)YesOwner user ID of the organization.
regionstringYesRegion of the organization.
updatedAtstring (date-time)YesTimestamp when the organization was last updated.
401
Expired JWT token used or insufficient privilege

text/plain

404
Organization not found
500
Internal server error
Organization Organizations GET

/api/identity/orgs/{orgId}

Read an organization

Returns the organization in the single-item page wrapper currently emitted by meshery-cloud.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Single-organization page response

application/json

Single-organization wrapper used by current meshery-cloud organization handlers.
FieldTypeRequiredDescription
organizationsarray of objectNoOrganizations returned in this single-item page wrapper.
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Organization Organizations PUT

/api/identity/orgs/{orgId}

Update an organization

Updates the organization. Changing preferences.schedulePause is restricted to organization admins (otherwise 403); omitting schedulePause keeps the current pause unchanged.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID.

Request body

application/json Required
Body for creating or updating an organization
Payload for creating or updating an organization. Contains only client-settable fields.
FieldTypeRequiredDescription
countrystringNoCountry of the organization.
descriptionstringNoDescription of the organization.
namestringNoName of the organization.
notifyOrgUpdatebooleanNoIndicates whether organization members should be notified of this update.
preferencesobjectNoOrganization-level user experience preferences.
regionstringNoRegion of the organization.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Single-organization page response for the updated organization

application/json

Single-organization wrapper used by current meshery-cloud organization handlers.
FieldTypeRequiredDescription
organizationsarray of objectNoOrganizations returned in this single-item page wrapper.
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Organization Organizations DELETE

/api/identity/orgs/{orgId}

Delete an organization

Soft-deletes the organization. An organization that still has live child organizations is not deleted: the request is refused with 409 and nothing changes. Children are neither reparented nor cascade-deleted; delete or leave them first.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Organization deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

409
Conflict - the organization still has live child organizations, so it was not deleted
500
Internal server error

text/plain

Organization Organizations GET

/api/identity/orgs/{orgId}/children

Read the direct child organizations of an organization

Returns the live organizations whose parent is the organization named by orgId, as the ChildOrganization projection. Only direct children are returned; the hierarchy has no depth limit, and a listed child may itself be a parent, but this operation never walks grandchildren or ancestors. Authorization is the View Organizations permission key evaluated in the parent (orgId); a caller without it receives 403 before any lookup, and a parent the caller may see but that has no children is a 200 with an empty page. The Provider Organization is never a parent, so it has no children to list.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/children

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/children

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/children

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID.

Query parameters

NameTypeRequiredDescription
pageintegerNoZero-based index of the result page to return.
pageSizeintegerNoMaximum number of items returned on each page.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Direct child organizations of the parent organization

application/json

Page of the direct child organizations of one parent. Carries only the organizations list and the total count; it is not the OrganizationsPage wrapper, whose AvailableOrganization rows expose owner and metadata.
FieldTypeRequiredDescription
organizationsarray of objectYesDirect child organizations in this page.
totalCountintegerYesTotal number of live direct children across all pages.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Organization Organizations POST

/api/identity/orgs/{orgId}/children

Create a child organization

Creates a new organization whose parent is the organization named by orgId. The path is the parent; the body is the same organization payload the flat create accepts (name, country, region, description) and carries no parentId - a parentId in the body is ignored. The parent is stamped at creation and cannot be changed afterwards. Authorization is the Create Organization permission key evaluated in the parent (orgId). The Provider Organization is never a valid parent: naming it, or the “all” scope, as orgId is refused with 403. A missing or soft-deleted parent is 404, and the body does not distinguish the two. An empty name is 400. On success the creator receives Organization Admin in the new child and the response is the same single-organization page wrapper the flat create returns; parentId is absent from it.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/children

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/children

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/children

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID.

Request body

application/json Required
Body for creating or updating an organization
Payload for creating or updating an organization. Contains only client-settable fields.
FieldTypeRequiredDescription
countrystringNoCountry of the organization.
descriptionstringNoDescription of the organization.
namestringNoName of the organization.
notifyOrgUpdatebooleanNoIndicates whether organization members should be notified of this update.
preferencesobjectNoOrganization-level user experience preferences.
regionstringNoRegion of the organization.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Single-organization page response for the created child organization

application/json

Single-organization wrapper used by current meshery-cloud organization handlers.
FieldTypeRequiredDescription
organizationsarray of objectNoOrganizations returned in this single-item page wrapper.
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Organization Organizations GET

/api/identity/orgs/{orgId}/preferences

Get organization preferences

Returns preferences for the specified organization.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/preferences

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/preferences

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/preferences

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Organization metadata, including preferences

application/json

Free-form metadata associated with an organization, including preferences.
FieldTypeRequiredDescription
preferencesobjectYesOrganization-level user experience preferences.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Organization Organizations PATCH

/api/identity/orgs/{orgId}/preferences

Partially update organization preferences

Merges the body into the organization’s stored preferences. Every member of the body is optional: a member that is present replaces that member of the stored preferences as a whole, and a member that is omitted stays unchanged. An empty body changes nothing and returns the current preferences. Members may not be null. Authorization is the same as updating the organization (updateOrg) for every member, and changing schedulePause is additionally restricted to organization admins (otherwise 403, and nothing is written). Lifting the pause clears its reason and server-recorded fields exactly as updateOrg does. The optional If-Match header makes the write conditional on the entity tag the preferences carried when they were read (see the ETag header of getOrgPreferences and of this response): when it no longer matches, the request is refused with 412 and nothing is written. Without If-Match the write is unconditional.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/preferences

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/preferences

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/preferences

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID.

Header parameters

NameTypeRequiredDescription
If-MatchstringNoEntity tag of the organization’s preferences as last read, from the ETag header of getOrgPreferences or patchOrgPreferences. When present the write applies only if it still matches; otherwise 412.

Request body

application/json Required
Partial update of organization preferences (patchOrgPreferences). Every member is optional: a present member replaces that member of the stored preferences as a whole, and an omitted member stays unchanged. Members are those of PreferencesPayload, with the same schemas, and may not be null.
FieldTypeRequiredDescription
authBrandingobjectNoOptional per-organization branding overrides for the auth pages: carousel slides and FAQ entries. Stored as JSON inside organization.metadata.preferences, so no dedicated column backs it. Empty or omitted fields fall back to the platform defaults.
dashboardobjectNoPreferences specific to dashboard behavior.
linksobjectNoPer-organization overrides for the legal, support, and social links shown on the auth pages and the error page. termsOfService and privacy are the named legal links; support is an open-ended set of named support contacts/links; social carries the organization’s brand profiles. Empty or omitted fields fall back to the platform defaults.
schedulePauseobjectNoOrganization-wide schedule pause. Only organization admins may set or lift it; a write from anyone else that changes it is refused with 403. Omitted keeps the current pause unchanged; it does not lift the pause.
showAuthCarouselbooleanNoWhether the feature carousel renders on the organization’s auth pages. Omitted keeps the stored value.
themeobjectNoUI theme configured for an organization.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Organization metadata with the merged preferences

application/json

Free-form metadata associated with an organization, including preferences.
FieldTypeRequiredDescription
preferencesobjectYesOrganization-level user experience preferences.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

412
Precondition failed - If-Match does not match the current entity tag of the organization’s preferences, so nothing was written. Read the preferences again and reapply the change.
500
Internal server error

text/plain

Role GET

/api/identity/orgs/{orgId}/roles

Get organization roles

Returns all roles defined for the specified organization — the seeded system roles plus any custom roles the organization has created. This is the canonical, drift-free source for surfacing roles to tooling (role pickers, dropdown defaults, docs): role names are free-form, user-defined strings (User.roleNames and Role.roleName are open arrays, not an enumeration), so clients should list them here rather than hard-code a fixed set.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/roles

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/roles

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/roles

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoGet responses by page size
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
allbooleanNoGet all possible entries
selectorstringNoRole grouping selector such as provider, organization, or team.
teamIdstring (uuid)NoTeam ID used when selector is team.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Roles response

application/json

A paginated list of roles.
FieldTypeRequiredDescription
pageintegerYesCurrent page number (zero-based).
pageSizeintegerYesNumber of roles per page.
totalCountintegerYesTotal number of roles across all pages.
rolesarray of objectYesThe roles of the rolespage.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Role POST

/api/identity/orgs/{orgId}/roles

Upsert organization role

Creates or updates a role for the specified organization.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/roles

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/roles

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/roles

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Request body

application/json Required
Payload for upserting a role. Includes only client-settable fields.
FieldTypeRequiredDescription
descriptionstringYesHuman-readable description of the role.
idstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
roleNamestringYesUnique name of the role.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Role upserted

application/json

Role definition
FieldTypeRequiredDescription
idstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
roleNamestringYesUnique name of the role.
descriptionstringYesHuman-readable description of the role.
createdAtstring (date-time)NoTimestamp when the role was created.
updatedAtstring (date-time)NoTimestamp when the role was last updated.
deletedAtstring (date-time)NoTimestamp when the role was soft-deleted, if applicable.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Role PUT

/api/identity/orgs/{orgId}/roles

Bulk edit role holders

Updates role assignments for multiple users in the organization.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/roles

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/roles

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/roles

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Request body

application/json Required
FieldTypeRequiredDescription
idstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
userIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
usernamestringNoThe username of the user.
emailstring (email)NoEmail address of the user.
firstNamestringNoFirst name of the user.
lastNamestringNoLast name of the user.
statusstringNoCurrent status of the user.
roleNamesarray of stringNoRole names currently or newly assigned to the user.
createdAtstring (date-time)NoTimestamp when the user was created.
updatedAtstring (date-time)NoTimestamp when the user was last updated.
deletedAtstring (date-time)NoTimestamp when the user was soft-deleted, if applicable.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Role holders updated
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Role GET

/api/identity/orgs/{orgId}/roles/{roleId}/keychains

Get keychains for role

Returns all keychains assigned to the specified role.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/roles/{roleId}/keychains

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/roles/{roleId}/keychains

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/roles/{roleId}/keychains

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID
roleIdstring (uuid)YesRole ID

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoGet responses by page size
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Keychains response

application/json

FieldTypeRequiredDescription
pageintegerYesNo description provided.
page_sizeintegerYesNo description provided.
total_countintegerYesNo description provided.
keychainsarray of objectYesThe keychains of the keychainpage.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Role POST

/api/identity/orgs/{orgId}/roles/{roleId}/keychains/{keychainId}

Assign keychain to role

Associates a keychain with the specified role.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/roles/{roleId}/keychains/{keychainId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/roles/{roleId}/keychains/{keychainId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/roles/{roleId}/keychains/{keychainId}

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID
roleIdstring (uuid)YesRole ID
keychainIdstring (uuid)YesKeychain ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Keychain assigned to role
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Role DELETE

/api/identity/orgs/{orgId}/roles/{roleId}/keychains/{keychainId}

Unassign keychain from role

Removes the association between a keychain and a role.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/roles/{roleId}/keychains/{keychainId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/roles/{roleId}/keychains/{keychainId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/roles/{roleId}/keychains/{keychainId}

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID
roleIdstring (uuid)YesRole ID
keychainIdstring (uuid)YesKeychain ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Keychain unassigned from role
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Team GET

/api/identity/orgs/{orgId}/teams

Get all teams for an organization

Gets all teams within an organization

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/teams

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/teams

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/teams

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Query parameters

NameTypeRequiredDescription
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Teams

application/json

Paginated list of teams
FieldTypeRequiredDescription
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
teamsarray of objectNoThe teams of the teampage.
totalCountintegerNoTotal number of items available.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Team POST

/api/identity/orgs/{orgId}/teams

Create a team

Creates a new team within an organization

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/teams

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/teams

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/teams

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Request body

application/json Required
Body for creating a team
Payload for creating a new team
FieldTypeRequiredDescription
descriptionstringNoA detailed description of the team’s purpose and responsibilities.
metadataobjectNoAdditional client-supplied metadata for the team.
namestringYesTeam name. Provide a meaningful name that represents this team.
notifyTeamUpdatebooleanNoWhether to notify team members when the team is created or updated.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Created team

application/json

A Team is a group of one or more users. Teams are often used as a grouping mechanism for assigning permissions, whether in the context of an organization, a workspace, or some other domain within Meshery. Learn more at https://docs.meshery.io/concepts/logical/teams
FieldTypeRequiredDescription
idstring (uuid)YesTeam ID
namestringYesTeam name
descriptionstringNoTeam description
ownerstring (uuid)NoUser ID of the owner of the team
metadataobjectNoAdditional metadata for the team
createdAtstring (date-time)YesTimestamp when the team was created.
updatedAtstring (date-time)YesTimestamp when the team was last updated.
deletedAtstring (date-time)NoTimestamp when the team was soft-deleted, if applicable.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Team GET

/api/identity/orgs/{orgId}/teams/{teamId}

Get a team by ID

Gets a team by its ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/teams/{teamId}

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID
teamIdstring (uuid)YesTeam ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Team

application/json

A Team is a group of one or more users. Teams are often used as a grouping mechanism for assigning permissions, whether in the context of an organization, a workspace, or some other domain within Meshery. Learn more at https://docs.meshery.io/concepts/logical/teams
FieldTypeRequiredDescription
idstring (uuid)YesTeam ID
namestringYesTeam name
descriptionstringNoTeam description
ownerstring (uuid)NoUser ID of the owner of the team
metadataobjectNoAdditional metadata for the team
createdAtstring (date-time)YesTimestamp when the team was created.
updatedAtstring (date-time)YesTimestamp when the team was last updated.
deletedAtstring (date-time)NoTimestamp when the team was soft-deleted, if applicable.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Organization Organizations POST

/api/identity/orgs/{orgId}/teams/{teamId}

Add team to organization or soft delete team

Adds a team to an organization. If request body contains action=delete, tombstones a team by setting its deletedAt timestamp. The team’s organization mapping remains intact.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/teams/{teamId}

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID.
teamIdstring (uuid)YesTeam ID.

Request body

application/json Optional
Optional action payload for POST on /api/identity/orgs/{orgId}/teams/{teamId}.
FieldTypeRequiredDescription
actionstringNoInternal action to perform on the team resource.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Team added to organization or team tombstoned

application/json

object

Paginated list of team-organization mappings.
FieldTypeRequiredDescription
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
teamsOrganizationsMappingarray of objectNoTeam-organization mapping entries.
totalCountintegerNoTotal number of items across all pages.

object

Paginated list of teams.
FieldTypeRequiredDescription
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
teamsarray of objectNoTeams in this page.
totalCountintegerNoTotal number of items across all pages.
400
Bad request
401
Unauthorized
403
Forbidden

text/plain

404
Not found
500
Internal server error
Team PUT

/api/identity/orgs/{orgId}/teams/{teamId}

Update a team

Updates a team’s information

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/teams/{teamId}

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID
teamIdstring (uuid)YesTeam ID

Request body

application/json Required
Body for updating a team
Payload for updating an existing team
FieldTypeRequiredDescription
descriptionstringNoUpdated team description
namestringNoUpdated team name

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Updated team

application/json

A Team is a group of one or more users. Teams are often used as a grouping mechanism for assigning permissions, whether in the context of an organization, a workspace, or some other domain within Meshery. Learn more at https://docs.meshery.io/concepts/logical/teams
FieldTypeRequiredDescription
idstring (uuid)YesTeam ID
namestringYesTeam name
descriptionstringNoTeam description
ownerstring (uuid)NoUser ID of the owner of the team
metadataobjectNoAdditional metadata for the team
createdAtstring (date-time)YesTimestamp when the team was created.
updatedAtstring (date-time)YesTimestamp when the team was last updated.
deletedAtstring (date-time)NoTimestamp when the team was soft-deleted, if applicable.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Team DELETE

/api/identity/orgs/{orgId}/teams/{teamId}

Delete a team

Deletes a team by its ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/teams/{teamId}

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID
teamIdstring (uuid)YesTeam ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Team deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Organization Organizations POST

/api/identity/orgs/{orgId}/teams/{teamId}/remove

Remove team from organization

Removes (unassigns) a team from an organization.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}/remove

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}/remove

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/teams/{teamId}/remove

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID.
teamIdstring (uuid)YesTeam ID.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Team removed from organization

application/json

Paginated list of team-organization mappings.
FieldTypeRequiredDescription
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
teamsOrganizationsMappingarray of objectNoTeam-organization mapping entries.
totalCountintegerNoTotal number of items across all pages.
400
Bad request
401
Unauthorized
403
Forbidden

text/plain

404
Not found
500
Internal server error
Team GET

/api/identity/orgs/{orgId}/teams/{teamId}/users

Get users that are not in a team

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}/users

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}/users

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/teams/{teamId}/users

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID
teamIdstring (uuid)YesTeam ID

Query parameters

NameTypeRequiredDescription
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Users not currently in the team

application/json

Paginated list of team members.
FieldTypeRequiredDescription
dataarray of objectNoThe data of the teammemberspage.
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
totalCountintegerNoTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Team POST

/api/identity/orgs/{orgId}/teams/{teamId}/users/{userId}

Add a user to a team

Assigns a user to a team

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}/users/{userId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}/users/{userId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/teams/{teamId}/users/{userId}

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID
teamIdstring (uuid)YesTeam ID
userIdstringYesUser ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
User added to team

application/json

Join row between users and teams. The schema name is UsersTeamsMapping (rather than TeamsUsersMapping) so that pop’s tableize default produces the live DB table name users_teams_mappings, eliminating the need for an explicit TableName() helper on the generated Go struct.
FieldTypeRequiredDescription
createdAtstring (date-time)NoTimestamp when the mapping was created.
deletedAtstring (date-time)NoTimestamp when the mapping was soft-deleted, if applicable.
idstring (uuid)NoNo description provided.
roleIdstring (uuid)NoOptional role assigned to this team membership. Nullable because a membership may exist without an explicit role (e.g., team-admin assignments are stamped on insert; non-owner adds may leave role_id null until a role is assigned). References roles.id.
teamIdstring (uuid)NoTeam ID
updatedAtstring (date-time)NoTimestamp when the mapping was last updated.
userIdstring (uuid)NoUser ID
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Team DELETE

/api/identity/orgs/{orgId}/teams/{teamId}/users/{userId}

Remove a user from a team

Unassigns a user from a team

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}/users/{userId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/teams/{teamId}/users/{userId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/teams/{teamId}/users/{userId}

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID
teamIdstring (uuid)YesTeam ID
userIdstringYesUser ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
User removed from team
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

User GET

/api/identity/orgs/{orgId}/users

Get organization users

Returns organization users, optionally filtered by team membership.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/users

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/users

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/users

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoGet responses by page size
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
filterstringNoGet filtered reponses
teamIdstring (uuid)NoOptional team filter when listing organization users

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Paginated list of organization users

application/json

Paginated list of users with organization and team role context
FieldTypeRequiredDescription
dataarray of objectNoThe data of the userspageforadmin.
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
totalCountintegerNoTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Invitation POST

/api/identity/orgs/{orgId}/users/invite

Invite users to an organization

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/users/invite

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/users/invite

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/users/invite

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesThe ID of the organization.

Request body

application/json Required

Schema: object

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Invitation request accepted

application/json

400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Key Users GET

/api/identity/orgs/{orgId}/users/keys

Get User Keys

Get all keys based on roles assigned to user

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/users/keys

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/users/keys

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/users/keys

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Returns user keys based on roles assigned to user

application/json

A paginated list of authorization keys.
FieldTypeRequiredDescription
pageintegerYesZero-based page index returned in this response.
pageSizeintegerYesMaximum number of items returned on each page.
totalCountintegerYesTotal number of items across all pages.
keysarray of objectYesKeys returned on the current page.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

User GET

Search users within an organization scope

Searches user accounts on behalf of an organization context and returns the SearchableUser collaboration projection. A blank search returns an empty page.

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/users/search

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/users/search

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/users/search

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
filterstringNoGet filtered reponses

Returned data

Status codes, content types, and response schemas returned by this endpoint.

200
Paginated list of matching users in the searchable projection

application/json

Paginated list of users in the searchable collaboration projection
FieldTypeRequiredDescription
dataarray of objectYesMatching user records for the requested page.
pageintegerYesCurrent page number of the result set.
pageSizeintegerYesNumber of items per page.
totalCountintegerYesTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Organization Organizations POST

/api/identity/orgs/{orgId}/users/{userId}

Add user to organization

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/users/{userId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/users/{userId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/users/{userId}

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID.
userIdstring (uuid)YesUser ID.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
User added to organization

application/json

400
Invalid request body or request param

text/plain

401
Unauthorized
403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error
Organization Organizations DELETE

/api/identity/orgs/{orgId}/users/{userId}

Remove user from organization

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/orgs/{orgId}/users/{userId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/orgs/{orgId}/users/{userId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/orgs/{orgId}/users/{userId}

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID.
userIdstring (uuid)YesUser ID.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
User removed from organization
401
Unauthorized
403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error
Role POST

/api/identity/roles

Add role holder

Assigns a role to a user identified by email.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/roles

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/roles

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/roles

Request body

application/json Required
Request body for assigning a role to a user.
FieldTypeRequiredDescription
emailstring (email)YesEmail of the user to assign roles to.
roleNamesarray of stringYesList of role names to assign.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Role holder added
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Role DELETE

/api/identity/roles/{roleId}

Delete role

Removes a role assignment by ID.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/roles/{roleId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/roles/{roleId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/roles/{roleId}

Parameters

Path parameters

NameTypeRequiredDescription
roleIdstring (uuid)YesRole ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Role deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Team GET

/api/identity/teams/{teamId}/users

Get all users in a team

Gets all users that belong to a team

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/teams/{teamId}/users

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/teams/{teamId}/users

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/teams/{teamId}/users

Parameters

Path parameters

NameTypeRequiredDescription
teamIdstring (uuid)YesTeam ID

Query parameters

NameTypeRequiredDescription
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Team members with their roles

application/json

Paginated list of team members.
FieldTypeRequiredDescription
dataarray of objectNoThe data of the teammemberspage.
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
totalCountintegerNoTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Token GET

/api/identity/tokens

Get tokens

Retrieves tokens associated with the authenticated user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/tokens

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/tokens

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/tokens

Parameters

Query parameters

NameTypeRequiredDescription
isOauthbooleanNoWhether to retrieve OAuth-backed sessions instead of API tokens.
purposestringNoToken purpose. Tokens are minted with this purpose on generate. On list, only tokens whose purpose is exactly this value (case-sensitive, not a substring match) are returned; omit it to list every purpose.
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Tokens response

application/json

A paginated list of tokens.
FieldTypeRequiredDescription
tokensarray of objectYesTokens returned on the current page.
totalCountintegerYesTotal number of tokens across all pages.
pageintegerYesCurrent page number (zero-based).
pageSizeintegerYesNumber of tokens per page.
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Token POST

/api/identity/tokens

Generate token

Generates a token for the authenticated user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/tokens

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/tokens

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/tokens

Parameters

Query parameters

NameTypeRequiredDescription
namestringYesName of the token.
purposestringNoToken purpose. Tokens are minted with this purpose on generate. On list, only tokens whose purpose is exactly this value (case-sensitive, not a substring match) are returned; omit it to list every purpose.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Token generated

application/json

A paginated list of tokens.
FieldTypeRequiredDescription
tokensarray of objectYesTokens returned on the current page.
totalCountintegerYesTotal number of tokens across all pages.
pageintegerYesCurrent page number (zero-based).
pageSizeintegerYesNumber of tokens per page.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Token DELETE

/api/identity/tokens

Delete token

Deletes a specific token for the authenticated user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/tokens

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/tokens

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/tokens

Parameters

Query parameters

NameTypeRequiredDescription
tokenIdstring (uuid)YesID of the token to delete.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Token deleted

application/json

A paginated list of tokens.
FieldTypeRequiredDescription
tokensarray of objectYesTokens returned on the current page.
totalCountintegerYesTotal number of tokens across all pages.
pageintegerYesCurrent page number (zero-based).
pageSizeintegerYesNumber of tokens per page.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Token GET

/api/identity/tokens/infinite

Issue indefinite lifetime token

Creates a non-expiring user token for provider admin use cases.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/tokens/infinite

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/tokens/infinite

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/tokens/infinite

Parameters

Query parameters

NameTypeRequiredDescription
userIdstring (uuid)YesUUID of the user to issue the indefinite token for.
providerstringYesAuthentication provider to associate with the indefinite token.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Token generated

application/json

A paginated list of tokens.
FieldTypeRequiredDescription
tokensarray of objectYesTokens returned on the current page.
totalCountintegerYesTotal number of tokens across all pages.
pageintegerYesCurrent page number (zero-based).
pageSizeintegerYesNumber of tokens per page.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Token GET

/api/identity/tokens/{tokenId}

Download token

Downloads a specific token by its ID for use as a local credential file (e.g. a CLI auth file). Gated by the Download Token permission and recorded as a distinct audit event from viewing or listing tokens.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/tokens/{tokenId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/tokens/{tokenId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/tokens/{tokenId}

Parameters

Path parameters

NameTypeRequiredDescription
tokenIdstring (uuid)YesToken ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Token response

application/json

Represents a user-owned API token or OAuth session.
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the token.
ownerstring (uuid)YesUUID of the user who owns the token.
providerstringYesAuthentication provider associated with the token.
accessTokenstringYesAccess token value.
refreshTokenstringNoRefresh token value when applicable.
namestringYesHuman-readable token name.
purposestringYesPurpose for which the token was created.
isOauthbooleanYesWhether this entry represents an OAuth session.
createdAtstring (date-time)YesTimestamp when the token was created.
updatedAtstring (date-time)YesTimestamp when the token was last updated.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

User POST

/api/identity/users/anonymous

Create an anonymous user and issue a session token

Mints a synthetic anonymous user account, registers the calling Meshery instance as a connection, and returns an access token together with the capability document for the anonymous session. Authenticated with the shared anonymous-results publishing token rather than a user JWT.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/anonymous

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/anonymous

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/anonymous

Request body

application/json Required
Payload for creating or updating a connection. organizationId is not a client field. The server assigns it from the session organization.
FieldTypeRequiredDescription
credentialIdstring (uuid)NoAssociated credential ID
credentialSecretobjectNoCredential secret data
idstring (uuid)NoConnection ID
kindstringYesConnection kind
metadataobjectNoConnection metadata
namestringYesConnection name
statusstringYesConnection status
stylesobjectNoVisualization styles for the connection, including svgColor and svgWhite used for UI representation.
subTypestringYesConnection sub-type
typestringYesConnection type

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Anonymous session issued

application/json

Response returned after minting an anonymous user session: the session access token, the ID of the synthetic anonymous user, and the capability document for the session.
FieldTypeRequiredDescription
accessTokenstringYesJWT access token for the anonymous session.
capabilityobjectNoCapability document for the anonymous session. Untyped pending the provider-capabilities schema tracked separately in the identifier-uniformity program.
userIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

500
Internal server error

text/plain

Badge PUT

/api/identity/users/badges

Assign badges to a user

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/badges

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/badges

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/badges

Request body

application/json Required
Payload for assigning a set of badges to a user.
FieldTypeRequiredDescription
badgesarray of stringYesLabels of the badges being assigned to the user.
notifybooleanNoWhen true, send a notification to the user about the new badge assignment.
userIdstring (uuid)YesID of the user to receive the badges.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Badge assignment result

application/json

400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

User POST

/api/identity/users/notify/comment

Notify users mentioned in a design comment

Sends email notifications to the users mentioned in a design comment, to the comment thread participants, and to the design owner, and records a user event for the comment.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/notify/comment

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/notify/comment

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/notify/comment

Request body

application/json Required
Request body for notifying users about a design comment: the users mentioned in the comment, the thread participants, and the comment messages to include in the notification email.
FieldTypeRequiredDescription
designIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
mentionUsersarray of string (uuid)NoIDs of the users explicitly mentioned in the comment.
messagesarray of objectNoThe comment messages to include in the notification email.
participantsarray of string (uuid)NoIDs of the users participating in the comment thread.
usersOptedOutOfNotificationsarray of string (uuid)NoIDs of the users who opted out of mention notifications.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Mention notifications dispatched
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

500
Internal server error

text/plain

User PUT

/api/identity/users/preferences

Update the current user's preferences

Merges the payload onto the signed-in user’s stored preferences. A key the payload names replaces the stored value; a key it leaves out keeps the stored value. Setting selectedOrganizationId switches the organization the user’s session has selected, as Meshery Cloud’s and Meshery’s organization switchers do. Badges are server-owned and are never changed through this operation.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/preferences

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/preferences

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/preferences

Request body

application/json Required
The client-settable fields of Preference for updateUserPreferences. Every field is optional: the server merges the ones present onto the stored preferences and keeps the rest. updatedAt is server-recorded and is not settable.
FieldTypeRequiredDescription
anonymousPerfResultsbooleanNoThe anonymous perf results of the preference.
anonymousUsageStatsbooleanNoThe anonymous usage stats of the preference.
dashboardPreferencesobjectNoThe dashboard preferences of the preference.
grafanaobjectNoNo description provided.
loadTestPrefsobjectNoNo description provided.
meshAdaptersarray of objectNoThe mesh adapters of the preference.
prometheusobjectNoNo description provided.
remoteProviderPreferencesobjectNoThe remote provider preferences of the preference.
selectedOrganizationIdstring (uuid)NoID of the organization to make the session’s selected organization.
selectedWorkspaceForOrganizationsobjectNoThe selected workspace for organizations of the preference.
usersExtensionPreferencesobjectNoThe users extension preferences of the preference.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Preferences updated
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

User GET

/api/identity/users/profile

Get current user profile

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/profile

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/profile

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/profile

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Current user profile and role context

application/json

Represents a user
FieldTypeRequiredDescription
acceptedTermsAtstring (date-time)NoTimestamp when user accepted terms and conditions
avatarUrlstring (uri)NoURL to user’s avatar image
biostringNoUser’s biography or description
countryobjectNoUser’s country information stored as JSONB
createdAtstring (date-time)YesTimestamp when the user record was created
deletedAtstring | null (date-time)YesTimestamp when the user record was soft-deleted (null if not deleted)
emailstring (email)YesUser’s email address
firstLoginTimestring (date-time)NoTimestamp of user’s first login
firstNamestringYesUser’s first name
idstring (uuid)YesUnique identifier for the user
lastLoginTimestring (date-time)YesTimestamp of user’s most recent login
lastNamestringYesUser’s last name
organizationsobjectNoOrganizations the user belongs to with role information
preferencesobjectNoUser preferences stored as JSONB
providerstringYesAuthentication provider (e.g., Google, Github)
regionobjectNoUser’s region information stored as JSONB
roleNamesarray of stringNoNames of the global roles assigned to the user. Free-form, user-generated values sourced from the roles table (role_name is a varchar, not a fixed enumeration); the seeded system roles such as “admin”, “organization admin” and “user” are a subset, not the whole set.
socialsarray of objectNoVarious online profiles associated with the user account
statusstringYesUser account status
teamsobjectNoTeams the user belongs to with role information
updatedAtstring (date-time)YesTimestamp when the user record was last updated
userIdstringYesLegacy IdP-derived identifier. Removed in v1beta3; resolve users by id or email.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

500
Internal server error

text/plain

User GET

/api/identity/users/profile/details

Get profile overview counts for the current user

Returns the aggregate counts shown on the caller’s profile overview: the number of Kubernetes contexts and the number of designs owned by the caller.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/profile/details

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/profile/details

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/profile/details

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Profile overview counts for the caller

application/json

Aggregate counts shown on the current user’s profile overview.
FieldTypeRequiredDescription
k8sCountintegerYesNumber of Kubernetes contexts owned by the user.
patternCountintegerYesNumber of designs owned by the user.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

500
Internal server error

text/plain

User GET

/api/identity/users/profile/{id}

Get user profile by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/profile/{id}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/profile/{id}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/profile/{id}

Parameters

Path parameters

NameTypeRequiredDescription
idstring (uuid)YesUser ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
User profile for the requested ID

application/json

Represents a user
FieldTypeRequiredDescription
acceptedTermsAtstring (date-time)NoTimestamp when user accepted terms and conditions
avatarUrlstring (uri)NoURL to user’s avatar image
biostringNoUser’s biography or description
countryobjectNoUser’s country information stored as JSONB
createdAtstring (date-time)YesTimestamp when the user record was created
deletedAtstring | null (date-time)YesTimestamp when the user record was soft-deleted (null if not deleted)
emailstring (email)YesUser’s email address
firstLoginTimestring (date-time)NoTimestamp of user’s first login
firstNamestringYesUser’s first name
idstring (uuid)YesUnique identifier for the user
lastLoginTimestring (date-time)YesTimestamp of user’s most recent login
lastNamestringYesUser’s last name
organizationsobjectNoOrganizations the user belongs to with role information
preferencesobjectNoUser preferences stored as JSONB
providerstringYesAuthentication provider (e.g., Google, Github)
regionobjectNoUser’s region information stored as JSONB
roleNamesarray of stringNoNames of the global roles assigned to the user. Free-form, user-generated values sourced from the roles table (role_name is a varchar, not a fixed enumeration); the seeded system roles such as “admin”, “organization admin” and “user” are a subset, not the whole set.
socialsarray of objectNoVarious online profiles associated with the user account
statusstringYesUser account status
teamsobjectNoTeams the user belongs to with role information
updatedAtstring (date-time)YesTimestamp when the user record was last updated
userIdstringYesLegacy IdP-derived identifier. Removed in v1beta3; resolve users by id or email.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Invitation GET

/api/identity/users/request

Get signup requests

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/request

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/request

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/request

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pagesizeintegerNoGet responses by pagesize
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
filterstringNoGet filtered reponses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Signup requests page

application/json

Paginated list of signup requests.
FieldTypeRequiredDescription
dataarray of objectNoSignup requests returned on the current page.
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
totalCountintegerNoTotal number of items available.
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Invitation POST

/api/identity/users/request

Create a signup request

Authentication

No authentication required

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/request

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/request

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/request

Request body

application/json Required

Schema: object

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Signup request created

application/json

400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Invitation POST

/api/identity/users/request/approve

Approve a signup request

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/request/approve

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/request/approve

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/request/approve

Parameters

Query parameters

NameTypeRequiredDescription
idstring (uuid)YesThe ID of the signup request being approved or denied.
firstNamestringNoFirst name of the requester.
lastNamestringNoLast name of the requester.
emailstring (email)NoEmail address of the requester.
occupationstringNoOccupation of the requester.
organizationstringNoOrganization of the requester.
rolestringNoRequested role.
formTypestringNoThe signup form variant the request originated from.
statusstringNoStatus to record on the signup request.
taskIdstringNoTracking task identifier associated with the request.
taskLinkstringNoTracking task link associated with the request.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Signup request approved

application/json

400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Invitation POST

/api/identity/users/request/deny

Deny a signup request

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/request/deny

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/request/deny

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/request/deny

Parameters

Query parameters

NameTypeRequiredDescription
idstring (uuid)YesThe ID of the signup request being approved or denied.
firstNamestringNoFirst name of the requester.
lastNamestringNoLast name of the requester.
emailstring (email)NoEmail address of the requester.
occupationstringNoOccupation of the requester.
organizationstringNoOrganization of the requester.
rolestringNoRequested role.
formTypestringNoThe signup form variant the request originated from.
statusstringNoStatus to record on the signup request.
taskIdstringNoTracking task identifier associated with the request.
taskLinkstringNoTracking task link associated with the request.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Signup request denied

application/json

400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Invitation GET

/api/identity/users/request/notification

Get signup request notification summary

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/request/notification

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/request/notification

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/request/notification

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Signup request notification payload

application/json

Notification about the most recent signup request awaiting moderator action, served by getSignupRequestNotification.
FieldTypeRequiredDescription
preProcessedbooleanYesWhether the signup request was automatically processed before moderator review.
signupDataobjectYesThe signup request the notification refers to.
204
No pending signup request notifications
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

User GET

Search users

Searches user accounts by name, username, or email and returns the SearchableUser collaboration projection. Serves authenticated people-picker flows such as sharing a design with other users. A blank search returns an empty page.

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/search

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/search

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/search

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
filterstringNoGet filtered reponses

Returned data

Status codes, content types, and response schemas returned by this endpoint.

200
Paginated list of matching users in the searchable projection

application/json

Paginated list of users in the searchable collaboration projection
FieldTypeRequiredDescription
dataarray of objectYesMatching user records for the requested page.
pageintegerYesCurrent page number of the result set.
pageSizeintegerYesNumber of items per page.
totalCountintegerYesTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

User DELETE

/api/identity/users/self

Delete the caller's own account

Soft-deletes the caller’s Layer5 Cloud user record and hard-deletes the backing identity. When deleteOrganization is true, the caller’s organization is hard-deleted in the same operation, subject to server-side re-validation: the organization must not be the shared Layer5 provider organization, must not have an active paid subscription, and organizationNameConfirmation must match the stored organization name. When the organization shares resources into other surviving organizations, confirmSharedResourceDestruction must also be true. Inputs are passed as query parameters because DELETE request bodies are unreliable across the extension proxy and intermediate HTTP clients.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/self

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/self

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/self

Parameters

Query parameters

NameTypeRequiredDescription
deleteOrganizationbooleanNoWhen true, hard-delete the caller’s organization along with the account. Defaults to false (delete only the account).
organizationIdstring (uuid)NoIdentifier of the organization to hard-delete. Required by the server when deleteOrganization is true.
organizationNameConfirmationstringNoUser-typed organization name. The server re-validates this against the stored organization name when deleteOrganization is true and rejects the request on mismatch.
confirmSharedResourceDestructionbooleanNoExplicit acknowledgement that resources shared into other surviving organizations will be destroyed. Required by the server when the organization’s crossTenantSharedResourceCount is greater than zero.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Account (and organization, when requested) deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

409
Deletion preconditions were not met. Returned when the target organization is the shared Layer5 provider organization, has an active paid subscription, the caller is not its sole active member, the typed organizationNameConfirmation did not match, or destruction of shared resources was required but not confirmed.

text/plain

500
Internal server error

text/plain

User GET

/api/identity/users/self/account-deletion-eligibility

Get account deletion eligibility

Pre-check evaluated before an account self-deletion is confirmed. Reports whether deleting the caller’s account would also require or permit hard-deleting their organization, whether that organization is the shared Layer5 provider organization or carries an active paid subscription, how many of its resources are also shared into other surviving organizations, and the per-resource blast radius of the deletion.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/self/account-deletion-eligibility

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/self/account-deletion-eligibility

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/self/account-deletion-eligibility

Parameters

Query parameters

NameTypeRequiredDescription
organizationIdstring (uuid)NoOrganization to evaluate for deletion alongside the account. When omitted, the caller’s currently selected organization is evaluated.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Account deletion eligibility for the caller

application/json

Pre-check result returned before an account self-deletion is confirmed. Describes whether deleting the caller’s account would also require or permit hard-deleting their organization and quantifies the blast radius. All fields are always present so the client can render the confirmation state deterministically.
FieldTypeRequiredDescription
crossTenantSharedResourceCountintegerYesCount of resources reachable from this organization that are also shared into a different, surviving organization; destroying them affects other tenants. When greater than zero the client must set confirmSharedResourceDestruction to proceed.
hasActivePaidSubscriptionbooleanYesTrue when the organization has an active paid (non-“Personal”/free) plan subscription that must be cancelled before the organization can be hard-deleted.
impactobjectYesPer-resource counts of the objects that would be destroyed when an organization is hard-deleted alongside the account.
isProviderOrgbooleanYesTrue when this is the shared Layer5 provider organization, which is never deletable regardless of membership.
isSoleActiveMemberbooleanYesTrue when the caller is the only active member of the organization, so deleting their account would leave the organization without any active members.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationNamestringYesHuman-readable name of the organization evaluated for deletion. The client echoes this value back as organizationNameConfirmation when requesting deletion.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

User GET

/api/identity/users/{userId}/emails

Get email addresses for a user

Returns all email addresses associated with a user account: the single live primary address (mirrored in users.email) and any secondary addresses accumulated from account consolidation or explicit addition.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/{userId}/emails

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/{userId}/emails

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/{userId}/emails

Parameters

Path parameters

NameTypeRequiredDescription
userIdstring (uuid)YesID of the user

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Email addresses associated with the requested user

application/json

FieldTypeRequiredDescription
createdAtstring (date-time)YesNo description provided.
deletedAtstring | null (date-time)NoSQL null Timestamp to handle null values of time.
emailstring (email)YesThe email address
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
isPrimarybooleanYesExactly one live primary address per user; mirrors users.email
sourcestringYesHow this address became associated with the account
updatedAtstring (date-time)YesNo description provided.
userIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
verifiedbooleanYesWhether the address was verified (per Kratos verifiable addresses) at record time
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

User GET

/api/identity/users/{userId}/profile/activity

Get recent activity for a user's public profile

Returns the recent-activity feed shown on a user’s public profile. Accessible without authentication; sensitive event categories are filtered out and email addresses are redacted unless the caller is a provider admin or is viewing their own profile. Pagination beyond the first page requires provider-admin privileges.

Authentication

No authentication required

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/identity/users/{userId}/profile/activity

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/identity/users/{userId}/profile/activity

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/identity/users/{userId}/profile/activity

Parameters

Path parameters

NameTypeRequiredDescription
userIdstring (uuid)YesID of the user

Query parameters

NameTypeRequiredDescription
pageintegerNoZero-based page index of the activity feed.
pageSizeintegerNoNumber of activity entries per page.
pagesizeintegerNoDeprecated lowercase alias of pageSize, kept while existing clients migrate to the canonical camelCase parameter.
orderstringNoGet ordered responses
filterstringNoGet filtered reponses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Recent-activity page for the requested user

application/json

Paginated recent-activity feed for a user’s public profile.
FieldTypeRequiredDescription
activitiesarray of objectNoThe activity entries on the current page.
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
totalCountintegerNoTotal number of items available.
400
Invalid request body or request param

text/plain

500
Internal server error

text/plain

Connection API Connections GET

/api/integrations/connections

Get all connections

Returns a paginated list of connections for the authenticated user with filtering, sorting and pagination support

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/connections

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/connections

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/connections

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoPage number
pageSizeintegerNoNumber of items per page
searchstringNoSearch term
orderstringNoSort order
orgIdstring (uuid)NoOrganization ID to scope the request.
filterstringNoFilter connections (general filter string)
kindarray of stringNoFilter by connection kind (e.g., kubernetes, prometheus, grafana)
statusarray of stringNoFilter by connection status
typearray of stringNoFilter by connection type
namestringNoFilter by connection name (partial match supported)

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Paginated list of connections with summary information

application/json

Represents a page of connections with meta information about connections count
FieldTypeRequiredDescription
connectionsarray of objectYesList of connections on this page
totalCountintegerYesTotal number of connections on all pages
pageintegerYesCurrent page number
pageSizeintegerYesNumber of elements per page
statusSummaryobjectNoAggregate count of connections grouped by status
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Connection API Connections POST

/api/integrations/connections

Register a new connection

Register a new connection with credentials. Meshery Cloud reserves the GitHub App connection’s identity (name GitHub App, sub_type git): only its GitHub authorization flow creates that connection, so a request naming it is refused with a 409 MeshKit error that names the reserved GitHub App connection identity.

Every connection belongs to exactly one organization. The server assigns organizationId from the session (X-Current-Orgid, then the caller’s selected organization) and does not accept it in the body. When the session names none, the server may use the caller’s only organization (Meshery Cloud: the only live organization the caller belongs to, else the only one of those the caller owns); it must not guess between several, and answers 400 instead.

Desktop registration uses this shared operation, but kind desktop is implemented by Cloud: a server that does not support it rejects a desktop body with 400. The heartbeat and deregistration routes are Cloud-only. A client desktop app install registers itself on every connect to Cloud, sign-in included, with kind desktop, type platform, sub_type management, status connected, and metadata matching DesktopConnectionMetadata. Servers implementing this contract must take the organization from the X-Current-Orgid header, refuse a desktop registration without it with 400, and refuse a caller who is not a live member of that organization with 403. They must deduplicate on (organization, owner, metadata.installationId): registering the same install again updates that connection and returns 200, while a new connection returns 201. A desktop body whose metadata lacks installationId is refused with 400. Installs on one computer share metadata.computerId, so a server can group them by computer. The kind names the connection type, never the product that runs on the machine.

A desktop registration whose metadata.clientName and metadata.appVersion fall below the server’s minimum version for that client is refused with 426 and a ClientUpgradeRequiredError body; the connection, when it exists, is set to maintenance. Servers must link the API token that authenticated the registration to the connection (metadata.tokenId, server-written) and revoke that token when the connection is deregistered or deleted. When a later registration of the same connection authenticates with a different token, the server revokes the token previously linked to it. Registrations beyond the organization’s device limit are accepted; the organization is flagged through the capabilities document’s session.deviceUsage instead.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/connections

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/connections

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/connections

Parameters

Header parameters

NameTypeRequiredDescription
X-Current-Orgidstring (uuid)NoSession organization. The server assigns Connection.organizationId from this header when it is present, and from the caller’s selected organization when it is absent. Kind desktop requires the header: a desktop registration without it is refused with 400.

Request body

application/json Required
Payload for creating or updating a connection. organizationId is not a client field. The server assigns it from the session organization.
FieldTypeRequiredDescription
credentialIdstring (uuid)NoAssociated credential ID
credentialSecretobjectNoCredential secret data
idstring (uuid)NoConnection ID
kindstringYesConnection kind
metadataobjectNoConnection metadata
namestringYesConnection name
statusstringYesConnection status
stylesobjectNoVisualization styles for the connection, including svgColor and svgWhite used for UI representation.
subTypestringYesConnection sub-type
typestringYesConnection type

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Existing desktop connection for this machine updated

application/json

Meshery Connections are managed and unmanaged resources that either through discovery or manual entry are tracked by Meshery. Learn more at https://docs.meshery.io/concepts/logical/connections
FieldTypeRequiredDescription
idstring (uuid)YesConnection ID
namestringYesConnection Name
descriptionstringNoHuman-readable description of the connection and its purpose.
urlstring (uri)NoURL of the remote resource this connection points to (e.g. the Helm repository URL, the Kubernetes API server endpoint, the Grafana instance URL).
credentialIdstring (uuid)NoAssociated Credential ID
typestringYesConnection Type (platform, telemetry, collaboration)
subTypestringYesConnection Subtype (cloud, identity, metrics, chat, git, orchestration)
kindstringYesConnection Kind (meshery, kubernetes, prometheus, grafana, gke, aws, azure, slack, github, desktop)
modelReferenceobjectNoReference to the specific registered model to which the component belongs and from which model version, category, and other properties may be referenced. Learn more at https://docs.meshery.io/concepts/models
connectionSchemaobjectNoSchema for the connection
credentialSchemaobjectNoSchema for the credential Associated with the connection
metadataobjectNoAdditional connection metadata
statusstringYesConnection Status
ownerstring (uuid)NoUser ID who owns this connection
createdAtstring (date-time)NoTimestamp when the connection was created.
updatedAtstring (date-time)NoTimestamp when the connection was last updated.
deletedAtstring | null (date-time)NoTimestamp when the connection was soft-deleted, if applicable.
environmentsarray of objectNoAssociated environments for this connection
schemaVersionstringYesSpecifies the version of the schema used for the definition.
stylesobjectNoVisualization styles for the connection, including svgColor and svgWhite used for UI representation.
transitionMapobjectNoMap describing the connection state machine. Each key is a current connection status and its value is the list of states the connection may transition to from that status, along with a description of each transition.
organizationIdstring (uuid)YesThe organization the connection belongs to. The server sets it from the session organization (X-Current-Orgid, or the caller’s selected organization when that header is absent) when the connection is registered, and keeps it on later updates. Never accepted from clients on connection write payloads. Not marked readOnly: RegistrantData inlines this entity into registry registration requests, and readOnly there drops the connection field from the generated RTK client. A value sent on that inlined connection is ignored. With the owner and metadata.installationId, it is the deduplication key for desktop connections.
201
Connection registered

application/json

Meshery Connections are managed and unmanaged resources that either through discovery or manual entry are tracked by Meshery. Learn more at https://docs.meshery.io/concepts/logical/connections
FieldTypeRequiredDescription
idstring (uuid)YesConnection ID
namestringYesConnection Name
descriptionstringNoHuman-readable description of the connection and its purpose.
urlstring (uri)NoURL of the remote resource this connection points to (e.g. the Helm repository URL, the Kubernetes API server endpoint, the Grafana instance URL).
credentialIdstring (uuid)NoAssociated Credential ID
typestringYesConnection Type (platform, telemetry, collaboration)
subTypestringYesConnection Subtype (cloud, identity, metrics, chat, git, orchestration)
kindstringYesConnection Kind (meshery, kubernetes, prometheus, grafana, gke, aws, azure, slack, github, desktop)
modelReferenceobjectNoReference to the specific registered model to which the component belongs and from which model version, category, and other properties may be referenced. Learn more at https://docs.meshery.io/concepts/models
connectionSchemaobjectNoSchema for the connection
credentialSchemaobjectNoSchema for the credential Associated with the connection
metadataobjectNoAdditional connection metadata
statusstringYesConnection Status
ownerstring (uuid)NoUser ID who owns this connection
createdAtstring (date-time)NoTimestamp when the connection was created.
updatedAtstring (date-time)NoTimestamp when the connection was last updated.
deletedAtstring | null (date-time)NoTimestamp when the connection was soft-deleted, if applicable.
environmentsarray of objectNoAssociated environments for this connection
schemaVersionstringYesSpecifies the version of the schema used for the definition.
stylesobjectNoVisualization styles for the connection, including svgColor and svgWhite used for UI representation.
transitionMapobjectNoMap describing the connection state machine. Each key is a current connection status and its value is the list of states the connection may transition to from that status, along with a description of each transition.
organizationIdstring (uuid)YesThe organization the connection belongs to. The server sets it from the session organization (X-Current-Orgid, or the caller’s selected organization when that header is absent) when the connection is registered, and keeps it on later updates. Never accepted from clients on connection write payloads. Not marked readOnly: RegistrantData inlines this entity into registry registration requests, and readOnly there drops the connection field from the generated RTK client. A value sent on that inlined connection is ignored. With the owner and metadata.installationId, it is the deduplication key for desktop connections.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

409
Conflict

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
426
The client’s version is below the provider’s minimum for that client. The client must update before it can register or keep a connection alive; the body names the minimum and where to get an update.

application/json

Body of a 426 answer: a MeshKit error sentence plus the client’s compatibility, so the client can show the minimum and where to update.
FieldTypeRequiredDescription
codestringNoMeshKit error code allocated by the emitting service; not a stable part of this contract.
compatibilityobjectYesWhether a client application’s version meets the provider’s minimum for that client. A client whose compatible is false must update before it registers or keeps a connection alive; the provider answers those calls with 426. A client the provider has no minimum for is compatible and has no minimumVersion.
errorstringYesThe sentence the caller is shown.
429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Connection API Connections GET

/api/integrations/connections/desktop

List the organization's desktop connections

Returns every live desktop connection in the session organization, whoever registered it, as a summary: id, name, kind, owner, status, organizationId and lastSeenAt only. Any live member of the organization may read it, so members can see which computers share its work; a guest session cannot. Servers must never include the connection’s credential, metadata (beyond lastSeenAt), URL or description here: the full connection stays readable only by its owner through getConnections. status follows the heartbeat rule of recordConnectionHeartbeat (a desktop connection silent for 3 minutes reads disconnected). A caller who is not a live member of the session organization receives 404.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/connections/desktop

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/connections/desktop

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/connections/desktop

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoPage number
pageSizeintegerNoNumber of items per page
ownerstring (uuid)NoOnly connections registered by this user.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Desktop connections of the organization

application/json

Page of connection summaries.
FieldTypeRequiredDescription
connectionsarray of objectYesConnection summaries on this page.
totalCountintegerYesTotal number of connections on all pages.
pageintegerYesCurrent page number.
pageSizeintegerYesNumber of elements per page.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Connection API Connections DELETE

/api/integrations/connections/desktop/{installationId}

Deregister a desktop app install

Delete the caller’s desktop connection whose metadata.installationId matches, as a desktop app install does on sign-out or uninstall. Servers implementing this contract must scope the deletion to the caller: a connection registered by another user is not found. Servers must revoke the API token linked to each deleted connection (metadata.tokenId).

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/connections/desktop/{installationId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/connections/desktop/{installationId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/connections/desktop/{installationId}

Parameters

Path parameters

NameTypeRequiredDescription
installationIdstringYesInstallation identifier from metadata.installationId.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Desktop connection deleted
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Connection API Connections GET

/api/integrations/connections/kubernetes/{connectionId}/context

Get Kubernetes context

Get Kubernetes context for a specific connection

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/connections/kubernetes/{connectionId}/context

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/connections/kubernetes/{connectionId}/context

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/connections/kubernetes/{connectionId}/context

Parameters

Path parameters

NameTypeRequiredDescription
connectionIdstring (uuid)YesConnection ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Kubernetes context

application/json

Paginated list of Kubernetes contexts.
FieldTypeRequiredDescription
contextsarray of objectYesKubernetes contexts in this page.
pageintegerYesZero-based page index returned in this response.
pageSizeintegerYesMaximum number of items returned on each page.
totalCountintegerYesTotal number of items across all pages.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Connection API Connections DELETE

/api/integrations/connections/meshery/{mesheryServerId}

Delete Meshery instance connection

Delete a Meshery server connection by server ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/connections/meshery/{mesheryServerId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/connections/meshery/{mesheryServerId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/connections/meshery/{mesheryServerId}

Parameters

Path parameters

NameTypeRequiredDescription
mesheryServerIdstring (uuid)YesMeshery server ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Meshery connection deleted
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Connection API Connections GET

/api/integrations/connections/{connectionId}

Get connection by ID

Returns a specific connection by its ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/connections/{connectionId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/connections/{connectionId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/connections/{connectionId}

Parameters

Path parameters

NameTypeRequiredDescription
connectionIdstring (uuid)YesConnection ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Connection details

application/json

Meshery Connections are managed and unmanaged resources that either through discovery or manual entry are tracked by Meshery. Learn more at https://docs.meshery.io/concepts/logical/connections
FieldTypeRequiredDescription
idstring (uuid)YesConnection ID
namestringYesConnection Name
descriptionstringNoHuman-readable description of the connection and its purpose.
urlstring (uri)NoURL of the remote resource this connection points to (e.g. the Helm repository URL, the Kubernetes API server endpoint, the Grafana instance URL).
credentialIdstring (uuid)NoAssociated Credential ID
typestringYesConnection Type (platform, telemetry, collaboration)
subTypestringYesConnection Subtype (cloud, identity, metrics, chat, git, orchestration)
kindstringYesConnection Kind (meshery, kubernetes, prometheus, grafana, gke, aws, azure, slack, github, desktop)
modelReferenceobjectNoReference to the specific registered model to which the component belongs and from which model version, category, and other properties may be referenced. Learn more at https://docs.meshery.io/concepts/models
connectionSchemaobjectNoSchema for the connection
credentialSchemaobjectNoSchema for the credential Associated with the connection
metadataobjectNoAdditional connection metadata
statusstringYesConnection Status
ownerstring (uuid)NoUser ID who owns this connection
createdAtstring (date-time)NoTimestamp when the connection was created.
updatedAtstring (date-time)NoTimestamp when the connection was last updated.
deletedAtstring | null (date-time)NoTimestamp when the connection was soft-deleted, if applicable.
environmentsarray of objectNoAssociated environments for this connection
schemaVersionstringYesSpecifies the version of the schema used for the definition.
stylesobjectNoVisualization styles for the connection, including svgColor and svgWhite used for UI representation.
transitionMapobjectNoMap describing the connection state machine. Each key is a current connection status and its value is the list of states the connection may transition to from that status, along with a description of each transition.
organizationIdstring (uuid)YesThe organization the connection belongs to. The server sets it from the session organization (X-Current-Orgid, or the caller’s selected organization when that header is absent) when the connection is registered, and keeps it on later updates. Never accepted from clients on connection write payloads. Not marked readOnly: RegistrantData inlines this entity into registry registration requests, and readOnly there drops the connection field from the generated RTK client. A value sent on that inlined connection is ignored. With the owner and metadata.installationId, it is the deduplication key for desktop connections.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Connection API Connections PUT

/api/integrations/connections/{connectionId}

Update a connection

Update an existing connection. Meshery Cloud refuses, with a 409 MeshKit error naming the reserved identity, an edit that would give a connection the GitHub App connection’s identity (name GitHub App, sub_type git). On the GitHub App connection itself, the server-written metadata keys installations, installationId and installationsVerifiedAt are carried forward from the stored row: a client edit can neither set nor erase them (other metadata keys are written as sent). Their shape is GithubConnectionMetadata in the v1beta3 github construct. organizationId is not in the body. The server keeps the organization assigned at registration.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/connections/{connectionId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/connections/{connectionId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/connections/{connectionId}

Parameters

Path parameters

NameTypeRequiredDescription
connectionIdstring (uuid)YesConnection ID

Request body

application/json Required
Payload for creating or updating a connection. organizationId is not a client field. The server assigns it from the session organization.
FieldTypeRequiredDescription
credentialIdstring (uuid)NoAssociated credential ID
credentialSecretobjectNoCredential secret data
idstring (uuid)NoConnection ID
kindstringYesConnection kind
metadataobjectNoConnection metadata
namestringYesConnection name
statusstringYesConnection status
stylesobjectNoVisualization styles for the connection, including svgColor and svgWhite used for UI representation.
subTypestringYesConnection sub-type
typestringYesConnection type

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Connection updated

application/json

Meshery Connections are managed and unmanaged resources that either through discovery or manual entry are tracked by Meshery. Learn more at https://docs.meshery.io/concepts/logical/connections
FieldTypeRequiredDescription
idstring (uuid)YesConnection ID
namestringYesConnection Name
descriptionstringNoHuman-readable description of the connection and its purpose.
urlstring (uri)NoURL of the remote resource this connection points to (e.g. the Helm repository URL, the Kubernetes API server endpoint, the Grafana instance URL).
credentialIdstring (uuid)NoAssociated Credential ID
typestringYesConnection Type (platform, telemetry, collaboration)
subTypestringYesConnection Subtype (cloud, identity, metrics, chat, git, orchestration)
kindstringYesConnection Kind (meshery, kubernetes, prometheus, grafana, gke, aws, azure, slack, github, desktop)
modelReferenceobjectNoReference to the specific registered model to which the component belongs and from which model version, category, and other properties may be referenced. Learn more at https://docs.meshery.io/concepts/models
connectionSchemaobjectNoSchema for the connection
credentialSchemaobjectNoSchema for the credential Associated with the connection
metadataobjectNoAdditional connection metadata
statusstringYesConnection Status
ownerstring (uuid)NoUser ID who owns this connection
createdAtstring (date-time)NoTimestamp when the connection was created.
updatedAtstring (date-time)NoTimestamp when the connection was last updated.
deletedAtstring | null (date-time)NoTimestamp when the connection was soft-deleted, if applicable.
environmentsarray of objectNoAssociated environments for this connection
schemaVersionstringYesSpecifies the version of the schema used for the definition.
stylesobjectNoVisualization styles for the connection, including svgColor and svgWhite used for UI representation.
transitionMapobjectNoMap describing the connection state machine. Each key is a current connection status and its value is the list of states the connection may transition to from that status, along with a description of each transition.
organizationIdstring (uuid)YesThe organization the connection belongs to. The server sets it from the session organization (X-Current-Orgid, or the caller’s selected organization when that header is absent) when the connection is registered, and keeps it on later updates. Never accepted from clients on connection write payloads. Not marked readOnly: RegistrantData inlines this entity into registry registration requests, and readOnly there drops the connection field from the generated RTK client. A value sent on that inlined connection is ignored. With the owner and metadata.installationId, it is the deduplication key for desktop connections.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

409
Conflict

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Connection API Connections DELETE

/api/integrations/connections/{connectionId}

Delete a connection

Delete a specific connection. Deleting a connection that has a metadata.tokenId revokes that token.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/connections/{connectionId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/connections/{connectionId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/connections/{connectionId}

Parameters

Path parameters

NameTypeRequiredDescription
connectionIdstring (uuid)YesConnection ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Connection deleted
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Connection API Connections POST

/api/integrations/connections/{connectionId}/heartbeat

Record a connection heartbeat

Mark the caller’s connection as alive. Servers implementing this contract must set metadata.lastSeenAt to the current time and, when the connection is disconnected, set its status back to connected. Servers must report a connection whose metadata.lastSeenAt is older than 3 minutes as disconnected until its next heartbeat. The request has no body, so a heartbeat cannot change anything else about the connection. When the connection’s metadata.clientName and metadata.appVersion, as stored by the latest registration (which every connect makes before its first heartbeat), fall below the server’s minimum version for that client, servers must answer 426 with a ClientUpgradeRequiredError body and set the connection to maintenance instead of recording the heartbeat.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/connections/{connectionId}/heartbeat

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/connections/{connectionId}/heartbeat

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/connections/{connectionId}/heartbeat

Parameters

Path parameters

NameTypeRequiredDescription
connectionIdstring (uuid)YesConnection ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Connection after the heartbeat

application/json

Meshery Connections are managed and unmanaged resources that either through discovery or manual entry are tracked by Meshery. Learn more at https://docs.meshery.io/concepts/logical/connections
FieldTypeRequiredDescription
idstring (uuid)YesConnection ID
namestringYesConnection Name
descriptionstringNoHuman-readable description of the connection and its purpose.
urlstring (uri)NoURL of the remote resource this connection points to (e.g. the Helm repository URL, the Kubernetes API server endpoint, the Grafana instance URL).
credentialIdstring (uuid)NoAssociated Credential ID
typestringYesConnection Type (platform, telemetry, collaboration)
subTypestringYesConnection Subtype (cloud, identity, metrics, chat, git, orchestration)
kindstringYesConnection Kind (meshery, kubernetes, prometheus, grafana, gke, aws, azure, slack, github, desktop)
modelReferenceobjectNoReference to the specific registered model to which the component belongs and from which model version, category, and other properties may be referenced. Learn more at https://docs.meshery.io/concepts/models
connectionSchemaobjectNoSchema for the connection
credentialSchemaobjectNoSchema for the credential Associated with the connection
metadataobjectNoAdditional connection metadata
statusstringYesConnection Status
ownerstring (uuid)NoUser ID who owns this connection
createdAtstring (date-time)NoTimestamp when the connection was created.
updatedAtstring (date-time)NoTimestamp when the connection was last updated.
deletedAtstring | null (date-time)NoTimestamp when the connection was soft-deleted, if applicable.
environmentsarray of objectNoAssociated environments for this connection
schemaVersionstringYesSpecifies the version of the schema used for the definition.
stylesobjectNoVisualization styles for the connection, including svgColor and svgWhite used for UI representation.
transitionMapobjectNoMap describing the connection state machine. Each key is a current connection status and its value is the list of states the connection may transition to from that status, along with a description of each transition.
organizationIdstring (uuid)YesThe organization the connection belongs to. The server sets it from the session organization (X-Current-Orgid, or the caller’s selected organization when that header is absent) when the connection is registered, and keeps it on later updates. Never accepted from clients on connection write payloads. Not marked readOnly: RegistrantData inlines this entity into registry registration requests, and readOnly there drops the connection field from the generated RTK client. A value sent on that inlined connection is ignored. With the owner and metadata.installationId, it is the deduplication key for desktop connections.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

426
The client’s version is below the provider’s minimum for that client. The client must update before it can register or keep a connection alive; the body names the minimum and where to get an update.

application/json

Body of a 426 answer: a MeshKit error sentence plus the client’s compatibility, so the client can show the minimum and where to update.
FieldTypeRequiredDescription
codestringNoMeshKit error code allocated by the emitting service; not a stable part of this contract.
compatibilityobjectYesWhether a client application’s version meets the provider’s minimum for that client. A client whose compatible is false must update before it registers or keeps a connection alive; the provider answers those calls with 426. A client the provider has no minimum for is compatible and has no minimumVersion.
errorstringYesThe sentence the caller is shown.
429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Credential GET

/api/integrations/credentials

Get credentials

Retrieves all credentials belonging to the authenticated user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/credentials

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/credentials

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/credentials

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Credentials response

application/json

A paginated list of credentials.
FieldTypeRequiredDescription
credentialsarray of objectYesThe credentials returned on the current page.
totalCountintegerYesTotal number of credentials across all pages.
pageintegerYesCurrent page number (zero-based).
pageSizeintegerYesNumber of credentials per page.
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Credential POST

/api/integrations/credentials

Save credential

Saves a new credential for the authenticated user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/credentials

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/credentials

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/credentials

Request body

application/json Required
Payload for creating or updating a credential.
FieldTypeRequiredDescription
idstring (uuid)NoExisting credential ID for updates; omit on create.
namestringYesHuman-readable name for the credential.
userIdstring (uuid)NoUUID of the user who owns this credential.
orgOwnerstring (uuid)NoUUID of the organization to designate as the owner of this credential. A caller may supply this field; the server authorizes it against the authenticated principal and rejects the request when that principal may not write for the named organization.
typestringYesCredential type (e.g. token, basic, AWS).
secretobjectNoKey-value pairs containing the sensitive credential data.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Credential saved

application/json

Meshery Credentials store sensitive information such as API keys, tokens, and passwords used by connections to external systems.
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the credential.
namestringYesHuman-readable name for the credential.
userIdstring (uuid)YesUUID of the user who owns this credential.
orgOwnerstring (uuid)NoUUID of the organization designated as the owner of this credential, for credentials that belong to a brand profile rather than to a person. Optional and independent of userId: userId continues to identify the user who created and owns the record, while orgOwner designates the organization the credential is for.
typestringYesCredential type (e.g. token, basic, AWS).
secretobjectNoKey-value pairs containing the sensitive credential data.
createdAtstring (date-time)YesTimestamp when the credential was created.
updatedAtstring (date-time)YesTimestamp when the credential was last updated.
deletedAtstring (date-time)NoTimestamp when the credential was soft-deleted.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Credential PUT

/api/integrations/credentials

Update credential

Updates an existing credential for the authenticated user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/credentials

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/credentials

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/credentials

Request body

application/json Required
Payload for creating or updating a credential.
FieldTypeRequiredDescription
idstring (uuid)NoExisting credential ID for updates; omit on create.
namestringYesHuman-readable name for the credential.
userIdstring (uuid)NoUUID of the user who owns this credential.
orgOwnerstring (uuid)NoUUID of the organization to designate as the owner of this credential. A caller may supply this field; the server authorizes it against the authenticated principal and rejects the request when that principal may not write for the named organization.
typestringYesCredential type (e.g. token, basic, AWS).
secretobjectNoKey-value pairs containing the sensitive credential data.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Credential updated

application/json

Meshery Credentials store sensitive information such as API keys, tokens, and passwords used by connections to external systems.
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the credential.
namestringYesHuman-readable name for the credential.
userIdstring (uuid)YesUUID of the user who owns this credential.
orgOwnerstring (uuid)NoUUID of the organization designated as the owner of this credential, for credentials that belong to a brand profile rather than to a person. Optional and independent of userId: userId continues to identify the user who created and owns the record, while orgOwner designates the organization the credential is for.
typestringYesCredential type (e.g. token, basic, AWS).
secretobjectNoKey-value pairs containing the sensitive credential data.
createdAtstring (date-time)YesTimestamp when the credential was created.
updatedAtstring (date-time)YesTimestamp when the credential was last updated.
deletedAtstring (date-time)NoTimestamp when the credential was soft-deleted.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Credential DELETE

/api/integrations/credentials

Delete credential

Deletes a credential belonging to the authenticated user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/credentials

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/credentials

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/credentials

Parameters

Query parameters

NameTypeRequiredDescription
credentialIdstring (uuid)YesCredential ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Credential deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Credential GET

/api/integrations/credentials/{credentialId}

Get credential by ID

Retrieves a specific credential by its ID.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/credentials/{credentialId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/credentials/{credentialId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/credentials/{credentialId}

Parameters

Path parameters

NameTypeRequiredDescription
credentialIdstring (uuid)YesCredential ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Credential response

application/json

Meshery Credentials store sensitive information such as API keys, tokens, and passwords used by connections to external systems.
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the credential.
namestringYesHuman-readable name for the credential.
userIdstring (uuid)YesUUID of the user who owns this credential.
orgOwnerstring (uuid)NoUUID of the organization designated as the owner of this credential, for credentials that belong to a brand profile rather than to a person. Optional and independent of userId: userId continues to identify the user who created and owns the record, while orgOwner designates the organization the credential is for.
typestringYesCredential type (e.g. token, basic, AWS).
secretobjectNoKey-value pairs containing the sensitive credential data.
createdAtstring (date-time)YesTimestamp when the credential was created.
updatedAtstring (date-time)YesTimestamp when the credential was last updated.
deletedAtstring (date-time)NoTimestamp when the credential was soft-deleted.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

GitHub GET

/api/integrations/github

List the repositories one of the caller's installations can access

Returns one page of the repositories a GitHub App installation can access. id must name one of the caller’s verified GitHub App installations; any other id - another account’s, or one that does not exist - is the same 403, so the route does not reveal which installations exist. 502 means GitHub could not be reached or rejected the request.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/github

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/github

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/github

Parameters

Query parameters

NameTypeRequiredDescription
idstringYesGitHub App installation id; must be one of the caller’s verified installations.
pageintegerNoGet responses by page

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
One page of the installation’s repositories.

application/json

One page of GitHub’s GET /installation/repositories answer, passed through as GitHub returns it (total_count, repositories).
400
Invalid request body or request param

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
502
Bad gateway - an upstream service the operation depends on could not be reached or rejected the request

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
GitHub GET

/api/integrations/github/authorize

Start a trip to GitHub (browser navigation)

Browser navigation, not a data call. Issues a single-use state bound to the signed-in user (consumed once, five-minute lifetime) and redirects to GitHub carrying it: flow=install to the GitHub App’s installation page (derived from the App’s own html_url), flow=authorize to GitHub’s user-authorization page for the App. The UI never links to GitHub directly. Failures redirect to /connect/github/new/<userId>?githubError=<reason>, as the callback does.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/github/authorize

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/github/authorize

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/github/authorize

Parameters

Query parameters

NameTypeRequiredDescription
flowstringYesinstall sends the browser to the GitHub App’s installation page; authorize sends it to GitHub’s user-authorization page for the App.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

302
Redirect to GitHub, or to the connection wizard with a reason.
401
Expired JWT token used or insufficient privilege

text/plain

Design Github GET

/api/integrations/github/branches/{connectionId}

List a repository's branches

Lists the branches of one repository reachable through the caller’s GitHub App connection, with the repository’s default branch, so a client can offer the refs a design’s source can track. Branch order is GitHub’s. connectionId must name the caller’s own live GitHub connection (404 otherwise, with the same body as “no such connection”). 403 means the repository is not reachable through one of the caller’s verified GitHub App installations - the installations GitHub lists for the caller’s own GitHub account when they authorize the App. The refusal is deliberately uniform: the App not being installed on the repository’s account and its being installed there for someone else answer the same body, so the route does not reveal where the App is installed. A distinct 403 whose MeshKit error asks for re-authorization means the caller’s GitHub connection predates verification; re-authorize it (see startGithubAuthorization) before use; 502 means GitHub could not be reached or rejected the request.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/github/branches/{connectionId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/github/branches/{connectionId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/github/branches/{connectionId}

Parameters

Path parameters

NameTypeRequiredDescription
connectionIdstring (uuid)YesID of a GitHub App connection.

Query parameters

NameTypeRequiredDescription
repositorystringYesRepository as <owner>/<repo> (case-insensitive).
pageintegerNoGet responses by page
pageSizeintegerNoNumber of items per page (canonical camelCase form).

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Repository branches page.

application/json

A page of a repository’s branches. GitHub does not report a total, so the page says whether another follows instead of carrying a count.
FieldTypeRequiredDescription
branchesarray of objectYesNo description provided.
defaultBranchstringYesThe repository’s default branch.
hasMorebooleanYesTrue when another page of branches follows.
pageintegerYesZero-based page index served.
pageSizeintegerYesPage size served.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
404
Result not found

text/plain

500
Internal server error

text/plain

502
Bad gateway - an upstream service the operation depends on could not be reached or rejected the request

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
GitHub GET

/api/integrations/github/callback

The GitHub App's callback (browser navigation)

Browser navigation, not a data call. GitHub returns the browser here with the state issued by startGithubAuthorization and a one-time code. A missing, expired, reused or foreign state is refused before the code is exchanged or any connection is touched (githubError=authorization-stale). The server then exchanges the code for a user-to-server token, lists the installations of the App the authorizing GitHub account can access (GitHub’s GET /user/installations) and stores exactly that set on the caller’s GitHub connection - creating it, or updating it in place. An installation_id not in that set is never stored, and a result of zero installations never deletes or replaces an existing connection. Always answers a 302: to /connect/github/verify?githubLogin=true&id=<installation>[&setup_action=update] on success, else to /connect/github/new/<userId>?githubError=<reason>, reason one of authorization-failed, authorization-stale, authorization-unavailable, connection-failed, installation-not-verified, no-installations. The installation_id and setup_action query parameter names are GitHub’s and are kept as GitHub sends them.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/github/callback

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/github/callback

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/github/callback

Parameters

Query parameters

NameTypeRequiredDescription
statestringYesThe single-use state startGithubAuthorization issued.
codestringNoGitHub’s one-time authorization code.
installation_idstringNoThe installation GitHub names on return (GitHub’s parameter name). It is stored only when it is one of the installations GitHub lists for the authorizing account.
setup_actionstringNoGitHub’s setup action (GitHub’s parameter name).

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

302
Redirect to the connection wizard, as described.
401
Expired JWT token used or insufficient privilege

text/plain

Design Designs GET

/api/integrations/github/designs/{connectionId}

List designs imported from GitHub

Returns the designs owned by the GitHub connection’s owner whose location.type is github - every design imported (or refreshed) from GitHub - newest first. The inventory is owner-wide, not scoped to the connection: Meshery Cloud keeps one GitHub App connection per user, and the connection only authorizes the read. Use repository to narrow it. location carries host (github.com//), path and branch (empty = the repository’s default branch). patternFile and sourceContent are not projected. Only the connection’s owner may list it, as only a design’s owner may refresh it: a caller who does not own the connection gets 404 regardless of any all-organizations scope, with the same body as “no such connection”, so private designs are never listed to another user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/github/designs/{connectionId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/github/designs/{connectionId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/github/designs/{connectionId}

Parameters

Path parameters

NameTypeRequiredDescription
connectionIdstring (uuid)YesID of a GitHub App connection.

Query parameters

NameTypeRequiredDescription
repositorystringNoRestrict to one repository, as <owner>/<repo> (case-insensitive).
pageintegerNoGet responses by page
pageSizeintegerNoNumber of items per page (canonical camelCase form).

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Imported designs page.

application/json

Paginated collection of designs.
FieldTypeRequiredDescription
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
patternsarray of objectNoDesigns included on this page of results.
resultTypestringNoOptional discriminator describing which collection the page represents.
totalCountintegerNoTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Design Designs POST

/api/integrations/github/import/{connectionId}

Import files from a GitHub repository as designs

Imports the selected files (a selected directory is walked recursively) from one repository reachable through the caller’s GitHub App connection. Matching is idempotent: a file whose (owner, location.type, location.host, location.path, location.branch) already identifies one of the caller’s designs is handled per onExisting. connectionId must name the caller’s own live GitHub connection (404 otherwise). 403 means the repository is not reachable through one of the caller’s verified GitHub App installations - the installations GitHub lists for the caller’s own GitHub account when they authorize the App. The refusal is deliberately uniform: the App not being installed on the repository’s account and its being installed there for someone else answer the same body, so the route does not reveal where the App is installed. A distinct 403 whose MeshKit error asks for re-authorization means the caller’s GitHub connection predates verification; re-authorize it (see startGithubAuthorization) before use; 502 means GitHub could not be reached or rejected the request. Each imported or updated design records the commit its file was read at in location.commitSha.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/github/import/{connectionId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/github/import/{connectionId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/github/import/{connectionId}

Parameters

Path parameters

NameTypeRequiredDescription
connectionIdstring (uuid)YesID of a GitHub App connection.

Request body

application/json Required
Files to import from one repository and how to treat files that were imported before.
FieldTypeRequiredDescription
namestringYesRepository as <owner>/<repo>.
onExistingstringNoWhat to do with a selected file that already identifies one of the caller’s designs. skip (the default, “import new only”) leaves it untouched and reports it in skippedPaths, so a request that omits onExisting never overwrites an existing design; update refreshes that design in place under the same ID (idempotent import); new imports it again as an additional design.
pathsarray of objectYesSelected tree items, as served by GET /api/integrations/github/scan. The server reads only type and entry.path; the remaining scan fields are accepted and ignored.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Import outcome. Per-file failures are reported in errors, not as a non-2xx status.

application/json

Outcome of a GitHub repository import.
FieldTypeRequiredDescription
errorsarray of objectNoOne Error-severity import event per selected path that failed.
patternsarray of objectNoDesigns created or updated by this import, with sourceContent, patternFile and catalogData omitted.
skippedPathsarray of stringNoRepository-relative paths left untouched because onExisting was skip and a design already imports them.
updatedIdsarray of string (uuid)NoIDs (all also present in patterns) of designs updated in place rather than created.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
404
Result not found

text/plain

500
Internal server error

text/plain

502
Bad gateway - an upstream service the operation depends on could not be reached or rejected the request

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
GitHub POST

/api/integrations/github/install

Commit the Kanvas workflow into repositories

Commits the Kanvas workflow into each requested repository. Every well-formed repository is authorized before anything is written: one repository the caller cannot reach through their verified GitHub App installations refuses the whole request with the uniform 403, and nothing is committed anywhere. A malformed repository identifier is reported per repository (code: 400) and never reaches GitHub. The id query parameter is accepted for compatibility and is not consulted.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/github/install

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/github/install

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/github/install

Parameters

Query parameters

NameTypeRequiredDescription
idstringNoIgnored. Accepted for compatibility; the server resolves the installation itself.

Request body

application/json Required
The repositories to commit the Kanvas workflow into.
FieldTypeRequiredDescription
repositoriesarray of stringYesRepositories as <owner>/<repo>.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
One entry per requested repository.

application/json

One single-key entry per requested repository, keyed by <owner>/<repo>.
400
Invalid request body or request param

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
502
Bad gateway - an upstream service the operation depends on could not be reached or rejected the request

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
GitHub GET

/api/integrations/github/scan

One page of a repository's file tree

Returns one page of a repository’s file tree, as nested tree items. The repository must be reachable through one of the caller’s verified GitHub App installations; otherwise the request is refused with the same uniform 403 as importGithubRepository, which does not reveal where the App is installed. With ref, the tree is read at the commit the ref resolves to. 206 answers a page of a tree that has further pages.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/github/scan

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/github/scan

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/github/scan

Parameters

Query parameters

NameTypeRequiredDescription
namestringYesRepository as <owner>/<repo>.
refstringNoBranch or tag to scan. Empty or omitted scans the repository’s default branch. A ref that names no commit answers 409.
pageintegerNoGet responses by page
pageSizeintegerNoNumber of items per page.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Tree page.

application/json

One page of a repository’s file tree.
FieldTypeRequiredDescription
childrenarray of objectNoThe items under a directory, each shaped as a GithubRepositoryTreeItem.
entryobjectNoGitHub’s tree entry for the item, passed through as GitHub returns it.
idstring (uuid)NoIdentifier of the tree item, for the UI’s tree view.
labelstringNoDisplay name of the file or directory.
typestringNoKind of the tree item, such as a file or a directory.
206
Tree page of a tree that has further pages.

application/json

One page of a repository’s file tree.
FieldTypeRequiredDescription
childrenarray of objectNoThe items under a directory, each shaped as a GithubRepositoryTreeItem.
entryobjectNoGitHub’s tree entry for the item, passed through as GitHub returns it.
idstring (uuid)NoIdentifier of the tree item, for the UI’s tree view.
labelstringNoDisplay name of the file or directory.
typestringNoKind of the tree item, such as a file or a directory.
400
Invalid request body or request param

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
409
Conflict

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
502
Bad gateway - an upstream service the operation depends on could not be reached or rejected the request

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
GitHub GET

/api/integrations/github/status

Whether the caller's GitHub connection is usable

Checks the caller’s GitHub App connection. A connection is usable only when its installations were verified against the caller’s own GitHub account and GitHub confirms the installation it opens on still exists. 403 with a MeshKit error saying the connection must be re-authorized means it predates verification; re-authorize it with startGithubAuthorization (flow=authorize). When GitHub reports the installation the connection opens on removed, that installation is dropped and the connection re-points at its next verified installation, which is checked in turn: 200 when one remains. 404 means the caller has no GitHub connection, or no verified installation remains - in which case the connection is deleted. 502 means GitHub could not confirm either way; the connection is kept.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/github/status

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/github/status

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/github/status

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The connection is verified and its installation exists. No body.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
404
Result not found

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
502
Bad gateway - an upstream service the operation depends on could not be reached or rejected the request

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
GitHub POST

/api/integrations/github/verify/{owner}/{repo}

Whether the Kanvas workflow is already present in a repository

Reports whether the Kanvas workflow is already committed to a repository. The repository’s installation is resolved and authorized by the server; the id query parameter is accepted for compatibility and is not consulted. A repository the caller cannot reach through one of their verified GitHub App installations is refused with the same uniform 403 as importGithubRepository. No request body.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/github/verify/{owner}/{repo}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/github/verify/{owner}/{repo}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/github/verify/{owner}/{repo}

Parameters

Path parameters

NameTypeRequiredDescription
ownerstringYesLogin of the account that owns the repository.
repostringYesRepository name, without its owner.

Query parameters

NameTypeRequiredDescription
idstringNoIgnored. Accepted for compatibility; the server resolves the installation itself.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Workflow presence.

application/json

Whether the Kanvas workflow is already present in a repository.
FieldTypeRequiredDescription
errorstringNoWhy the repository cannot take the workflow.
fileUrlstring (uri)NoURL of the workflow file already present.
statusstringYesok when no workflow is present; error when one is (fileUrl names it) or the check failed (error says why).
400
Invalid request body or request param

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
502
Bad gateway - an upstream service the operation depends on could not be reached or rejected the request

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
Model GET

/api/integrations/meshmodels/models

Get mesh model models

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/meshmodels/models

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/meshmodels/models

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/meshmodels/models

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
searchstringNoFree-text search query applied to model names.
orderstringNoSort order for the result set (e.g. “name asc”).

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Model and capabilities registry entries retrieved.

application/json

Page of mesh models matching the list-endpoint query.
FieldTypeRequiredDescription
modelsarray of objectNoThe models matching the list-endpoint query.
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
totalCountintegerNoTotal number of items available.
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error
Support POST

/api/integrations/support

Submit a support request

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/integrations/support

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/integrations/support

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/integrations/support

Request body

application/json Required
Payload for submitting a help-and-support request.
FieldTypeRequiredDescription
messagestringYesDetailed description of the issue or question.
scopestringNoCategory that best represents the nature of the inquiry.
subjectstringYesConcise and descriptive title for the support request.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Support request submitted

application/json

FieldTypeRequiredDescription
messagestringNoNo description provided.
400
Invalid request format
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error
Ledger POST

/api/ledgers/{ledger}/claims

Claim a ledger key if absent

Atomically gives entryKey to the connection connectionId, which must be the caller’s own live connection in the session organization; any other connection is 404. When the key is not in the ledger, the entry is created already claimed and returned with 201. When it is recorded but unclaimed, it is claimed and returned with 200. When connectionId already holds it, the call is a replay and returns the entry with 200. When another live connection holds it, the call is refused with 409 and nothing changes. A claim ends when the entry is deleted or when the holding connection is deleted; a key whose holder was deleted can be claimed again.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/ledgers/{ledger}/claims

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/ledgers/{ledger}/claims

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/ledgers/{ledger}/claims

Parameters

Path parameters

NameTypeRequiredDescription
ledgerstringYesName of the ledger, for example processed-profiles.

Request body

application/json Required
Claim-if-absent payload giving a key to one connection.
FieldTypeRequiredDescription
connectionIdstring (uuid)YesID of the connection taking the key: the caller’s own live connection in the session organization (for example the connection a desktop client registered for its machine).
entryKeystringYesKey to claim.
valueobjectNoValue stored when the claim creates the entry; ignored when the entry already exists.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The caller’s connection now holds the existing entry

application/json

Server-returned ledger entry. An organization keeps any number of named ledgers, each an idempotent set keyed by entryKey: recording an existing key never creates a second entry and never changes that entry, and claim-if-absent gives a key to exactly one claiming connection, so two workers never both act on it. Change a stored value with updateLedgerEntry, which replaces the value wholesale and advances updatedAt. Any organization member may read, update and delete entries; a claim names the connection that holds it, which must be the caller’s own live connection in the organization. An update does not check who holds a claim.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated ledger entry ID.
organizationIdstring (uuid)YesOwning organization ID. Derived from the authenticated session, never client-settable.
ledgerstringYesName of the ledger (the idempotent set) the entry belongs to.
entryKeystringYesKey within the ledger. Unique per (organization, ledger).
valueobjectNoEntry value, stored as a JSON blob.
claimedByConnectionIdstring (uuid)NoID of the connection that holds the entry, if any. Set only by claim-if-absent and never changed afterwards. References a connection (connections.id); a claim held by a connection that is later deleted is released, so the key may be claimed again. Omitted when the entry is unclaimed.
claimedAtstring | null (date-time)NoTime the current or most recent claim was taken. Set only by claim-if-absent; null when the entry was never claimed. An entry whose claimedByConnectionId is omitted is unclaimed whatever this holds.
createdAtstring (date-time)YesTimestamp of ledger entry creation.
updatedAtstring (date-time)YesTimestamp of last ledger entry modification; advances on every update.
201
The key was absent; it was recorded and claimed

application/json

Server-returned ledger entry. An organization keeps any number of named ledgers, each an idempotent set keyed by entryKey: recording an existing key never creates a second entry and never changes that entry, and claim-if-absent gives a key to exactly one claiming connection, so two workers never both act on it. Change a stored value with updateLedgerEntry, which replaces the value wholesale and advances updatedAt. Any organization member may read, update and delete entries; a claim names the connection that holds it, which must be the caller’s own live connection in the organization. An update does not check who holds a claim.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated ledger entry ID.
organizationIdstring (uuid)YesOwning organization ID. Derived from the authenticated session, never client-settable.
ledgerstringYesName of the ledger (the idempotent set) the entry belongs to.
entryKeystringYesKey within the ledger. Unique per (organization, ledger).
valueobjectNoEntry value, stored as a JSON blob.
claimedByConnectionIdstring (uuid)NoID of the connection that holds the entry, if any. Set only by claim-if-absent and never changed afterwards. References a connection (connections.id); a claim held by a connection that is later deleted is released, so the key may be claimed again. Omitted when the entry is unclaimed.
claimedAtstring | null (date-time)NoTime the current or most recent claim was taken. Set only by claim-if-absent; null when the entry was never claimed. An entry whose claimedByConnectionId is omitted is unclaimed whatever this holds.
createdAtstring (date-time)YesTimestamp of ledger entry creation.
updatedAtstring (date-time)YesTimestamp of last ledger entry modification; advances on every update.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

409
Conflict - another connection holds the ledger entry

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Ledger GET

/api/ledgers/{ledger}/entries

List ledger entries

Returns a paginated list of the entries in the ledger, in the organization of the authenticated session. search matches entry keys that contain the term, ignoring case. order sorts by entryKey, createdAt or updatedAt (asc or desc); the default is entryKey asc. A ledger with no entries returns an empty page, and a caller who is not a member of the session organization gets 404.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/ledgers/{ledger}/entries

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/ledgers/{ledger}/entries

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/ledgers/{ledger}/entries

Parameters

Path parameters

NameTypeRequiredDescription
ledgerstringYesName of the ledger, for example processed-profiles.

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Ledger entries page

application/json

Paginated collection of ledger entries.
FieldTypeRequiredDescription
ledgerEntriesarray of objectYesLedger entries included on this page of results.
pageintegerYesCurrent page number of the result set.
pageSizeintegerYesNumber of items per page.
totalCountintegerYesTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Ledger POST

/api/ledgers/{ledger}/entries

Record a ledger entry

Records entryKey in the ledger. A new key creates the entry and returns 201. Recording never changes an existing entry: the stored entry is returned unchanged with 200, and the supplied value is ignored. Change a stored value with updateLedgerEntry. Recording never changes claimedByConnectionId or claimedAt.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/ledgers/{ledger}/entries

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/ledgers/{ledger}/entries

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/ledgers/{ledger}/entries

Parameters

Path parameters

NameTypeRequiredDescription
ledgerstringYesName of the ledger, for example processed-profiles.

Request body

application/json Required
Payload for recording a ledger entry. The ledger comes from the path and the organization from the session; claim fields and timestamps are server-owned.
FieldTypeRequiredDescription
entryKeystringYesKey within the ledger.
valueobjectNoEntry value, stored as a JSON object.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The key was already recorded; the stored entry, unchanged

application/json

Server-returned ledger entry. An organization keeps any number of named ledgers, each an idempotent set keyed by entryKey: recording an existing key never creates a second entry and never changes that entry, and claim-if-absent gives a key to exactly one claiming connection, so two workers never both act on it. Change a stored value with updateLedgerEntry, which replaces the value wholesale and advances updatedAt. Any organization member may read, update and delete entries; a claim names the connection that holds it, which must be the caller’s own live connection in the organization. An update does not check who holds a claim.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated ledger entry ID.
organizationIdstring (uuid)YesOwning organization ID. Derived from the authenticated session, never client-settable.
ledgerstringYesName of the ledger (the idempotent set) the entry belongs to.
entryKeystringYesKey within the ledger. Unique per (organization, ledger).
valueobjectNoEntry value, stored as a JSON blob.
claimedByConnectionIdstring (uuid)NoID of the connection that holds the entry, if any. Set only by claim-if-absent and never changed afterwards. References a connection (connections.id); a claim held by a connection that is later deleted is released, so the key may be claimed again. Omitted when the entry is unclaimed.
claimedAtstring | null (date-time)NoTime the current or most recent claim was taken. Set only by claim-if-absent; null when the entry was never claimed. An entry whose claimedByConnectionId is omitted is unclaimed whatever this holds.
createdAtstring (date-time)YesTimestamp of ledger entry creation.
updatedAtstring (date-time)YesTimestamp of last ledger entry modification; advances on every update.
201
The key was recorded

application/json

Server-returned ledger entry. An organization keeps any number of named ledgers, each an idempotent set keyed by entryKey: recording an existing key never creates a second entry and never changes that entry, and claim-if-absent gives a key to exactly one claiming connection, so two workers never both act on it. Change a stored value with updateLedgerEntry, which replaces the value wholesale and advances updatedAt. Any organization member may read, update and delete entries; a claim names the connection that holds it, which must be the caller’s own live connection in the organization. An update does not check who holds a claim.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated ledger entry ID.
organizationIdstring (uuid)YesOwning organization ID. Derived from the authenticated session, never client-settable.
ledgerstringYesName of the ledger (the idempotent set) the entry belongs to.
entryKeystringYesKey within the ledger. Unique per (organization, ledger).
valueobjectNoEntry value, stored as a JSON blob.
claimedByConnectionIdstring (uuid)NoID of the connection that holds the entry, if any. Set only by claim-if-absent and never changed afterwards. References a connection (connections.id); a claim held by a connection that is later deleted is released, so the key may be claimed again. Omitted when the entry is unclaimed.
claimedAtstring | null (date-time)NoTime the current or most recent claim was taken. Set only by claim-if-absent; null when the entry was never claimed. An entry whose claimedByConnectionId is omitted is unclaimed whatever this holds.
createdAtstring (date-time)YesTimestamp of ledger entry creation.
updatedAtstring (date-time)YesTimestamp of last ledger entry modification; advances on every update.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Ledger GET

/api/ledgers/{ledger}/entries/{entryKey}

Get a ledger entry

Returns the entry recorded under entryKey in the ledger, or 404 when the key is not in this ledger.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/ledgers/{ledger}/entries/{entryKey}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/ledgers/{ledger}/entries/{entryKey}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/ledgers/{ledger}/entries/{entryKey}

Parameters

Path parameters

NameTypeRequiredDescription
ledgerstringYesName of the ledger, for example processed-profiles.
entryKeystringYesKey within the ledger. URL-encode keys that contain reserved characters such as /.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Ledger entry

application/json

Server-returned ledger entry. An organization keeps any number of named ledgers, each an idempotent set keyed by entryKey: recording an existing key never creates a second entry and never changes that entry, and claim-if-absent gives a key to exactly one claiming connection, so two workers never both act on it. Change a stored value with updateLedgerEntry, which replaces the value wholesale and advances updatedAt. Any organization member may read, update and delete entries; a claim names the connection that holds it, which must be the caller’s own live connection in the organization. An update does not check who holds a claim.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated ledger entry ID.
organizationIdstring (uuid)YesOwning organization ID. Derived from the authenticated session, never client-settable.
ledgerstringYesName of the ledger (the idempotent set) the entry belongs to.
entryKeystringYesKey within the ledger. Unique per (organization, ledger).
valueobjectNoEntry value, stored as a JSON blob.
claimedByConnectionIdstring (uuid)NoID of the connection that holds the entry, if any. Set only by claim-if-absent and never changed afterwards. References a connection (connections.id); a claim held by a connection that is later deleted is released, so the key may be claimed again. Omitted when the entry is unclaimed.
claimedAtstring | null (date-time)NoTime the current or most recent claim was taken. Set only by claim-if-absent; null when the entry was never claimed. An entry whose claimedByConnectionId is omitted is unclaimed whatever this holds.
createdAtstring (date-time)YesTimestamp of ledger entry creation.
updatedAtstring (date-time)YesTimestamp of last ledger entry modification; advances on every update.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Ledger PUT

/api/ledgers/{ledger}/entries/{entryKey}

Update a ledger entry

Replaces the stored value wholesale (not a merge) and advances updatedAt (strictly increasing, so it works as a version token). Never changes entryKey, claimedByConnectionId, claimedAt, createdAt or id. Does not create entries: a key that is not in the ledger is 404 (use POST entries or claims to create). Does not check who holds a claim (same as delete). Any member of the session organization may update. expectedValue, when present, applies the update only if the stored value equals it (JSON equality; key order and whitespace do not matter). expectedUpdatedAt, when present, applies the update only if the stored entry’s updatedAt equals it exactly; clients echo the updatedAt they last read. Both preconditions may be sent; then both must hold. With neither, the update is unconditional. A precondition that does not match returns 412 and changes nothing. A bad ledger name, key, or body (for example a missing value or a non-object value) is 400.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/ledgers/{ledger}/entries/{entryKey}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/ledgers/{ledger}/entries/{entryKey}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/ledgers/{ledger}/entries/{entryKey}

Parameters

Path parameters

NameTypeRequiredDescription
ledgerstringYesName of the ledger, for example processed-profiles.
entryKeystringYesKey within the ledger. URL-encode keys that contain reserved characters such as /.

Request body

application/json Required
Payload for replacing a ledger entry’s value. The ledger and entryKey come from the path. Claim fields, id and timestamps are server-owned and are not accepted here.
FieldTypeRequiredDescription
expectedUpdatedAtstring (date-time)NoOptional precondition. When present, the update applies only if the stored entry’s updatedAt equals this instant exactly. Clients echo the updatedAt they last read. Omit the property to skip this check.
expectedValueobjectNoOptional precondition. When present, including as an empty object, the update applies only if the stored value equals this object (JSON equality; key order and whitespace do not matter). Omit the property to skip this check. Absence is distinct from an empty object.
valueobjectYesThe new entry value, stored as a JSON object. Replaces the stored value wholesale.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The updated ledger entry

application/json

Server-returned ledger entry. An organization keeps any number of named ledgers, each an idempotent set keyed by entryKey: recording an existing key never creates a second entry and never changes that entry, and claim-if-absent gives a key to exactly one claiming connection, so two workers never both act on it. Change a stored value with updateLedgerEntry, which replaces the value wholesale and advances updatedAt. Any organization member may read, update and delete entries; a claim names the connection that holds it, which must be the caller’s own live connection in the organization. An update does not check who holds a claim.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated ledger entry ID.
organizationIdstring (uuid)YesOwning organization ID. Derived from the authenticated session, never client-settable.
ledgerstringYesName of the ledger (the idempotent set) the entry belongs to.
entryKeystringYesKey within the ledger. Unique per (organization, ledger).
valueobjectNoEntry value, stored as a JSON blob.
claimedByConnectionIdstring (uuid)NoID of the connection that holds the entry, if any. Set only by claim-if-absent and never changed afterwards. References a connection (connections.id); a claim held by a connection that is later deleted is released, so the key may be claimed again. Omitted when the entry is unclaimed.
claimedAtstring | null (date-time)NoTime the current or most recent claim was taken. Set only by claim-if-absent; null when the entry was never claimed. An entry whose claimedByConnectionId is omitted is unclaimed whatever this holds.
createdAtstring (date-time)YesTimestamp of ledger entry creation.
updatedAtstring (date-time)YesTimestamp of last ledger entry modification; advances on every update.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

412
Precondition Failed - expectedValue or expectedUpdatedAt does not match the stored entry, so nothing was changed

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Ledger DELETE

/api/ledgers/{ledger}/entries/{entryKey}

Delete a ledger entry

Removes the entry, and with it any claim, so its key can be recorded or claimed again. Returns 404 when the key is not in this ledger.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/ledgers/{ledger}/entries/{entryKey}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/ledgers/{ledger}/entries/{entryKey}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/ledgers/{ledger}/entries/{entryKey}

Parameters

Path parameters

NameTypeRequiredDescription
ledgerstringYesName of the ledger, for example processed-profiles.
entryKeystringYesKey within the ledger. URL-encode keys that contain reserved characters such as /.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Ledger entry deleted
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

MediaAsset GET

/api/media-assets

List media assets

Returns a paginated list of the live media assets in the organization of the authenticated session, newest first unless order names another column (createdAt, expiresAt, bytes). search matches name, case-insensitively. Deleted assets are never listed; expired and rejected assets are listed until they are deleted.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/media-assets

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/media-assets

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/media-assets

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of items per page.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
statusstringNoFilter by status, evaluated at read time (a ready asset past expiresAt matches expired).

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Media asset page

application/json

Paginated collection of media assets.
FieldTypeRequiredDescription
mediaAssetsarray of objectNoMedia assets included on this page of results.
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
totalCountintegerNoTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

MediaAsset POST

/api/media-assets

Create a media asset and its upload URL

Records a new pending asset from the declared contentType, bytes and sha256, and answers it with a short-lived upload URL. The client sends the file’s bytes to upload.url with one request using upload.method and exactly the upload.headers, before upload.expiresAt, then calls completeMediaAsset. The server derives kind from contentType and sets expiresAt to the end of the upload window. Refused with 400 when contentType is not one the provider accepts (MediaAssetQuota.contentTypes), when bytes exceeds the per-kind limit (maxImageBytes, maxVideoBytes), when backend is one the provider does not serve, when gdrive is named without a connectionId or r2 with one, and when retainUntil is not in the future or lies beyond maxRetentionDays from now. Refused with 409 when the asset would take the organization past bytesLimit. A connectionId that is not the caller’s own live Google Drive connection in the session organization receives 404. Every create is a new asset; nothing is deduplicated by sha256. A create that is never completed is reaped when its upload window ends.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/media-assets

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/media-assets

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/media-assets

Request body

application/json Required
Payload for creating a media asset. Contains only client-settable fields; the owning organizationId and createdBy (from the session), kind (derived from contentType), status, rejectionReason, externalId, completedAt, expiresAt and the timestamps are server-owned and not accepted.
FieldTypeRequiredDescription
backendstringNoWhere to store the file. Omitted, the server stores it in r2.
bytesinteger (int64)YesSize of the file in bytes. Must not exceed the quota’s limit for its kind.
connectionIdstring (uuid)NoThe caller’s own live Google Drive connection in the session organization. Required when backend is gdrive, refused otherwise.
contentTypestringYesMedia type of the file, from a closed allowlist. The server sniffs the stored bytes on completion and rejects an upload whose real type differs. A provider may accept fewer types than this list (MediaAssetQuota.contentTypes).
locationStrippedbooleanYesWhether the client removed location metadata (EXIF and XMP GPS, maker notes, device serial numbers) from the file before hashing and uploading it. Recorded as sent.
namestringNoDisplay name of the file, typically its original file name.
retainUntilstring (date-time)NoTime the asset must stay downloadable until, for example a little after the post that uses it is scheduled. Omitted, the organization’s default retention applies from completion.
sha256stringYesLowercase hex SHA-256 of the exact bytes that will be uploaded.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Media asset created

application/json

Answer to createMediaAsset: the new pending asset and the grant to upload its bytes.
FieldTypeRequiredDescription
mediaAssetobjectYesServer-returned media asset: one image or video file an organization uploaded so that a content item can post it without a link. A content item refers to an asset by its id, never by a URL; a short-lived download URL is minted only when the file is about to be used (getMediaAssetDownload) and is never stored. An asset is created pending with a short-lived upload URL, becomes ready once completeMediaAsset has checked the stored bytes against the declared size, type and SHA-256, or rejected when they do not match. A pending asset that is never completed, and a ready asset whose retention ended, read as expired from expiresAt on: expiry is evaluated when the asset is read, so an asset never reads pending or ready past its expiresAt. No field carries a storage credential, a bucket name, an object key or a signed URL. The bytes live in the backend backend names, under a location only the server knows.
uploadobjectYesA short-lived grant to move one file’s bytes: send one request with method to url carrying exactly headers, before expiresAt. The URL is the only credential, it covers this one file, and it must be treated as a secret: never store it, log it or put it in a content item.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

409
Conflict - the asset is not in a status the operation accepts, the uploaded bytes did not match the declared size, type or SHA-256 (or nothing was uploaded), or the asset would take the organization past its storage limit

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

502
Bad gateway - an upstream service the operation depends on could not be reached or rejected the request

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
MediaAsset GET

/api/media-assets/quota

Get the media asset limits and usage of the organization

Answers the limits createMediaAsset and updateMediaAsset enforce in the session organization, and how much of its storage is in use. A client reads it before uploading so it refuses an oversized or unsupported file by name instead of meeting a 400.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/media-assets/quota

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/media-assets/quota

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/media-assets/quota

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Media asset quota

application/json

The media asset limits of the session organization and its current storage use.
FieldTypeRequiredDescription
backendsarray of stringYesBackends this provider serves for the organization. A create naming another is refused with 400.
bytesLimitinteger | null (int64)YesTotal bytes the organization’s live pending and ready assets may hold. Null when the organization has no storage limit.
bytesUsedinteger | null (int64)YesTotal bytes of the organization’s live pending and ready assets. Null when it could not be measured, which must be presented as unknown; a number, including 0, is a measurement.
contentTypesarray of stringYesContent types this provider accepts.
defaultRetentionDaysintegerYesDays a ready asset is kept after completion when no retainUntil was set.
maxImageBytesinteger (int64)YesLargest image a create accepts, in bytes.
maxRetentionDaysintegerYesFurthest retainUntil may lie from now, in days.
maxVideoBytesinteger (int64)YesLargest video a create accepts, in bytes.
uploadWindowSecondsintegerYesHow long a pending asset waits for its upload and completion before it expires, in seconds.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

MediaAsset GET

/api/media-assets/{mediaAssetId}

Get a media asset by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/media-assets/{mediaAssetId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/media-assets/{mediaAssetId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/media-assets/{mediaAssetId}

Parameters

Path parameters

NameTypeRequiredDescription
mediaAssetIdstring (uuid)YesMedia asset ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Media asset response

application/json

Server-returned media asset: one image or video file an organization uploaded so that a content item can post it without a link. A content item refers to an asset by its id, never by a URL; a short-lived download URL is minted only when the file is about to be used (getMediaAssetDownload) and is never stored. An asset is created pending with a short-lived upload URL, becomes ready once completeMediaAsset has checked the stored bytes against the declared size, type and SHA-256, or rejected when they do not match. A pending asset that is never completed, and a ready asset whose retention ended, read as expired from expiresAt on: expiry is evaluated when the asset is read, so an asset never reads pending or ready past its expiresAt. No field carries a storage credential, a bucket name, an object key or a signed URL. The bytes live in the backend backend names, under a location only the server knows.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated media asset ID. Reveals nothing about the file or where it is stored.
organizationIdstring (uuid)YesOwning organization ID. Derived from the authenticated session, never client-settable.
createdBystring (uuid)NoID of the user whose session created the asset. Derived from the authenticated session, never client-settable. Omitted when that user was later purged.
backendstringYesWhere the bytes are stored (r2 or gdrive).
connectionIdstring (uuid)NoID of the Google Drive connection (connections.id) the file was uploaded through. Set only when backend is gdrive; omitted for r2, and when that connection was later deleted.
externalIdstringNoIdentifier of the file in the person’s own storage: the Google Drive file ID when backend is gdrive. Server-written once the upload is completed; omitted for r2, whose storage location is never on the wire, and while a gdrive asset is pending.
kindstringYesImage or video, derived by the server from contentType.
contentTypestringYesMedia type of the file, from the closed allowlist; checked against the sniffed bytes on completion.
bytesinteger (int64)YesSize of the file in bytes, as declared at create. completeMediaAsset refuses an upload whose stored size differs.
sha256stringYesLowercase hex SHA-256 of the file’s bytes as uploaded (after any metadata stripping), as declared at create. completeMediaAsset refuses an upload whose stored bytes hash differently, and a reader compares the bytes it downloads against it before posting them.
namestringNoDisplay name of the file, typically its original file name. Shown to people only; the type is never inferred from it.
locationStrippedbooleanYesWhether the uploading client removed location metadata (EXIF and XMP GPS, plus maker notes and device serial numbers) from the file before uploading it. Declared by the client and recorded as sent; the server does not inspect the bytes for metadata. false records that the bytes may still carry where they were captured, for example a video whose location the client could not remove.
statusstringYesLifecycle of the asset. pending from create until it is completed; ready once the stored bytes matched the declaration; rejected when they did not (see rejectionReason); expired once expiresAt passed, whether the upload was never completed or the retention of a ready asset ended. Evaluated when the asset is read.
rejectionReasonstringNoWhy the upload was rejected. Set only on a rejected asset.
retainUntilstring | null (date-time)NoTime the client asked the asset to stay downloadable until, from the create payload or the last updateMediaAsset. Null when the client never asked, in which case the organization’s default retention applies once the asset is completed.
completedAtstring | null (date-time)NoTime completeMediaAsset accepted the upload. Null until the asset is ready, and on a rejected asset.
expiresAtstring (date-time)YesTime the asset stops being usable. Always set by the server. While pending it is the end of the upload window (uploadWindowSeconds of the quota after creation). Once ready it is retainUntil when the client set one, otherwise completedAt plus the organization’s defaultRetentionDays. Past it the asset reads expired, no download is minted, and the stored bytes of an r2 asset are removed.
createdAtstring (date-time)YesTimestamp of media asset creation.
updatedAtstring (date-time)YesTimestamp of last media asset modification.
deletedAtstring | null (date-time)NoTimestamp when the media asset was deleted. A deleted asset is never returned by the API.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

MediaAsset PUT

/api/media-assets/{mediaAssetId}

Change how long a media asset is kept

Sets retainUntil, the only field of an asset that changes after create, for example when the post that uses it is rescheduled. On a ready asset expiresAt becomes retainUntil, so retention can be shortened as well as extended; on a pending asset it is recorded and applied when the asset is completed. Refused with 400 when retainUntil is not in the future or lies beyond maxRetentionDays from now, and with 409 when the asset is rejected or expired.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/media-assets/{mediaAssetId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/media-assets/{mediaAssetId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/media-assets/{mediaAssetId}

Parameters

Path parameters

NameTypeRequiredDescription
mediaAssetIdstring (uuid)YesMedia asset ID

Request body

application/json Required
Payload for changing how long a media asset is kept. Retention is the only field that changes after create.
FieldTypeRequiredDescription
retainUntilstring (date-time)YesNew time the asset must stay downloadable until. Must be in the future and within maxRetentionDays from now.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Media asset updated

application/json

Server-returned media asset: one image or video file an organization uploaded so that a content item can post it without a link. A content item refers to an asset by its id, never by a URL; a short-lived download URL is minted only when the file is about to be used (getMediaAssetDownload) and is never stored. An asset is created pending with a short-lived upload URL, becomes ready once completeMediaAsset has checked the stored bytes against the declared size, type and SHA-256, or rejected when they do not match. A pending asset that is never completed, and a ready asset whose retention ended, read as expired from expiresAt on: expiry is evaluated when the asset is read, so an asset never reads pending or ready past its expiresAt. No field carries a storage credential, a bucket name, an object key or a signed URL. The bytes live in the backend backend names, under a location only the server knows.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated media asset ID. Reveals nothing about the file or where it is stored.
organizationIdstring (uuid)YesOwning organization ID. Derived from the authenticated session, never client-settable.
createdBystring (uuid)NoID of the user whose session created the asset. Derived from the authenticated session, never client-settable. Omitted when that user was later purged.
backendstringYesWhere the bytes are stored (r2 or gdrive).
connectionIdstring (uuid)NoID of the Google Drive connection (connections.id) the file was uploaded through. Set only when backend is gdrive; omitted for r2, and when that connection was later deleted.
externalIdstringNoIdentifier of the file in the person’s own storage: the Google Drive file ID when backend is gdrive. Server-written once the upload is completed; omitted for r2, whose storage location is never on the wire, and while a gdrive asset is pending.
kindstringYesImage or video, derived by the server from contentType.
contentTypestringYesMedia type of the file, from the closed allowlist; checked against the sniffed bytes on completion.
bytesinteger (int64)YesSize of the file in bytes, as declared at create. completeMediaAsset refuses an upload whose stored size differs.
sha256stringYesLowercase hex SHA-256 of the file’s bytes as uploaded (after any metadata stripping), as declared at create. completeMediaAsset refuses an upload whose stored bytes hash differently, and a reader compares the bytes it downloads against it before posting them.
namestringNoDisplay name of the file, typically its original file name. Shown to people only; the type is never inferred from it.
locationStrippedbooleanYesWhether the uploading client removed location metadata (EXIF and XMP GPS, plus maker notes and device serial numbers) from the file before uploading it. Declared by the client and recorded as sent; the server does not inspect the bytes for metadata. false records that the bytes may still carry where they were captured, for example a video whose location the client could not remove.
statusstringYesLifecycle of the asset. pending from create until it is completed; ready once the stored bytes matched the declaration; rejected when they did not (see rejectionReason); expired once expiresAt passed, whether the upload was never completed or the retention of a ready asset ended. Evaluated when the asset is read.
rejectionReasonstringNoWhy the upload was rejected. Set only on a rejected asset.
retainUntilstring | null (date-time)NoTime the client asked the asset to stay downloadable until, from the create payload or the last updateMediaAsset. Null when the client never asked, in which case the organization’s default retention applies once the asset is completed.
completedAtstring | null (date-time)NoTime completeMediaAsset accepted the upload. Null until the asset is ready, and on a rejected asset.
expiresAtstring (date-time)YesTime the asset stops being usable. Always set by the server. While pending it is the end of the upload window (uploadWindowSeconds of the quota after creation). Once ready it is retainUntil when the client set one, otherwise completedAt plus the organization’s defaultRetentionDays. Past it the asset reads expired, no download is minted, and the stored bytes of an r2 asset are removed.
createdAtstring (date-time)YesTimestamp of media asset creation.
updatedAtstring (date-time)YesTimestamp of last media asset modification.
deletedAtstring | null (date-time)NoTimestamp when the media asset was deleted. A deleted asset is never returned by the API.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

409
Conflict - the asset is not in a status the operation accepts, the uploaded bytes did not match the declared size, type or SHA-256 (or nothing was uploaded), or the asset would take the organization past its storage limit

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

MediaAsset DELETE

/api/media-assets/{mediaAssetId}

Delete a media asset

Deletes the asset, whatever its status: from then on it answers 404 and no download is minted for it. The stored bytes of an r2 asset are removed. The file of a gdrive asset is the person’s and stays in their Drive. Deleting does not check whether a content item still refers to the asset; a content item that does is refused by name when it is posted.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/media-assets/{mediaAssetId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/media-assets/{mediaAssetId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/media-assets/{mediaAssetId}

Parameters

Path parameters

NameTypeRequiredDescription
mediaAssetIdstring (uuid)YesMedia asset ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Media asset deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

MediaAsset POST

/api/media-assets/{mediaAssetId}/complete

Complete a media asset upload

Checks the stored bytes of a pending asset against its declaration: the size must equal bytes, the type sniffed from the bytes must be contentType (the extension and any declared header are never trusted), and the SHA-256 must equal sha256. On a match the asset becomes ready, completedAt is set and expiresAt moves to the end of its retention. On a mismatch, or when nothing was uploaded, the asset becomes rejected with a rejectionReason, its stored bytes are removed, and the call is refused with 409; the client creates a new asset to try again. Completing a ready asset answers it unchanged, so a retried completion is safe. Completing a rejected or expired asset is refused with 409.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/media-assets/{mediaAssetId}/complete

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/media-assets/{mediaAssetId}/complete

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/media-assets/{mediaAssetId}/complete

Parameters

Path parameters

NameTypeRequiredDescription
mediaAssetIdstring (uuid)YesMedia asset ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Media asset ready

application/json

Server-returned media asset: one image or video file an organization uploaded so that a content item can post it without a link. A content item refers to an asset by its id, never by a URL; a short-lived download URL is minted only when the file is about to be used (getMediaAssetDownload) and is never stored. An asset is created pending with a short-lived upload URL, becomes ready once completeMediaAsset has checked the stored bytes against the declared size, type and SHA-256, or rejected when they do not match. A pending asset that is never completed, and a ready asset whose retention ended, read as expired from expiresAt on: expiry is evaluated when the asset is read, so an asset never reads pending or ready past its expiresAt. No field carries a storage credential, a bucket name, an object key or a signed URL. The bytes live in the backend backend names, under a location only the server knows.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated media asset ID. Reveals nothing about the file or where it is stored.
organizationIdstring (uuid)YesOwning organization ID. Derived from the authenticated session, never client-settable.
createdBystring (uuid)NoID of the user whose session created the asset. Derived from the authenticated session, never client-settable. Omitted when that user was later purged.
backendstringYesWhere the bytes are stored (r2 or gdrive).
connectionIdstring (uuid)NoID of the Google Drive connection (connections.id) the file was uploaded through. Set only when backend is gdrive; omitted for r2, and when that connection was later deleted.
externalIdstringNoIdentifier of the file in the person’s own storage: the Google Drive file ID when backend is gdrive. Server-written once the upload is completed; omitted for r2, whose storage location is never on the wire, and while a gdrive asset is pending.
kindstringYesImage or video, derived by the server from contentType.
contentTypestringYesMedia type of the file, from the closed allowlist; checked against the sniffed bytes on completion.
bytesinteger (int64)YesSize of the file in bytes, as declared at create. completeMediaAsset refuses an upload whose stored size differs.
sha256stringYesLowercase hex SHA-256 of the file’s bytes as uploaded (after any metadata stripping), as declared at create. completeMediaAsset refuses an upload whose stored bytes hash differently, and a reader compares the bytes it downloads against it before posting them.
namestringNoDisplay name of the file, typically its original file name. Shown to people only; the type is never inferred from it.
locationStrippedbooleanYesWhether the uploading client removed location metadata (EXIF and XMP GPS, plus maker notes and device serial numbers) from the file before uploading it. Declared by the client and recorded as sent; the server does not inspect the bytes for metadata. false records that the bytes may still carry where they were captured, for example a video whose location the client could not remove.
statusstringYesLifecycle of the asset. pending from create until it is completed; ready once the stored bytes matched the declaration; rejected when they did not (see rejectionReason); expired once expiresAt passed, whether the upload was never completed or the retention of a ready asset ended. Evaluated when the asset is read.
rejectionReasonstringNoWhy the upload was rejected. Set only on a rejected asset.
retainUntilstring | null (date-time)NoTime the client asked the asset to stay downloadable until, from the create payload or the last updateMediaAsset. Null when the client never asked, in which case the organization’s default retention applies once the asset is completed.
completedAtstring | null (date-time)NoTime completeMediaAsset accepted the upload. Null until the asset is ready, and on a rejected asset.
expiresAtstring (date-time)YesTime the asset stops being usable. Always set by the server. While pending it is the end of the upload window (uploadWindowSeconds of the quota after creation). Once ready it is retainUntil when the client set one, otherwise completedAt plus the organization’s defaultRetentionDays. Past it the asset reads expired, no download is minted, and the stored bytes of an r2 asset are removed.
createdAtstring (date-time)YesTimestamp of media asset creation.
updatedAtstring (date-time)YesTimestamp of last media asset modification.
deletedAtstring | null (date-time)NoTimestamp when the media asset was deleted. A deleted asset is never returned by the API.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

409
Conflict - the asset is not in a status the operation accepts, the uploaded bytes did not match the declared size, type or SHA-256 (or nothing was uploaded), or the asset would take the organization past its storage limit

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

502
Bad gateway - an upstream service the operation depends on could not be reached or rejected the request

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
MediaAsset GET

/api/media-assets/{mediaAssetId}/content

Download the bytes of a Drive-backed media asset

Streams the bytes of a ready gdrive asset from the person’s Google Drive. This route is only ever reached through a URL that getMediaAssetDownload minted: it takes no session, and the expires and signature it carries are the whole grant, valid for that one asset until expires. The response Content-Type is the asset’s contentType. A missing, altered or lapsed signature is refused with 403; an asset that was deleted, expired or is not gdrive since the URL was minted receives 404; a Drive file that was removed, moved out of reach or whose grant was revoked is refused with 502.

Authentication

No authentication required

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/media-assets/{mediaAssetId}/content

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/media-assets/{mediaAssetId}/content

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/media-assets/{mediaAssetId}/content

Parameters

Path parameters

NameTypeRequiredDescription
mediaAssetIdstring (uuid)YesMedia asset ID

Query parameters

NameTypeRequiredDescription
expiresinteger (int64)YesTime the grant lapses, in seconds since the Unix epoch.
signaturestringYesServer-computed signature over the asset ID and expires. Opaque to clients.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Media asset bytes

application/octet-stream

400
Invalid request body or request param

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

502
Bad gateway - an upstream service the operation depends on could not be reached or rejected the request

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
MediaAsset GET

/api/media-assets/{mediaAssetId}/download

Get a short-lived download URL for a media asset

Mints a fresh download URL for a ready asset, valid for minutes. Call it just before the file is used and never store the answer: a scheduled post asks for a new URL when it runs. For r2 the URL is a signed URL on the provider’s object storage; for gdrive it is a signed getMediaAssetContent URL on the provider, which relays the bytes from the person’s Drive so that no Google token leaves the provider. A pending, rejected or expired asset is refused with 409. The reader checks the downloaded bytes against bytes and sha256 before using them.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/media-assets/{mediaAssetId}/download

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/media-assets/{mediaAssetId}/download

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/media-assets/{mediaAssetId}/download

Parameters

Path parameters

NameTypeRequiredDescription
mediaAssetIdstring (uuid)YesMedia asset ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Media asset download

application/json

A short-lived grant to move one file’s bytes: send one request with method to url carrying exactly headers, before expiresAt. The URL is the only credential, it covers this one file, and it must be treated as a secret: never store it, log it or put it in a content item.
FieldTypeRequiredDescription
expiresAtstring (date-time)YesTime the URL stops working.
headersobjectYesHeaders the request must carry, verbatim (for an upload, at least Content-Type, and any integrity header the signature binds). Empty when none are needed. Never contains an authorization header.
methodstringYesHTTP method to use. PUT for an upload, GET for a download.
urlstring (uri)YesAbsolute HTTPS URL to send the request to.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

409
Conflict - the asset is not in a status the operation accepts, the uploaded bytes did not match the declared size, type or SHA-256 (or nothing was uploaded), or the asset would take the organization past its storage limit

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

MentionAlias GET

/api/mention-aliases

List mention aliases

Returns a paginated list of the mention aliases of the organization of the authenticated session. entity (repeatable) returns only the aliases of those entities, each compared ignoring case, so the aliases for every tag in one message come back in one read; an entity with no alias contributes nothing. platform (repeatable) returns only the aliases on those platforms. search matches entity or handle containing the term, ignoring case. order sorts by entity, platform, createdAt or updatedAt (asc or desc); the default is entity asc, then platform asc. An organization with no matching alias returns an empty page.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/mention-aliases

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/mention-aliases

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/mention-aliases

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
entityarray of stringNoReturn only the aliases of these entities (repeatable), each compared ignoring case.
platformarray of stringNoReturn only the aliases on these platforms (repeatable).

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Mention alias page

application/json

Paginated collection of mention aliases.
FieldTypeRequiredDescription
mentionAliasesarray of objectYesMention aliases included on this page of results.
pageintegerYesCurrent page number of the result set.
pageSizeintegerYesNumber of items per page.
totalCountintegerYesTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

MentionAlias POST

/api/mention-aliases

Write mention aliases

Writes the confirmed aliases in mentionAliases, keyed by (entity, platform) with entity compared ignoring case. A new key creates the alias; an existing key replaces its handle and entity casing, sets confirmedBy to the caller and advances updatedAt, even when the handle is unchanged. id, organizationId and createdAt of an existing alias never change. The write is all or nothing in one transaction: a body that fails validation, or that names the same key twice, is refused with a 400 and stores nothing. Answers 200 with the stored aliases, one per entry and in the order of the request.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/mention-aliases

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/mention-aliases

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/mention-aliases

Request body

application/json Required
The confirmed aliases to write in one all-or-nothing request.
FieldTypeRequiredDescription
mentionAliasesarray of objectYesAliases to write, at most one per (entity, platform) key with entity compared ignoring case. A key named twice refuses the whole request with 400.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The stored mention aliases, one per request entry, in request order

application/json

FieldTypeRequiredDescription
idstring (uuid)YesServer-generated mention alias ID.
organizationIdstring (uuid)YesOwning organization ID. Derived from the authenticated session, never client-settable.
entitystringYesThe tag as written after @, without the @ (kate). Compared ignoring case: Kate and kate are the same entity, and the alias keeps the casing of the write that last stored it. The pattern is the tag grammar a message is read with: letters, digits, _, . and -, starting and ending with a letter, digit or _.
platformstringYesA platform whose messages can tag an entity: linkedin, x, bluesky, reddit or slack. A server refuses any other value with 400. A platform joins by adding a value here.
handlestringYesThe entity’s form on platform, stored as confirmed: @kate_ops on X, @kate.example.org on Bluesky, u/kate or r/kate on Reddit, a member ID such as U012AB3CD on Slack, or a plain-text name on LinkedIn. An empty string is a confirmed answer, not a missing one: it means the entity is sent as its name in plain text on that platform. The server checks length and surrounding whitespace only; whether a value is a valid handle on its platform is the client’s check.
confirmedBystring (uuid)NoID of the user whose session last wrote the alias. Derived from the authenticated session on every write, never client-settable. Omitted when that user was later purged.
createdAtstring (date-time)YesTimestamp the alias was first confirmed.
updatedAtstring (date-time)YesTimestamp the alias was last confirmed. Every write of the alias’s key advances it, including one that stores the same handle again.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

MentionAlias DELETE

/api/mention-aliases/{mentionAliasId}

Delete a mention alias

Removes the mention alias, so the next message that tags its entity on its platform starts without a confirmed answer. The row is removed, not soft-deleted, and its key can be written again. An id that does not name a mention alias of the session organization is a 404, the same answer whether it never existed or belongs to another organization.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/mention-aliases/{mentionAliasId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/mention-aliases/{mentionAliasId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/mention-aliases/{mentionAliasId}

Parameters

Path parameters

NameTypeRequiredDescription
mentionAliasIdstring (uuid)YesMention alias ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Mention alias deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Badge POST

/api/organizations/badges

Create a new badge or update an existing badge

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/organizations/badges

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/organizations/badges

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/organizations/badges

Request body

application/json Required
Payload for creating or updating a badge.
FieldTypeRequiredDescription
descriptionstringYesA description of the milestone achieved, often including criteria for receiving this recognition.
idstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
imageUrlstring (uri)YesURL to the badge image.
labelstringYesUnique identifier for the badge, typically slug-style (auto generated).
namestringYesConcise descriptor for the badge or certificate.
orgIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Badge upserted

application/json

Badge entity — a named recognition issued within an organization.
FieldTypeRequiredDescription
createdAtstring (date-time)YesTimestamp when the badge was created.
deletedAtstring (date-time)YesTimestamp when the badge was soft-deleted, if applicable.
descriptionstringYesA description of the milestone achieved, often including criteria for receiving this recognition.
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
imageUrlstring (uri)YesURL to the badge image.
labelstringYesUnique identifier for the badge, typically slug-style (auto generated).
namestringYesConcise descriptor for the badge or certificate.
orgIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
updatedAtstring (date-time)YesTimestamp when the badge was last updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

409
Badge label conflict. The badge label is already owned by a different organization, so the upsert was refused rather than overwriting another organization’s badge.

text/plain

500
Internal server error

text/plain

Badge GET

/api/organizations/badges/{badgeId}

Get a badge by its ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/organizations/badges/{badgeId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/organizations/badges/{badgeId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/organizations/badges/{badgeId}

Parameters

Path parameters

NameTypeRequiredDescription
badgeIdstring (uuid)YesBadge ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Badge response

application/json

Badge entity — a named recognition issued within an organization.
FieldTypeRequiredDescription
createdAtstring (date-time)YesTimestamp when the badge was created.
deletedAtstring (date-time)YesTimestamp when the badge was soft-deleted, if applicable.
descriptionstringYesA description of the milestone achieved, often including criteria for receiving this recognition.
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
imageUrlstring (uri)YesURL to the badge image.
labelstringYesUnique identifier for the badge, typically slug-style (auto generated).
namestringYesConcise descriptor for the badge or certificate.
orgIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
updatedAtstring (date-time)YesTimestamp when the badge was last updated.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Badge DELETE

/api/organizations/badges/{badgeId}

Delete a badge by its ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/organizations/badges/{badgeId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/organizations/badges/{badgeId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/organizations/badges/{badgeId}

Parameters

Path parameters

NameTypeRequiredDescription
badgeIdstring (uuid)YesBadge ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Badge deleted
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Invitation GET

/api/organizations/invitations

Get a paginated list of invitations for the organization

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/organizations/invitations

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/organizations/invitations

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/organizations/invitations

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pagesizeintegerNoGet responses by pagesize
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
filterstringNoGet filtered reponses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Invitations page

application/json

Paginated list of invitations for an organization.
FieldTypeRequiredDescription
dataarray of objectNoInvitations returned on the current page.
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
totalCountintegerNoTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Invitation POST

/api/organizations/invitations

Create a new invitation for the organization

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/organizations/invitations

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/organizations/invitations

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/organizations/invitations

Request body

application/json Required
Payload for creating or updating an invitation.
FieldTypeRequiredDescription
acceptanceOutcomestringNoDetermines what accepting this invitation does for the accepting user, for new and existing accounts alike. direct_membership (the default, and the behavior of every invitation that omits this property) adds the user to the inviting organization. child_organization creates a new child organization for the user whose parent is always the inviting organization; the child follows the standard organization-creation procedure (a My Team team, a My Workspace workspace, and the accepting user as its owner with organization administrator privileges). The child’s display name is set by childOrganizationName when present and non-empty; otherwise it defaults to “My Organization”. With child_organization the invitation’s roles and teams apply in the child organization, not in the inviting organization.
childOrganizationBrandingstringNoDetermines what branding a child organization created by accepting this invitation starts with. Applies only when acceptanceOutcome is child_organization; ignored otherwise. parent (the default, including every invitation that omits this property) copies the inviting organization’s branding into the child at creation: theme (logos and colors), authentication-page branding, email branding (sender name, templates, and footer), links (including social profiles), and the authentication-page carousel setting. provider copies the provider organization’s branding instead. none gives the child no branding of its own. Every copy is a snapshot: later changes to the source do not propagate, and the child’s administrators can change its branding afterwards without affecting the source.
childOrganizationNamestringNoDisplay name for the child organization created when acceptanceOutcome is child_organization. Applies only when acceptanceOutcome is child_organization; ignored otherwise. When this property is omitted or empty, the child is named “My Organization”. When present and non-empty, that string is the child organization’s name at creation. Administrators can rename the child afterward.
descriptionstringNoDescription of the invitation. Optional; omitting it stores an empty description.
emailsarray of stringNoEmail addresses or patterns this invitation is valid for. Optional; omitting it or sending an empty list means any email address may accept the invitation.
expiresAtstring (date-time)NoTimestamp when the invitation expires, if applicable.
idstring (uuid)NoExisting invitation ID for updates; omit on create.
isDefaultbooleanNoIndicates whether the invitation is a default invitation (open invite).
namestringYesName of the invitation.
orgIdstring (uuid)YesID of the organization to which the user is invited.
ownerstring (uuid)NoID of the user who created the invitation.
quotaintegerNoQuota for the invitation; limits the number of users that can accept it.
rolesarray of stringNoRoles that the user will have when accepting the invitation. Optional; omitting it or sending an empty list grants no roles.
statusstringYesActivation status of the invitation.
teamsarray of stringNoTeams that the user will be added to when accepting the invitation. Optional; omitting it or sending an empty list adds the user to no teams.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Invitation created

application/json

Invitation entity schema.
FieldTypeRequiredDescription
acceptanceOutcomestringNoDetermines what accepting this invitation does for the accepting user, for new and existing accounts alike. direct_membership (the default, and the behavior of every invitation that omits this property) adds the user to the inviting organization. child_organization creates a new child organization for the user whose parent is always the inviting organization; the child follows the standard organization-creation procedure (a My Team team, a My Workspace workspace, and the accepting user as its owner with organization administrator privileges). The child’s display name is set by childOrganizationName when present and non-empty; otherwise it defaults to “My Organization”. With child_organization the invitation’s roles and teams apply in the child organization, not in the inviting organization.
acceptedByarray of stringYesList of user ids that have already accepted the invitation. Empty means the invitation has not been used yet.
childOrganizationBrandingstringNoDetermines what branding a child organization created by accepting this invitation starts with. Applies only when acceptanceOutcome is child_organization; ignored otherwise. parent (the default, including every invitation that omits this property) copies the inviting organization’s branding into the child at creation: theme (logos and colors), authentication-page branding, email branding (sender name, templates, and footer), links (including social profiles), and the authentication-page carousel setting. provider copies the provider organization’s branding instead. none gives the child no branding of its own. Every copy is a snapshot: later changes to the source do not propagate, and the child’s administrators can change its branding afterwards without affecting the source.
childOrganizationNamestringNoDisplay name for the child organization created when acceptanceOutcome is child_organization. Applies only when acceptanceOutcome is child_organization; ignored otherwise. When this property is omitted or empty, the child is named “My Organization”. When present and non-empty, that string is the child organization’s name at creation. Administrators can rename the child afterward.
createdAtstring (date-time)YesTimestamp when the invitation was created.
deletedAtstring | null (date-time)YesTimestamp when the invitation was deleted, if applicable.
descriptionstringYesDescription of the invitation, which can be used to provide additional context. Null or empty string means the invitation does not have a description.
emailsarray of string | nullYesEmail addresses or patterns for which the invitation is valid. Null means the invitation is valid for any email address.
expiresAtstring | null (date-time)NoTimestamp when the invitation expires, if applicable. Null or empty means the invitation does not expire.
idstring (uuid)YesUnique identifier for the invitation, also used as the invitation code.
isDefaultbooleanNoIndicates whether the invitation is a default invitation (open invite), which can be used to assign users when signing up from fqdn or custom domain. An organization can only have one default invitation.
namestringYesName of the invitation, which can be used to identify it. Required; cannot be an empty string.
orgIdstring (uuid)YesID of the organization to which the user is invited.
ownerstring (uuid)YesID of the user who created the invitation. Tracks who created the invitation for auditing purposes.
quotaintegerNoQuota for the invitation; limits the number of users that can accept it. Null or empty means the invitation is unlimited.
rolesarray of stringYesRoles that the user will have when accepting the invitation. Empty means the invitation does not specify any roles.
statusstringYesActivation status of the invitation.
teamsarray of stringYesTeams that the user will be added to when accepting the invitation. Empty means the invitation does not specify any teams.
updatedAtstring (date-time)YesTimestamp when the invitation was last updated.
400
Invalid request body or request param

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
Invitation GET

/api/organizations/invitations/{invitationId}

Get an invitation by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/organizations/invitations/{invitationId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/organizations/invitations/{invitationId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/organizations/invitations/{invitationId}

Parameters

Path parameters

NameTypeRequiredDescription
invitationIdstring (uuid)YesThe ID of the invitation.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Invitation fetched

application/json

Invitation entity schema.
FieldTypeRequiredDescription
acceptanceOutcomestringNoDetermines what accepting this invitation does for the accepting user, for new and existing accounts alike. direct_membership (the default, and the behavior of every invitation that omits this property) adds the user to the inviting organization. child_organization creates a new child organization for the user whose parent is always the inviting organization; the child follows the standard organization-creation procedure (a My Team team, a My Workspace workspace, and the accepting user as its owner with organization administrator privileges). The child’s display name is set by childOrganizationName when present and non-empty; otherwise it defaults to “My Organization”. With child_organization the invitation’s roles and teams apply in the child organization, not in the inviting organization.
acceptedByarray of stringYesList of user ids that have already accepted the invitation. Empty means the invitation has not been used yet.
childOrganizationBrandingstringNoDetermines what branding a child organization created by accepting this invitation starts with. Applies only when acceptanceOutcome is child_organization; ignored otherwise. parent (the default, including every invitation that omits this property) copies the inviting organization’s branding into the child at creation: theme (logos and colors), authentication-page branding, email branding (sender name, templates, and footer), links (including social profiles), and the authentication-page carousel setting. provider copies the provider organization’s branding instead. none gives the child no branding of its own. Every copy is a snapshot: later changes to the source do not propagate, and the child’s administrators can change its branding afterwards without affecting the source.
childOrganizationNamestringNoDisplay name for the child organization created when acceptanceOutcome is child_organization. Applies only when acceptanceOutcome is child_organization; ignored otherwise. When this property is omitted or empty, the child is named “My Organization”. When present and non-empty, that string is the child organization’s name at creation. Administrators can rename the child afterward.
createdAtstring (date-time)YesTimestamp when the invitation was created.
deletedAtstring | null (date-time)YesTimestamp when the invitation was deleted, if applicable.
descriptionstringYesDescription of the invitation, which can be used to provide additional context. Null or empty string means the invitation does not have a description.
emailsarray of string | nullYesEmail addresses or patterns for which the invitation is valid. Null means the invitation is valid for any email address.
expiresAtstring | null (date-time)NoTimestamp when the invitation expires, if applicable. Null or empty means the invitation does not expire.
idstring (uuid)YesUnique identifier for the invitation, also used as the invitation code.
isDefaultbooleanNoIndicates whether the invitation is a default invitation (open invite), which can be used to assign users when signing up from fqdn or custom domain. An organization can only have one default invitation.
namestringYesName of the invitation, which can be used to identify it. Required; cannot be an empty string.
orgIdstring (uuid)YesID of the organization to which the user is invited.
ownerstring (uuid)YesID of the user who created the invitation. Tracks who created the invitation for auditing purposes.
quotaintegerNoQuota for the invitation; limits the number of users that can accept it. Null or empty means the invitation is unlimited.
rolesarray of stringYesRoles that the user will have when accepting the invitation. Empty means the invitation does not specify any roles.
statusstringYesActivation status of the invitation.
teamsarray of stringYesTeams that the user will be added to when accepting the invitation. Empty means the invitation does not specify any teams.
updatedAtstring (date-time)YesTimestamp when the invitation was last updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Invitation PUT

/api/organizations/invitations/{invitationId}

Update an existing invitation

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/organizations/invitations/{invitationId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/organizations/invitations/{invitationId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/organizations/invitations/{invitationId}

Parameters

Path parameters

NameTypeRequiredDescription
invitationIdstring (uuid)YesThe ID of the invitation.

Request body

application/json Required
Payload for creating or updating an invitation.
FieldTypeRequiredDescription
acceptanceOutcomestringNoDetermines what accepting this invitation does for the accepting user, for new and existing accounts alike. direct_membership (the default, and the behavior of every invitation that omits this property) adds the user to the inviting organization. child_organization creates a new child organization for the user whose parent is always the inviting organization; the child follows the standard organization-creation procedure (a My Team team, a My Workspace workspace, and the accepting user as its owner with organization administrator privileges). The child’s display name is set by childOrganizationName when present and non-empty; otherwise it defaults to “My Organization”. With child_organization the invitation’s roles and teams apply in the child organization, not in the inviting organization.
childOrganizationBrandingstringNoDetermines what branding a child organization created by accepting this invitation starts with. Applies only when acceptanceOutcome is child_organization; ignored otherwise. parent (the default, including every invitation that omits this property) copies the inviting organization’s branding into the child at creation: theme (logos and colors), authentication-page branding, email branding (sender name, templates, and footer), links (including social profiles), and the authentication-page carousel setting. provider copies the provider organization’s branding instead. none gives the child no branding of its own. Every copy is a snapshot: later changes to the source do not propagate, and the child’s administrators can change its branding afterwards without affecting the source.
childOrganizationNamestringNoDisplay name for the child organization created when acceptanceOutcome is child_organization. Applies only when acceptanceOutcome is child_organization; ignored otherwise. When this property is omitted or empty, the child is named “My Organization”. When present and non-empty, that string is the child organization’s name at creation. Administrators can rename the child afterward.
descriptionstringNoDescription of the invitation. Optional; omitting it stores an empty description.
emailsarray of stringNoEmail addresses or patterns this invitation is valid for. Optional; omitting it or sending an empty list means any email address may accept the invitation.
expiresAtstring (date-time)NoTimestamp when the invitation expires, if applicable.
idstring (uuid)NoExisting invitation ID for updates; omit on create.
isDefaultbooleanNoIndicates whether the invitation is a default invitation (open invite).
namestringYesName of the invitation.
orgIdstring (uuid)YesID of the organization to which the user is invited.
ownerstring (uuid)NoID of the user who created the invitation.
quotaintegerNoQuota for the invitation; limits the number of users that can accept it.
rolesarray of stringNoRoles that the user will have when accepting the invitation. Optional; omitting it or sending an empty list grants no roles.
statusstringYesActivation status of the invitation.
teamsarray of stringNoTeams that the user will be added to when accepting the invitation. Optional; omitting it or sending an empty list adds the user to no teams.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Invitation updated

application/json

Invitation entity schema.
FieldTypeRequiredDescription
acceptanceOutcomestringNoDetermines what accepting this invitation does for the accepting user, for new and existing accounts alike. direct_membership (the default, and the behavior of every invitation that omits this property) adds the user to the inviting organization. child_organization creates a new child organization for the user whose parent is always the inviting organization; the child follows the standard organization-creation procedure (a My Team team, a My Workspace workspace, and the accepting user as its owner with organization administrator privileges). The child’s display name is set by childOrganizationName when present and non-empty; otherwise it defaults to “My Organization”. With child_organization the invitation’s roles and teams apply in the child organization, not in the inviting organization.
acceptedByarray of stringYesList of user ids that have already accepted the invitation. Empty means the invitation has not been used yet.
childOrganizationBrandingstringNoDetermines what branding a child organization created by accepting this invitation starts with. Applies only when acceptanceOutcome is child_organization; ignored otherwise. parent (the default, including every invitation that omits this property) copies the inviting organization’s branding into the child at creation: theme (logos and colors), authentication-page branding, email branding (sender name, templates, and footer), links (including social profiles), and the authentication-page carousel setting. provider copies the provider organization’s branding instead. none gives the child no branding of its own. Every copy is a snapshot: later changes to the source do not propagate, and the child’s administrators can change its branding afterwards without affecting the source.
childOrganizationNamestringNoDisplay name for the child organization created when acceptanceOutcome is child_organization. Applies only when acceptanceOutcome is child_organization; ignored otherwise. When this property is omitted or empty, the child is named “My Organization”. When present and non-empty, that string is the child organization’s name at creation. Administrators can rename the child afterward.
createdAtstring (date-time)YesTimestamp when the invitation was created.
deletedAtstring | null (date-time)YesTimestamp when the invitation was deleted, if applicable.
descriptionstringYesDescription of the invitation, which can be used to provide additional context. Null or empty string means the invitation does not have a description.
emailsarray of string | nullYesEmail addresses or patterns for which the invitation is valid. Null means the invitation is valid for any email address.
expiresAtstring | null (date-time)NoTimestamp when the invitation expires, if applicable. Null or empty means the invitation does not expire.
idstring (uuid)YesUnique identifier for the invitation, also used as the invitation code.
isDefaultbooleanNoIndicates whether the invitation is a default invitation (open invite), which can be used to assign users when signing up from fqdn or custom domain. An organization can only have one default invitation.
namestringYesName of the invitation, which can be used to identify it. Required; cannot be an empty string.
orgIdstring (uuid)YesID of the organization to which the user is invited.
ownerstring (uuid)YesID of the user who created the invitation. Tracks who created the invitation for auditing purposes.
quotaintegerNoQuota for the invitation; limits the number of users that can accept it. Null or empty means the invitation is unlimited.
rolesarray of stringYesRoles that the user will have when accepting the invitation. Empty means the invitation does not specify any roles.
statusstringYesActivation status of the invitation.
teamsarray of stringYesTeams that the user will be added to when accepting the invitation. Empty means the invitation does not specify any teams.
updatedAtstring (date-time)YesTimestamp when the invitation was last updated.
400
Invalid request body or request param

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
404
Result not found

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
Invitation DELETE

/api/organizations/invitations/{invitationId}

Delete an invitation by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/organizations/invitations/{invitationId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/organizations/invitations/{invitationId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/organizations/invitations/{invitationId}

Parameters

Path parameters

NameTypeRequiredDescription
invitationIdstring (uuid)YesThe ID of the invitation.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Invitation deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Invitation POST

/api/organizations/invitations/{invitationId}/accept

Accept an invitation by ID

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/organizations/invitations/{invitationId}/accept

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/organizations/invitations/{invitationId}/accept

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/organizations/invitations/{invitationId}/accept

Parameters

Path parameters

NameTypeRequiredDescription
invitationIdstring (uuid)YesThe ID of the invitation.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Invitation accepted

application/json

Invitation entity schema.
FieldTypeRequiredDescription
acceptanceOutcomestringNoDetermines what accepting this invitation does for the accepting user, for new and existing accounts alike. direct_membership (the default, and the behavior of every invitation that omits this property) adds the user to the inviting organization. child_organization creates a new child organization for the user whose parent is always the inviting organization; the child follows the standard organization-creation procedure (a My Team team, a My Workspace workspace, and the accepting user as its owner with organization administrator privileges). The child’s display name is set by childOrganizationName when present and non-empty; otherwise it defaults to “My Organization”. With child_organization the invitation’s roles and teams apply in the child organization, not in the inviting organization.
acceptedByarray of stringYesList of user ids that have already accepted the invitation. Empty means the invitation has not been used yet.
childOrganizationBrandingstringNoDetermines what branding a child organization created by accepting this invitation starts with. Applies only when acceptanceOutcome is child_organization; ignored otherwise. parent (the default, including every invitation that omits this property) copies the inviting organization’s branding into the child at creation: theme (logos and colors), authentication-page branding, email branding (sender name, templates, and footer), links (including social profiles), and the authentication-page carousel setting. provider copies the provider organization’s branding instead. none gives the child no branding of its own. Every copy is a snapshot: later changes to the source do not propagate, and the child’s administrators can change its branding afterwards without affecting the source.
childOrganizationNamestringNoDisplay name for the child organization created when acceptanceOutcome is child_organization. Applies only when acceptanceOutcome is child_organization; ignored otherwise. When this property is omitted or empty, the child is named “My Organization”. When present and non-empty, that string is the child organization’s name at creation. Administrators can rename the child afterward.
createdAtstring (date-time)YesTimestamp when the invitation was created.
deletedAtstring | null (date-time)YesTimestamp when the invitation was deleted, if applicable.
descriptionstringYesDescription of the invitation, which can be used to provide additional context. Null or empty string means the invitation does not have a description.
emailsarray of string | nullYesEmail addresses or patterns for which the invitation is valid. Null means the invitation is valid for any email address.
expiresAtstring | null (date-time)NoTimestamp when the invitation expires, if applicable. Null or empty means the invitation does not expire.
idstring (uuid)YesUnique identifier for the invitation, also used as the invitation code.
isDefaultbooleanNoIndicates whether the invitation is a default invitation (open invite), which can be used to assign users when signing up from fqdn or custom domain. An organization can only have one default invitation.
namestringYesName of the invitation, which can be used to identify it. Required; cannot be an empty string.
orgIdstring (uuid)YesID of the organization to which the user is invited.
ownerstring (uuid)YesID of the user who created the invitation. Tracks who created the invitation for auditing purposes.
quotaintegerNoQuota for the invitation; limits the number of users that can accept it. Null or empty means the invitation is unlimited.
rolesarray of stringYesRoles that the user will have when accepting the invitation. Empty means the invitation does not specify any roles.
statusstringYesActivation status of the invitation.
teamsarray of stringYesTeams that the user will be added to when accepting the invitation. Empty means the invitation does not specify any teams.
updatedAtstring (date-time)YesTimestamp when the invitation was last updated.
400
Invalid request body or request param

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
Organization SMTP Configuration OrganizationSmtp GET

/api/orgs/{orgId}/environments/mail-relay

Probe whether an organization has brought its own mail server

Returns the organization’s mail-relay environment when it exists. A 404 is the ordinary answer for an organization using the provider’s shared relay, and is not an error condition.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/orgs/{orgId}/environments/mail-relay

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The organization has its own mail-relay environment. The canonical Environment shape, not a bespoke one: this endpoint returns an ordinary environment row that happens to carry the well-known name.

application/json

Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments
FieldTypeRequiredDescription
idstring (uuid)YesID
schemaVersionstringYesSpecifies the version of the schema to which the environment conforms.
namestringYesEnvironment name
descriptionstringYesEnvironment description
organizationIdstring (uuid)YesEnvironment organization ID
ownerstring (uuid)NoEnvironment owner
createdAtstring (date-time)NoTimestamp when the environment was created.
metadataobjectNoAdditional metadata associated with the environment.
updatedAtstring (date-time)NoTimestamp when the environment was last updated.
deletedAtstring | null (date-time)NoTimestamp when the environment was soft deleted. Null while the environment remains active.
purposestringNo

What the environment exists for. user is an ordinary environment that people create to logically group Connections and their Credentials. administrative designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust. Profiles are not environments: they are their own construct (schemas/constructs/v1beta3/profile, served at /api/profiles and assigned to workspaces under /api/workspaces/{workspaceId}/profiles).

Absent means user. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for “not user”, so the property fails closed.

At most one live environment per organization may carry any single privileged purpose - administrative, and each privileged value a later version adds. Name those values explicitly wherever the rule is enforced, including the database index predicate: a “not user” test also matches the empty value that unmigrated rows and un-normalised writes read back as, which means ordinary. A resolver that selects an environment by purpose MUST fail closed when more than one live row matches: return an error rather than whichever row the database happened to return first.

Privileged values are server-owned and never client-settable. EnvironmentPayload, which every environment POST and PUT requestBody references, accepts only the non-privileged value user, and the create-or-edit form has no field for it, so the environment create and update endpoints cannot designate an environment administrative. That restriction is a codegen guarantee, never access control: the registrant connection inlines the full environment entity, so registerRegistryComponent and registerRegistryRelationship do carry purpose in a request type and consumers MUST refuse it on input there too. Whatever surface a value arrives on, every consumer MUST assign this property only from server-side provisioning or a data migration. Permission to create an environment does not confer the ability to make one administrative.

The database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer’s obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.

Example response

{
  "createdAt": "0001-01-01T00:00:00Z",
  "deletedAt": null,
  "description": "Connections and credentials for the production cluster.",
  "id": "00000000-0000-0000-0000-000000000000",
  "metadata": {},
  "name": "Production Environment",
  "organizationId": "00000000-0000-0000-0000-000000000000",
  "owner": "00000000-0000-0000-0000-000000000000",
  "purpose": "user",
  "schemaVersion": "environments.meshery.io/v1beta3",
  "updatedAt": "0001-01-01T00:00:00Z"
}
401
Expired JWT token used or insufficient privilege

text/plain

403
Caller lacks the permission key required for this organization

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Organization SMTP Configuration OrganizationSmtp DELETE

/api/orgs/{orgId}/environments/mail-relay

Remove an organization's mail server entirely

Removes the configuration, its stored credential and the environment that held them, together. The organization’s mail reverts to the provider’s shared relay. Idempotent, and deliberately declares no 404: removing an absent configuration succeeds with the same 204 as removing a present one, so “not found” is not an outcome this operation has. An unknown or unauthorized organization is answered by the permission middleware before the handler runs.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/orgs/{orgId}/environments/mail-relay

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
The configuration was removed.
401
Expired JWT token used or insufficient privilege

text/plain

403
Caller lacks the permission key required for this organization

text/plain

500
Internal server error

text/plain

Organization SMTP Configuration OrganizationSmtp GET

/api/orgs/{orgId}/environments/mail-relay/connection

Get an organization's SMTP configuration

Returns the organization’s mail server configuration, including its current status and from-domain verification state. The password is always the redaction sentinel ***.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/connection

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/connection

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/orgs/{orgId}/environments/mail-relay/connection

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The organization’s SMTP configuration.

application/json

An organization’s own outbound mail server. When present and healthy, every transactional email whose reader belongs to this organization - application notifications and identity-flow mail (account verification, password recovery) alike - is delivered through this server rather than through the provider’s shared relay, so the message leaves from the organization’s own domain. At most one live configuration exists per organization. The SMTP password is encrypted at rest and is never returned; reads always carry the redaction sentinel instead.

This is a WIRE contract only. It is not backed by a table of its own: the configuration is stored on the same environment/connection/credential chain that bring-your-own identity providers already uses - a well-known per-organization Environment, joined through environments_connections_mappings to a Connection whose credential_id points at a Credential. The organization relationship lives on environments.organization_id, the dial target on connections.url and connections.metadata, the transport verdict on connections.status, and the password alone in credentials.secret.

No property here carries a construct-specific db tag, because no property here names a column of its own. The exception is deliberate and inherited: createdAt and updatedAt $ref the shared core definitions, which declare db: created_at / db: updated_at for every construct that uses them, and those two tags are accurate for the underlying connection row.

FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
hoststringYesHostname of the organization’s SMTP server.
portintegerYesTCP port the organization’s SMTP server listens on. The server additionally restricts this to a submission-port allowlist; a syntactically valid port outside it is refused.
encryptionstringYesTransport encryption to negotiate. starttls upgrades a cleartext connection (typically port 587), tls opens an implicit TLS connection (typically port 465), and none sends in cleartext and is intended only for an internal relay on a trusted network.
authMechanismstringYesSMTP authentication mechanism. none is permitted only for a relay that authorizes by source address; a configuration using any other mechanism must carry both a username and a password.
usernamestringNoUsername presented to the organization’s SMTP server. Held beside the host rather than with the password because it is an identifier rather than a secret, and the health surface must show it without a decryption round trip. It is usually an email address, so it is returned only on an authorized read.
passwordstringNoPresent only when a password is stored, and then always the redaction sentinel *** - never the stored value, which is encrypted at rest and is never projected into a response. Its presence is therefore the only thing it reports: a configuration whose authMechanism is none stores no password and omits this property entirely. It is optional rather than required for exactly that reason. Read-only, and read-only here means read-only: no request body references this schema. The write semantics belong to the payload schemas - OrganizationSmtpConfigurationPayload on create and OrganizationSmtpCredentialPayload on rotation - and are documented there.
fromAddressstring (email)YesAddress the organization’s mail is sent from. Its domain must be verified before mail is routed through this server.
fromDisplayNamestringNoDisplay name shown alongside the from address in the message header.
replyToAddressstring (email)NoAddress replies are directed to. It is also the address carried when a message falls back to the provider relay, which rewrites the from address to the provider’s own so the message stays aligned for SPF and DMARC.
statusstringYes

Lifecycle and transport verdict, carrying the connection status vocabulary because the configuration IS a connection. registered means configured but never proven - the from domain is unverified, or no message has yet been delivered - and mail takes the provider relay. connected means the last delivery attempt succeeded and mail is routed through this server. disconnected means the most recent delivery attempt did not succeed, and fallbackToProvider governs what becomes of that message. It is a verdict on the last attempt alone: a SINGLE failure records it, there is no failure threshold, and the status does not by itself stop the server being dialled for the next message. Read it as “the last attempt failed”, not as “this server has been taken out of rotation” - the circuit breaker that would do the latter is planned, not built, and is tracked in meshery-cloud#6057. ignored means an administrator turned it off.

The writers are disjoint on purpose: only an administrator writes ignored, and only a delivery outcome writes connected or disconnected. That is what keeps a deliberate opt-out distinguishable from a failing relay. It also makes “enabled while the from domain is unverified” unrepresentable rather than merely forbidden, which is why this property replaces the separate enabled and verificationState pair it supersedes.

fallbackToProviderbooleanYesWhether a message that this server fails to accept is re-sent through the provider’s shared relay. Disabling it means the organization owns delivery entirely and a failure is a dropped message, including account verification and password recovery.
fromDomainstringNoRegistrable domain of the from address, held separately as the unit that ownership is proven for.
fromDomainVerificationTokenstringNoToken the organization publishes in DNS to prove control of the from domain. Not a credential - it authorizes nothing and grants no access.
fromDomainVerifiedAtstring | null (date-time)NoTimestamp at which control of the from domain was last proven. Null while unproven.
lastSuccessAtstring | null (date-time)NoTimestamp of the last message this server accepted.
lastFailureAtstring | null (date-time)NoTimestamp of the last delivery attempt this server rejected or failed to accept.
lastFailureReasonstringNoClassification of the last failure. Always a classification, never the remote server’s own message: the set is closed on purpose, because reporting a remote server’s text back to a caller would turn a refusal into an oracle for what the network can reach.
consecutiveFailuresintegerYesCount of delivery attempts that have failed since the last success, reset to zero by a success. It is a RECORD and nothing more: no threshold reads it, and reaching any particular value does not itself stop a persistently unreachable server being dialled. A consumer must not treat a non-zero count as protection already in place. The circuit breaker that would consume this count - and which needs a threshold, a reset policy, and a decision about its interaction with fallbackToProvider, where an open circuit with fallback off drops account-verification and password-recovery mail - is planned under meshery-cloud#6057.
createdBystring | null (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
createdAtstring (date-time)YesTimestamp when the configuration was created.
updatedAtstring (date-time)YesTimestamp when the configuration was last changed.
deletedAtstring | null (date-time)NoTimestamp when the configuration was soft deleted. Null while it remains active.

Example response

{
  "authMechanism": "plain",
  "consecutiveFailures": 0,
  "createdAt": "0001-01-01T00:00:00Z",
  "createdBy": "00000000-0000-0000-0000-000000000000",
  "deletedAt": null,
  "encryption": "starttls",
  "fallbackToProvider": true,
  "fromAddress": "[email protected]",
  "fromDisplayName": "Example Corp",
  "fromDomain": "example.com",
  "fromDomainVerificationToken": "0f6a5d2c9b1e4a7f8c3d6b0e2a4f7c19",
  "fromDomainVerifiedAt": null,
  "host": "smtp.example.com",
  "id": "00000000-0000-0000-0000-000000000000",
  "lastFailureAt": null,
  "lastSuccessAt": null,
  "organizationId": "00000000-0000-0000-0000-000000000000",
  "password": "***",
  "port": 587,
  "replyToAddress": "[email protected]",
  "status": "registered",
  "updatedAt": "0001-01-01T00:00:00Z",
  "username": "[email protected]"
}
401
Expired JWT token used or insufficient privilege

text/plain

403
Caller lacks the permission key required for this organization

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Organization SMTP Configuration OrganizationSmtp POST

/api/orgs/{orgId}/environments/mail-relay/connection

Register an organization's SMTP server

Creates the configuration, provisioning the mail-relay environment on the organization’s behalf when it does not yet exist. This is the only operation that accepts the password alongside the settings; afterwards the two are written separately. The new configuration starts unproven, so mail continues to take the provider relay until the from domain is verified and a test delivery succeeds. Declares no 404 for the same reason the delete does not: this operation brings the configuration into existence, so its absence beforehand is the normal case rather than an error.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/connection

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/connection

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/orgs/{orgId}/environments/mail-relay/connection

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Request body

application/json Required
Everything needed to register an organization’s mail server, settings and password together, so that registration is one operation. Accepted only on create; afterwards the settings and the credential are written by separate operations. status, the delivery counters behind it, the from-domain proof and the timestamps are all server-owned and are not accepted here. A new configuration therefore always starts at registered, whatever the caller sends.
FieldTypeRequiredDescription
hoststringYesHostname of the organization’s SMTP server.
portintegerYesTCP port the organization’s SMTP server listens on. Restricted further by a submission-port allowlist.
encryptionstringNoTransport encryption to negotiate. starttls upgrades a cleartext connection (typically port 587), tls opens an implicit TLS connection (typically port 465), and none sends in cleartext.
authMechanismstringNoSMTP authentication mechanism. Any mechanism other than none requires both a username and a password.
usernamestringNoUsername presented to the organization’s SMTP server. Required by the server, together with password, for every authMechanism other than none; see that property for why the pairing is a server-enforced contract rather than a schema constraint.
passwordstringNoPassword presented to the organization’s SMTP server. The server requires it, together with username, for every authMechanism other than none, and answers 400 when either is missing. That rule is deliberately NOT encoded in required or as a oneOf/if-then. Both encodings were measured against the generator: if/then collapses this payload to interface{}, and oneOf injects a union json.RawMessage field with a custom marshaller, either of which costs every consumer its generated type or its wire behaviour to express a constraint the server enforces anyway. Treat this property as conditionally required by contract, not by schema. This is the ONLY operation that accepts the password alongside the settings, so that registering a mail server is one call and no configuration exists in a state where it is expected to send but holds no credential. Afterwards the password is written only by the rotation operation, never by the settings update, whose payload declares no password property at all. The redaction sentinel *** is refused, and so is the empty string - omit the property instead of sending it empty, which the minLength below enforces so this payload and the rotation payload agree.
fromAddressstring (email)YesAddress the organization’s mail is sent from.
fromDisplayNamestringNoDisplay name shown alongside the from address.
replyToAddressstring (email)NoAddress replies are directed to.
fallbackToProviderbooleanNoWhether a message this server fails to accept is re-sent through the provider’s shared relay. Disabling it means a failure is a dropped message, account verification and password recovery included.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
The stored SMTP configuration.

application/json

An organization’s own outbound mail server. When present and healthy, every transactional email whose reader belongs to this organization - application notifications and identity-flow mail (account verification, password recovery) alike - is delivered through this server rather than through the provider’s shared relay, so the message leaves from the organization’s own domain. At most one live configuration exists per organization. The SMTP password is encrypted at rest and is never returned; reads always carry the redaction sentinel instead.

This is a WIRE contract only. It is not backed by a table of its own: the configuration is stored on the same environment/connection/credential chain that bring-your-own identity providers already uses - a well-known per-organization Environment, joined through environments_connections_mappings to a Connection whose credential_id points at a Credential. The organization relationship lives on environments.organization_id, the dial target on connections.url and connections.metadata, the transport verdict on connections.status, and the password alone in credentials.secret.

No property here carries a construct-specific db tag, because no property here names a column of its own. The exception is deliberate and inherited: createdAt and updatedAt $ref the shared core definitions, which declare db: created_at / db: updated_at for every construct that uses them, and those two tags are accurate for the underlying connection row.

FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
hoststringYesHostname of the organization’s SMTP server.
portintegerYesTCP port the organization’s SMTP server listens on. The server additionally restricts this to a submission-port allowlist; a syntactically valid port outside it is refused.
encryptionstringYesTransport encryption to negotiate. starttls upgrades a cleartext connection (typically port 587), tls opens an implicit TLS connection (typically port 465), and none sends in cleartext and is intended only for an internal relay on a trusted network.
authMechanismstringYesSMTP authentication mechanism. none is permitted only for a relay that authorizes by source address; a configuration using any other mechanism must carry both a username and a password.
usernamestringNoUsername presented to the organization’s SMTP server. Held beside the host rather than with the password because it is an identifier rather than a secret, and the health surface must show it without a decryption round trip. It is usually an email address, so it is returned only on an authorized read.
passwordstringNoPresent only when a password is stored, and then always the redaction sentinel *** - never the stored value, which is encrypted at rest and is never projected into a response. Its presence is therefore the only thing it reports: a configuration whose authMechanism is none stores no password and omits this property entirely. It is optional rather than required for exactly that reason. Read-only, and read-only here means read-only: no request body references this schema. The write semantics belong to the payload schemas - OrganizationSmtpConfigurationPayload on create and OrganizationSmtpCredentialPayload on rotation - and are documented there.
fromAddressstring (email)YesAddress the organization’s mail is sent from. Its domain must be verified before mail is routed through this server.
fromDisplayNamestringNoDisplay name shown alongside the from address in the message header.
replyToAddressstring (email)NoAddress replies are directed to. It is also the address carried when a message falls back to the provider relay, which rewrites the from address to the provider’s own so the message stays aligned for SPF and DMARC.
statusstringYes

Lifecycle and transport verdict, carrying the connection status vocabulary because the configuration IS a connection. registered means configured but never proven - the from domain is unverified, or no message has yet been delivered - and mail takes the provider relay. connected means the last delivery attempt succeeded and mail is routed through this server. disconnected means the most recent delivery attempt did not succeed, and fallbackToProvider governs what becomes of that message. It is a verdict on the last attempt alone: a SINGLE failure records it, there is no failure threshold, and the status does not by itself stop the server being dialled for the next message. Read it as “the last attempt failed”, not as “this server has been taken out of rotation” - the circuit breaker that would do the latter is planned, not built, and is tracked in meshery-cloud#6057. ignored means an administrator turned it off.

The writers are disjoint on purpose: only an administrator writes ignored, and only a delivery outcome writes connected or disconnected. That is what keeps a deliberate opt-out distinguishable from a failing relay. It also makes “enabled while the from domain is unverified” unrepresentable rather than merely forbidden, which is why this property replaces the separate enabled and verificationState pair it supersedes.

fallbackToProviderbooleanYesWhether a message that this server fails to accept is re-sent through the provider’s shared relay. Disabling it means the organization owns delivery entirely and a failure is a dropped message, including account verification and password recovery.
fromDomainstringNoRegistrable domain of the from address, held separately as the unit that ownership is proven for.
fromDomainVerificationTokenstringNoToken the organization publishes in DNS to prove control of the from domain. Not a credential - it authorizes nothing and grants no access.
fromDomainVerifiedAtstring | null (date-time)NoTimestamp at which control of the from domain was last proven. Null while unproven.
lastSuccessAtstring | null (date-time)NoTimestamp of the last message this server accepted.
lastFailureAtstring | null (date-time)NoTimestamp of the last delivery attempt this server rejected or failed to accept.
lastFailureReasonstringNoClassification of the last failure. Always a classification, never the remote server’s own message: the set is closed on purpose, because reporting a remote server’s text back to a caller would turn a refusal into an oracle for what the network can reach.
consecutiveFailuresintegerYesCount of delivery attempts that have failed since the last success, reset to zero by a success. It is a RECORD and nothing more: no threshold reads it, and reaching any particular value does not itself stop a persistently unreachable server being dialled. A consumer must not treat a non-zero count as protection already in place. The circuit breaker that would consume this count - and which needs a threshold, a reset policy, and a decision about its interaction with fallbackToProvider, where an open circuit with fallback off drops account-verification and password-recovery mail - is planned under meshery-cloud#6057.
createdBystring | null (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
createdAtstring (date-time)YesTimestamp when the configuration was created.
updatedAtstring (date-time)YesTimestamp when the configuration was last changed.
deletedAtstring | null (date-time)NoTimestamp when the configuration was soft deleted. Null while it remains active.

Example response

{
  "authMechanism": "plain",
  "consecutiveFailures": 0,
  "createdAt": "0001-01-01T00:00:00Z",
  "createdBy": "00000000-0000-0000-0000-000000000000",
  "deletedAt": null,
  "encryption": "starttls",
  "fallbackToProvider": true,
  "fromAddress": "[email protected]",
  "fromDisplayName": "Example Corp",
  "fromDomain": "example.com",
  "fromDomainVerificationToken": "0f6a5d2c9b1e4a7f8c3d6b0e2a4f7c19",
  "fromDomainVerifiedAt": null,
  "host": "smtp.example.com",
  "id": "00000000-0000-0000-0000-000000000000",
  "lastFailureAt": null,
  "lastSuccessAt": null,
  "organizationId": "00000000-0000-0000-0000-000000000000",
  "password": "***",
  "port": 587,
  "replyToAddress": "[email protected]",
  "status": "registered",
  "updatedAt": "0001-01-01T00:00:00Z",
  "username": "[email protected]"
}
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Caller lacks the permission key required for this organization

text/plain

409
The configuration already exists, or the requested state transition is refused in the configuration’s current state

text/plain

500
Internal server error

text/plain

Organization SMTP Configuration OrganizationSmtp PUT

/api/orgs/{orgId}/environments/mail-relay/connection

Update an organization's SMTP settings

Replaces the settings. The payload has no password property at all and rejects unknown properties, so this operation cannot carry a credential even by accident - rotating the password is a separate operation. That is what lets an administrator rename a display name without retyping a secret, while the redaction sentinel stays refused everywhere it can be written. Changing the from address to a different registrable domain resets from-domain verification and returns the configuration to registered.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/connection

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/connection

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/orgs/{orgId}/environments/mail-relay/connection

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Request body

application/json Required
Client-settable settings of an organization’s mail server, WITHOUT the password. The omission is deliberate and structural: because this schema forbids unknown properties, a client cannot send a credential through this operation at all, so the read-then-write round trip that would otherwise overwrite a stored password with the redaction sentinel is not expressible. Rotate the password through its own operation.
FieldTypeRequiredDescription
hoststringYesHostname of the organization’s SMTP server.
portintegerYesTCP port the organization’s SMTP server listens on. Restricted further by a submission-port allowlist.
encryptionstringNoTransport encryption to negotiate.
authMechanismstringNoSMTP authentication mechanism. Changing this to a mechanism other than none while no password is stored is refused; rotate the credential first.
usernamestringNoUsername presented to the organization’s SMTP server.
fromAddressstring (email)YesAddress the organization’s mail is sent from. Changing it to a different registrable domain resets from-domain verification.
fromDisplayNamestringNoDisplay name shown alongside the from address.
replyToAddressstring (email)NoAddress replies are directed to.
fallbackToProviderbooleanNoWhether a message this server fails to accept is re-sent through the provider’s shared relay.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The stored SMTP configuration.

application/json

An organization’s own outbound mail server. When present and healthy, every transactional email whose reader belongs to this organization - application notifications and identity-flow mail (account verification, password recovery) alike - is delivered through this server rather than through the provider’s shared relay, so the message leaves from the organization’s own domain. At most one live configuration exists per organization. The SMTP password is encrypted at rest and is never returned; reads always carry the redaction sentinel instead.

This is a WIRE contract only. It is not backed by a table of its own: the configuration is stored on the same environment/connection/credential chain that bring-your-own identity providers already uses - a well-known per-organization Environment, joined through environments_connections_mappings to a Connection whose credential_id points at a Credential. The organization relationship lives on environments.organization_id, the dial target on connections.url and connections.metadata, the transport verdict on connections.status, and the password alone in credentials.secret.

No property here carries a construct-specific db tag, because no property here names a column of its own. The exception is deliberate and inherited: createdAt and updatedAt $ref the shared core definitions, which declare db: created_at / db: updated_at for every construct that uses them, and those two tags are accurate for the underlying connection row.

FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
hoststringYesHostname of the organization’s SMTP server.
portintegerYesTCP port the organization’s SMTP server listens on. The server additionally restricts this to a submission-port allowlist; a syntactically valid port outside it is refused.
encryptionstringYesTransport encryption to negotiate. starttls upgrades a cleartext connection (typically port 587), tls opens an implicit TLS connection (typically port 465), and none sends in cleartext and is intended only for an internal relay on a trusted network.
authMechanismstringYesSMTP authentication mechanism. none is permitted only for a relay that authorizes by source address; a configuration using any other mechanism must carry both a username and a password.
usernamestringNoUsername presented to the organization’s SMTP server. Held beside the host rather than with the password because it is an identifier rather than a secret, and the health surface must show it without a decryption round trip. It is usually an email address, so it is returned only on an authorized read.
passwordstringNoPresent only when a password is stored, and then always the redaction sentinel *** - never the stored value, which is encrypted at rest and is never projected into a response. Its presence is therefore the only thing it reports: a configuration whose authMechanism is none stores no password and omits this property entirely. It is optional rather than required for exactly that reason. Read-only, and read-only here means read-only: no request body references this schema. The write semantics belong to the payload schemas - OrganizationSmtpConfigurationPayload on create and OrganizationSmtpCredentialPayload on rotation - and are documented there.
fromAddressstring (email)YesAddress the organization’s mail is sent from. Its domain must be verified before mail is routed through this server.
fromDisplayNamestringNoDisplay name shown alongside the from address in the message header.
replyToAddressstring (email)NoAddress replies are directed to. It is also the address carried when a message falls back to the provider relay, which rewrites the from address to the provider’s own so the message stays aligned for SPF and DMARC.
statusstringYes

Lifecycle and transport verdict, carrying the connection status vocabulary because the configuration IS a connection. registered means configured but never proven - the from domain is unverified, or no message has yet been delivered - and mail takes the provider relay. connected means the last delivery attempt succeeded and mail is routed through this server. disconnected means the most recent delivery attempt did not succeed, and fallbackToProvider governs what becomes of that message. It is a verdict on the last attempt alone: a SINGLE failure records it, there is no failure threshold, and the status does not by itself stop the server being dialled for the next message. Read it as “the last attempt failed”, not as “this server has been taken out of rotation” - the circuit breaker that would do the latter is planned, not built, and is tracked in meshery-cloud#6057. ignored means an administrator turned it off.

The writers are disjoint on purpose: only an administrator writes ignored, and only a delivery outcome writes connected or disconnected. That is what keeps a deliberate opt-out distinguishable from a failing relay. It also makes “enabled while the from domain is unverified” unrepresentable rather than merely forbidden, which is why this property replaces the separate enabled and verificationState pair it supersedes.

fallbackToProviderbooleanYesWhether a message that this server fails to accept is re-sent through the provider’s shared relay. Disabling it means the organization owns delivery entirely and a failure is a dropped message, including account verification and password recovery.
fromDomainstringNoRegistrable domain of the from address, held separately as the unit that ownership is proven for.
fromDomainVerificationTokenstringNoToken the organization publishes in DNS to prove control of the from domain. Not a credential - it authorizes nothing and grants no access.
fromDomainVerifiedAtstring | null (date-time)NoTimestamp at which control of the from domain was last proven. Null while unproven.
lastSuccessAtstring | null (date-time)NoTimestamp of the last message this server accepted.
lastFailureAtstring | null (date-time)NoTimestamp of the last delivery attempt this server rejected or failed to accept.
lastFailureReasonstringNoClassification of the last failure. Always a classification, never the remote server’s own message: the set is closed on purpose, because reporting a remote server’s text back to a caller would turn a refusal into an oracle for what the network can reach.
consecutiveFailuresintegerYesCount of delivery attempts that have failed since the last success, reset to zero by a success. It is a RECORD and nothing more: no threshold reads it, and reaching any particular value does not itself stop a persistently unreachable server being dialled. A consumer must not treat a non-zero count as protection already in place. The circuit breaker that would consume this count - and which needs a threshold, a reset policy, and a decision about its interaction with fallbackToProvider, where an open circuit with fallback off drops account-verification and password-recovery mail - is planned under meshery-cloud#6057.
createdBystring | null (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
createdAtstring (date-time)YesTimestamp when the configuration was created.
updatedAtstring (date-time)YesTimestamp when the configuration was last changed.
deletedAtstring | null (date-time)NoTimestamp when the configuration was soft deleted. Null while it remains active.

Example response

{
  "authMechanism": "plain",
  "consecutiveFailures": 0,
  "createdAt": "0001-01-01T00:00:00Z",
  "createdBy": "00000000-0000-0000-0000-000000000000",
  "deletedAt": null,
  "encryption": "starttls",
  "fallbackToProvider": true,
  "fromAddress": "[email protected]",
  "fromDisplayName": "Example Corp",
  "fromDomain": "example.com",
  "fromDomainVerificationToken": "0f6a5d2c9b1e4a7f8c3d6b0e2a4f7c19",
  "fromDomainVerifiedAt": null,
  "host": "smtp.example.com",
  "id": "00000000-0000-0000-0000-000000000000",
  "lastFailureAt": null,
  "lastSuccessAt": null,
  "organizationId": "00000000-0000-0000-0000-000000000000",
  "password": "***",
  "port": 587,
  "replyToAddress": "[email protected]",
  "status": "registered",
  "updatedAt": "0001-01-01T00:00:00Z",
  "username": "[email protected]"
}
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Caller lacks the permission key required for this organization

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Organization SMTP Configuration OrganizationSmtp PUT

/api/orgs/{orgId}/environments/mail-relay/connection/credential

Rotate the password presented to an organization's SMTP server

Replaces the stored password. The redaction sentinel *** and the empty string are REFUSED with a 400 rather than treated as “leave it alone”, so a client that echoes a read back cannot overwrite the credential with the sentinel.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/connection/credential

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/connection/credential

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/orgs/{orgId}/environments/mail-relay/connection/credential

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Request body

application/json Required
The password presented to an organization’s SMTP server. The only payload that carries it after creation.
FieldTypeRequiredDescription
passwordstringYesNew password. The redaction sentinel *** and the empty string are refused with a 400 rather than treated as “leave the stored value alone”, so echoing a read back cannot erase the credential.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The stored SMTP configuration, with the password redacted.

application/json

An organization’s own outbound mail server. When present and healthy, every transactional email whose reader belongs to this organization - application notifications and identity-flow mail (account verification, password recovery) alike - is delivered through this server rather than through the provider’s shared relay, so the message leaves from the organization’s own domain. At most one live configuration exists per organization. The SMTP password is encrypted at rest and is never returned; reads always carry the redaction sentinel instead.

This is a WIRE contract only. It is not backed by a table of its own: the configuration is stored on the same environment/connection/credential chain that bring-your-own identity providers already uses - a well-known per-organization Environment, joined through environments_connections_mappings to a Connection whose credential_id points at a Credential. The organization relationship lives on environments.organization_id, the dial target on connections.url and connections.metadata, the transport verdict on connections.status, and the password alone in credentials.secret.

No property here carries a construct-specific db tag, because no property here names a column of its own. The exception is deliberate and inherited: createdAt and updatedAt $ref the shared core definitions, which declare db: created_at / db: updated_at for every construct that uses them, and those two tags are accurate for the underlying connection row.

FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
hoststringYesHostname of the organization’s SMTP server.
portintegerYesTCP port the organization’s SMTP server listens on. The server additionally restricts this to a submission-port allowlist; a syntactically valid port outside it is refused.
encryptionstringYesTransport encryption to negotiate. starttls upgrades a cleartext connection (typically port 587), tls opens an implicit TLS connection (typically port 465), and none sends in cleartext and is intended only for an internal relay on a trusted network.
authMechanismstringYesSMTP authentication mechanism. none is permitted only for a relay that authorizes by source address; a configuration using any other mechanism must carry both a username and a password.
usernamestringNoUsername presented to the organization’s SMTP server. Held beside the host rather than with the password because it is an identifier rather than a secret, and the health surface must show it without a decryption round trip. It is usually an email address, so it is returned only on an authorized read.
passwordstringNoPresent only when a password is stored, and then always the redaction sentinel *** - never the stored value, which is encrypted at rest and is never projected into a response. Its presence is therefore the only thing it reports: a configuration whose authMechanism is none stores no password and omits this property entirely. It is optional rather than required for exactly that reason. Read-only, and read-only here means read-only: no request body references this schema. The write semantics belong to the payload schemas - OrganizationSmtpConfigurationPayload on create and OrganizationSmtpCredentialPayload on rotation - and are documented there.
fromAddressstring (email)YesAddress the organization’s mail is sent from. Its domain must be verified before mail is routed through this server.
fromDisplayNamestringNoDisplay name shown alongside the from address in the message header.
replyToAddressstring (email)NoAddress replies are directed to. It is also the address carried when a message falls back to the provider relay, which rewrites the from address to the provider’s own so the message stays aligned for SPF and DMARC.
statusstringYes

Lifecycle and transport verdict, carrying the connection status vocabulary because the configuration IS a connection. registered means configured but never proven - the from domain is unverified, or no message has yet been delivered - and mail takes the provider relay. connected means the last delivery attempt succeeded and mail is routed through this server. disconnected means the most recent delivery attempt did not succeed, and fallbackToProvider governs what becomes of that message. It is a verdict on the last attempt alone: a SINGLE failure records it, there is no failure threshold, and the status does not by itself stop the server being dialled for the next message. Read it as “the last attempt failed”, not as “this server has been taken out of rotation” - the circuit breaker that would do the latter is planned, not built, and is tracked in meshery-cloud#6057. ignored means an administrator turned it off.

The writers are disjoint on purpose: only an administrator writes ignored, and only a delivery outcome writes connected or disconnected. That is what keeps a deliberate opt-out distinguishable from a failing relay. It also makes “enabled while the from domain is unverified” unrepresentable rather than merely forbidden, which is why this property replaces the separate enabled and verificationState pair it supersedes.

fallbackToProviderbooleanYesWhether a message that this server fails to accept is re-sent through the provider’s shared relay. Disabling it means the organization owns delivery entirely and a failure is a dropped message, including account verification and password recovery.
fromDomainstringNoRegistrable domain of the from address, held separately as the unit that ownership is proven for.
fromDomainVerificationTokenstringNoToken the organization publishes in DNS to prove control of the from domain. Not a credential - it authorizes nothing and grants no access.
fromDomainVerifiedAtstring | null (date-time)NoTimestamp at which control of the from domain was last proven. Null while unproven.
lastSuccessAtstring | null (date-time)NoTimestamp of the last message this server accepted.
lastFailureAtstring | null (date-time)NoTimestamp of the last delivery attempt this server rejected or failed to accept.
lastFailureReasonstringNoClassification of the last failure. Always a classification, never the remote server’s own message: the set is closed on purpose, because reporting a remote server’s text back to a caller would turn a refusal into an oracle for what the network can reach.
consecutiveFailuresintegerYesCount of delivery attempts that have failed since the last success, reset to zero by a success. It is a RECORD and nothing more: no threshold reads it, and reaching any particular value does not itself stop a persistently unreachable server being dialled. A consumer must not treat a non-zero count as protection already in place. The circuit breaker that would consume this count - and which needs a threshold, a reset policy, and a decision about its interaction with fallbackToProvider, where an open circuit with fallback off drops account-verification and password-recovery mail - is planned under meshery-cloud#6057.
createdBystring | null (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
createdAtstring (date-time)YesTimestamp when the configuration was created.
updatedAtstring (date-time)YesTimestamp when the configuration was last changed.
deletedAtstring | null (date-time)NoTimestamp when the configuration was soft deleted. Null while it remains active.

Example response

{
  "authMechanism": "plain",
  "consecutiveFailures": 0,
  "createdAt": "0001-01-01T00:00:00Z",
  "createdBy": "00000000-0000-0000-0000-000000000000",
  "deletedAt": null,
  "encryption": "starttls",
  "fallbackToProvider": true,
  "fromAddress": "[email protected]",
  "fromDisplayName": "Example Corp",
  "fromDomain": "example.com",
  "fromDomainVerificationToken": "0f6a5d2c9b1e4a7f8c3d6b0e2a4f7c19",
  "fromDomainVerifiedAt": null,
  "host": "smtp.example.com",
  "id": "00000000-0000-0000-0000-000000000000",
  "lastFailureAt": null,
  "lastSuccessAt": null,
  "organizationId": "00000000-0000-0000-0000-000000000000",
  "password": "***",
  "port": 587,
  "replyToAddress": "[email protected]",
  "status": "registered",
  "updatedAt": "0001-01-01T00:00:00Z",
  "username": "[email protected]"
}
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Caller lacks the permission key required for this organization

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Organization SMTP Configuration OrganizationSmtp POST

/api/orgs/{orgId}/environments/mail-relay/connection/enablement

Turn an organization's own mail server on or off

The only operation by which an administrator writes the configuration’s status, and it can write only the two administrative states: turning it off moves the configuration to ignored, and turning it on returns it to registered so that it must prove itself again before mail is routed. connected and disconnected are written by delivery outcomes alone and are never settable here, which is what keeps a deliberate opt-out distinguishable from a failing relay. Turning it on is refused with a 409 while the from domain is unverified.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/connection/enablement

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/connection/enablement

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/orgs/{orgId}/environments/mail-relay/connection/enablement

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Request body

application/json Required
Administrative on/off for an organization’s own mail server. It cannot express the delivery-driven states, which are written by outcomes alone.
FieldTypeRequiredDescription
enabledbooleanYesTrue returns the configuration to registered so it may prove itself and carry mail; false moves it to ignored. Turning it on is refused while the from domain is unverified.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The stored SMTP configuration.

application/json

An organization’s own outbound mail server. When present and healthy, every transactional email whose reader belongs to this organization - application notifications and identity-flow mail (account verification, password recovery) alike - is delivered through this server rather than through the provider’s shared relay, so the message leaves from the organization’s own domain. At most one live configuration exists per organization. The SMTP password is encrypted at rest and is never returned; reads always carry the redaction sentinel instead.

This is a WIRE contract only. It is not backed by a table of its own: the configuration is stored on the same environment/connection/credential chain that bring-your-own identity providers already uses - a well-known per-organization Environment, joined through environments_connections_mappings to a Connection whose credential_id points at a Credential. The organization relationship lives on environments.organization_id, the dial target on connections.url and connections.metadata, the transport verdict on connections.status, and the password alone in credentials.secret.

No property here carries a construct-specific db tag, because no property here names a column of its own. The exception is deliberate and inherited: createdAt and updatedAt $ref the shared core definitions, which declare db: created_at / db: updated_at for every construct that uses them, and those two tags are accurate for the underlying connection row.

FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
hoststringYesHostname of the organization’s SMTP server.
portintegerYesTCP port the organization’s SMTP server listens on. The server additionally restricts this to a submission-port allowlist; a syntactically valid port outside it is refused.
encryptionstringYesTransport encryption to negotiate. starttls upgrades a cleartext connection (typically port 587), tls opens an implicit TLS connection (typically port 465), and none sends in cleartext and is intended only for an internal relay on a trusted network.
authMechanismstringYesSMTP authentication mechanism. none is permitted only for a relay that authorizes by source address; a configuration using any other mechanism must carry both a username and a password.
usernamestringNoUsername presented to the organization’s SMTP server. Held beside the host rather than with the password because it is an identifier rather than a secret, and the health surface must show it without a decryption round trip. It is usually an email address, so it is returned only on an authorized read.
passwordstringNoPresent only when a password is stored, and then always the redaction sentinel *** - never the stored value, which is encrypted at rest and is never projected into a response. Its presence is therefore the only thing it reports: a configuration whose authMechanism is none stores no password and omits this property entirely. It is optional rather than required for exactly that reason. Read-only, and read-only here means read-only: no request body references this schema. The write semantics belong to the payload schemas - OrganizationSmtpConfigurationPayload on create and OrganizationSmtpCredentialPayload on rotation - and are documented there.
fromAddressstring (email)YesAddress the organization’s mail is sent from. Its domain must be verified before mail is routed through this server.
fromDisplayNamestringNoDisplay name shown alongside the from address in the message header.
replyToAddressstring (email)NoAddress replies are directed to. It is also the address carried when a message falls back to the provider relay, which rewrites the from address to the provider’s own so the message stays aligned for SPF and DMARC.
statusstringYes

Lifecycle and transport verdict, carrying the connection status vocabulary because the configuration IS a connection. registered means configured but never proven - the from domain is unverified, or no message has yet been delivered - and mail takes the provider relay. connected means the last delivery attempt succeeded and mail is routed through this server. disconnected means the most recent delivery attempt did not succeed, and fallbackToProvider governs what becomes of that message. It is a verdict on the last attempt alone: a SINGLE failure records it, there is no failure threshold, and the status does not by itself stop the server being dialled for the next message. Read it as “the last attempt failed”, not as “this server has been taken out of rotation” - the circuit breaker that would do the latter is planned, not built, and is tracked in meshery-cloud#6057. ignored means an administrator turned it off.

The writers are disjoint on purpose: only an administrator writes ignored, and only a delivery outcome writes connected or disconnected. That is what keeps a deliberate opt-out distinguishable from a failing relay. It also makes “enabled while the from domain is unverified” unrepresentable rather than merely forbidden, which is why this property replaces the separate enabled and verificationState pair it supersedes.

fallbackToProviderbooleanYesWhether a message that this server fails to accept is re-sent through the provider’s shared relay. Disabling it means the organization owns delivery entirely and a failure is a dropped message, including account verification and password recovery.
fromDomainstringNoRegistrable domain of the from address, held separately as the unit that ownership is proven for.
fromDomainVerificationTokenstringNoToken the organization publishes in DNS to prove control of the from domain. Not a credential - it authorizes nothing and grants no access.
fromDomainVerifiedAtstring | null (date-time)NoTimestamp at which control of the from domain was last proven. Null while unproven.
lastSuccessAtstring | null (date-time)NoTimestamp of the last message this server accepted.
lastFailureAtstring | null (date-time)NoTimestamp of the last delivery attempt this server rejected or failed to accept.
lastFailureReasonstringNoClassification of the last failure. Always a classification, never the remote server’s own message: the set is closed on purpose, because reporting a remote server’s text back to a caller would turn a refusal into an oracle for what the network can reach.
consecutiveFailuresintegerYesCount of delivery attempts that have failed since the last success, reset to zero by a success. It is a RECORD and nothing more: no threshold reads it, and reaching any particular value does not itself stop a persistently unreachable server being dialled. A consumer must not treat a non-zero count as protection already in place. The circuit breaker that would consume this count - and which needs a threshold, a reset policy, and a decision about its interaction with fallbackToProvider, where an open circuit with fallback off drops account-verification and password-recovery mail - is planned under meshery-cloud#6057.
createdBystring | null (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
createdAtstring (date-time)YesTimestamp when the configuration was created.
updatedAtstring (date-time)YesTimestamp when the configuration was last changed.
deletedAtstring | null (date-time)NoTimestamp when the configuration was soft deleted. Null while it remains active.

Example response

{
  "authMechanism": "plain",
  "consecutiveFailures": 0,
  "createdAt": "0001-01-01T00:00:00Z",
  "createdBy": "00000000-0000-0000-0000-000000000000",
  "deletedAt": null,
  "encryption": "starttls",
  "fallbackToProvider": true,
  "fromAddress": "[email protected]",
  "fromDisplayName": "Example Corp",
  "fromDomain": "example.com",
  "fromDomainVerificationToken": "0f6a5d2c9b1e4a7f8c3d6b0e2a4f7c19",
  "fromDomainVerifiedAt": null,
  "host": "smtp.example.com",
  "id": "00000000-0000-0000-0000-000000000000",
  "lastFailureAt": null,
  "lastSuccessAt": null,
  "organizationId": "00000000-0000-0000-0000-000000000000",
  "password": "***",
  "port": 587,
  "replyToAddress": "[email protected]",
  "status": "registered",
  "updatedAt": "0001-01-01T00:00:00Z",
  "username": "[email protected]"
}
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Caller lacks the permission key required for this organization

text/plain

404
Result not found

text/plain

409
The configuration already exists, or the requested state transition is refused in the configuration’s current state

text/plain

500
Internal server error

text/plain

Organization SMTP Configuration OrganizationSmtp POST

/api/orgs/{orgId}/environments/mail-relay/connection/test

Send a test message through an organization's SMTP configuration

Delivers a real message through the configured server and reports a classified outcome. A real delivery rather than a connection probe on purpose: a server that connects and authenticates but refuses the sender or the recipient is the most common misconfiguration, and a probe reports it healthy. A successful test is also what promotes a verified configuration from registered to connected, so this operation is part of the lifecycle rather than a convenience. It takes the same permission as a write, because there is no read-only form of dialling an arbitrary host, and it is rate limited per organization. The recipient defaults to the calling administrator’s own address. The outcome is a classification, never the remote server’s own text.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/connection/test

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/connection/test

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/orgs/{orgId}/environments/mail-relay/connection/test

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Request body

application/json Optional
Options for a test delivery.
FieldTypeRequiredDescription
tostring (email)NoRecipient of the test message. Defaults to the calling administrator’s own address.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The classified outcome of the delivery attempt.

application/json

Classified outcome of a test delivery. Carries no text from the remote server, so a refusal reveals nothing about what the network can reach.
FieldTypeRequiredDescription
outcomestringYesWhat happened. delivered means the server accepted the message; every other value names the stage that refused it.
messagestringNoHuman-readable summary of the outcome, drawn from a fixed set of phrasings.
sentTostring (email)NoAddress the test message was addressed to.
testedAtstring (date-time)YesWhen the delivery was attempted.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Caller lacks the permission key required for this organization

text/plain

404
Result not found

text/plain

429
Too many attempts for this organization

text/plain

500
Internal server error

text/plain

Organization SMTP Configuration OrganizationSmtp GET

/api/orgs/{orgId}/environments/mail-relay/domain-verification

Get the from-domain verification challenge

Returns the DNS record the organization must publish to prove control of its from domain, together with the current verification state. A from domain that matches the organization’s own registered custom domain is already proven and needs no record.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/domain-verification

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/domain-verification

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/orgs/{orgId}/environments/mail-relay/domain-verification

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The verification challenge and its current state.

application/json

The DNS record proving control of an organization’s from domain, and the current state of that proof.
FieldTypeRequiredDescription
domainstringYesRegistrable domain the proof applies to.
methodstringYesHow the domain is proven. custom-domain means it matches the organization’s own registered custom domain and needs no record; dns-txt means the record below must be published.
recordNamestringNoFully qualified name of the TXT record to publish.
recordValuestringNoValue the TXT record must carry.
verifiedbooleanYesWhether control of the domain is currently proven.
verifiedAtstring | null (date-time)NoWhen control was last proven. Null while unproven.
failureReasonstringNoWhy the last check did not prove control.
401
Expired JWT token used or insufficient privilege

text/plain

403
Caller lacks the permission key required for this organization

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Organization SMTP Configuration OrganizationSmtp POST

/api/orgs/{orgId}/environments/mail-relay/domain-verification

Check the from-domain verification challenge

Resolves the challenge record and records the result. Proving the domain is what permits mail to be routed through the organization’s server. Rate limited per organization.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/domain-verification

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/orgs/{orgId}/environments/mail-relay/domain-verification

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/orgs/{orgId}/environments/mail-relay/domain-verification

Parameters

Path parameters

NameTypeRequiredDescription
orgIdstring (uuid)YesOrganization ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The outcome of the verification check.

application/json

The DNS record proving control of an organization’s from domain, and the current state of that proof.
FieldTypeRequiredDescription
domainstringYesRegistrable domain the proof applies to.
methodstringYesHow the domain is proven. custom-domain means it matches the organization’s own registered custom domain and needs no record; dns-txt means the record below must be published.
recordNamestringNoFully qualified name of the TXT record to publish.
recordValuestringNoValue the TXT record must carry.
verifiedbooleanYesWhether control of the domain is currently proven.
verifiedAtstring | null (date-time)NoWhen control was last proven. Null while unproven.
failureReasonstringNoWhy the last check did not prove control.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Caller lacks the permission key required for this organization

text/plain

404
Result not found

text/plain

429
Too many attempts for this organization

text/plain

500
Internal server error

text/plain

Design Designs POST

/api/pattern/import

Import Design

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/pattern/import

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/pattern/import

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/pattern/import

Request body

application/json Required
Body for POST /api/pattern/import. Consumed by the server as application/json. Exactly one of two variants must be supplied: a File Import carrying base64-encoded bytes plus a file name, or a URL Import naming a remote location the server will fetch. Sending both variants at once, or neither, is rejected with 400.

File Import

Upload a design file from the local system. Both file and fileName are required; the server uses the file name to identify the file type (Kubernetes Manifest, Helm Chart, Docker Compose, or Meshery Design).
FieldTypeRequiredDescription
filestring (byte)YesBase64-encoded file bytes. Supported formats: Kubernetes Manifests, Helm Charts, Docker Compose, and Meshery Designs. See Import Designs Documentation for details.
fileNamestringYesThe name of the pattern file being imported. Include the extension (e.g. design.yaml), as the server uses it to identify the file type.
namestringNoProvide a name for your design. This name will help you identify the design later. You can also change the name of your design after importing it.

URL Import

Import a design by URL. The server will fetch the resource and derive the file type from the response.
FieldTypeRequiredDescription
namestringNoProvide a name for your design. This name will help you identify the design later. You can also change the name of your design after importing it.
urlstring (uri)YesA direct URL to a single file, for example: https://raw.github.com/your-design-file.yaml. Ensure the resource is in a supported format: Kubernetes Manifest, Helm Chart, Docker Compose, or Meshery Design. See Import Designs Documentation for details.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Successful import. The response body is a JSON array of the saved designs, not a message envelope. The import path saves exactly one design, so the array carries a single element and consumers read the imported design as the first element.

application/json

Designs persisted by the import, in the order they were saved. Always a single element on this path.
FieldTypeRequiredDescription
catalogDataobjectNoCatalog metadata attached to the design when published.
cloneCountintegerNoServer-aggregated count of times this design has been cloned from the catalog. Server-managed and ignored on writes.
createdAtstring (date-time)NoTimestamp of design creation.
deploymentCountintegerNoServer-aggregated count of deployments originated from this design. Server-managed and ignored on writes.
designTypestring | nullNoDiscriminator identifying the source format of the design body, persisted in the meshery_patterns table’s source_type column (nullable; null for legacy rows imported before the column was introduced). For catalog listings the server may also project this field from the attached catalog metadata. Use this field to branch rendering between native Meshery designs and imported Helm charts, Kubernetes manifests, and Docker Compose files.
downloadCountintegerNoServer-aggregated count of downloads of this design from the catalog. Server-managed and ignored on writes.
idstring (uuid)NoServer-generated design ID.
locationobjectNoOptional structured location metadata (branch, host, path, …). For a design bound to a GitHub source the keys are those of DesignSourceLocation, including commitSha.
namestringNoHuman-readable design name.
organizationIdstring (uuid)YesThe organization the design belongs to. The server sets it from the session organization (X-Current-Orgid, or the caller’s selected organization) on create, including import. Never accepted from clients. A workspace this design is assigned to must belong to this same organization.
patternFilestringNoRaw design body as it is persisted in the meshery_patterns table’s pattern_file column. The wire form is the YAML/JSON string the server stores verbatim; consumers that need the structured form transcode at the boundary by parsing the string into a PatternFile (see #/components/schemas/PatternFile) and marshalling it back when they write. Keeping the wire shape as a string mirrors the column’s actual representation and avoids forcing every consumer through the structured-vs- string union that the previous *PatternFile typing implied.
shareCountintegerNoServer-aggregated count of share events for this design. Server-managed and ignored on writes.
sourceContentstring | null (byte)NoRaw bytes of the imported source artifact (Helm chart tarball, Kubernetes manifest, Docker Compose file, etc.) preserved in the meshery_patterns table’s source_content column for non-Meshery-Design imports. Empty / null for native Meshery designs. Server-managed: populated by the import and upload handlers and scrubbed to null on most read responses, so clients should treat this as opaque base64-encoded bytes when it does appear on the wire.
updatedAtstring (date-time)NoTimestamp of last design modification.
userobject | nullNoOwning user record, joined inline by the catalog list/get handlers when shaping responses. Server-projected from the users table via the design’s userId; not a column on the meshery_patterns table itself, so the generated Go field is tagged db:"-" to keep it out of ORM column scans.
userIdstring (uuid)NoOwning user ID.
viewCountintegerNoServer-aggregated count of views on this design in the catalog. Present on list/catalog responses; server-managed and ignored on writes.
visibilitystringNoVisibility scope of the design — controls whether non-owners may read or list it. private is owner-only, public is readable by anyone in the org, and published is visible in the catalog.
400
Invalid request format
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error
Performance GET

/api/performance/profiles

List performance profiles

Returns the performance profiles owned by the authenticated user, with pagination, search, and ordering.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/performance/profiles

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/performance/profiles

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/performance/profiles

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pagesizestringNoGet responses by pagesize
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Performance profiles

application/json

Paginated list of performance profiles.
FieldTypeRequiredDescription
pageintegerYesZero-based page index returned in this response.
pageSizeintegerYesMaximum number of items returned on each page.
profilesarray of objectYesPerformance profiles in this page.
totalCountintegerYesTotal number of performance profiles across all pages.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Performance POST

/api/performance/profiles

Create or update a performance profile

Creates a new performance profile when the body omits id, or updates the matching existing profile when an id is provided.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/performance/profiles

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/performance/profiles

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/performance/profiles

Request body

application/json Required
Body for creating or updating a performance profile.
Payload for creating or updating a performance profile. Includes only client-settable fields; server-generated fields (id on create, createdAt, updatedAt, lastRun, totalResults) are populated by the server.
FieldTypeRequiredDescription
concurrentRequestintegerNoNumber of concurrent requests issued by the load generator.
contentTypestringNoContent-Type header value applied to each load-test request body (e.g. “application/json”).
durationstringYesDuration of the load test, expressed as a Go duration string (e.g. “30s”, “5m”, “1h”).
endpointsarray of stringYesEndpoints (URLs) targeted by the performance profile’s load test.
idstring (uuid)NoExisting performance-profile ID for updates; omit on create.
loadGeneratorsarray of stringYesLoad generators (e.g. fortio, wrk2, nighthawk) to drive the profile’s load test.
metadataobjectNoFree-form metadata associated with the performance profile.
namestringYesHuman-readable name of the performance profile.
ownerstring (uuid)NoOwner user ID. When omitted, the server infers it from the authenticated user.
qpsintegerNoTarget queries-per-second rate for the load generator. Zero indicates the generator runs unthrottled.
requestBodystringNoHTTP request body sent on each load-test request.
requestCookiesstringNoHTTP request cookies, serialized as JSON, sent on each load-test request.
requestHeadersstringNoHTTP request headers, serialized as JSON, sent on each load-test request.
schedulestring | null (uuid)NoOptional schedule ID associating the profile with a recurring run.
serviceMeshstringNoService mesh under test for the profile (e.g. istio, linkerd, consul). Empty string when the profile is mesh-agnostic.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Performance profile upserted

application/json

A performance profile captures the configuration for a load test run by Meshery against one or more service-mesh endpoints. Profiles are owned by a user and can optionally be associated with a recurring schedule. Learn more at https://docs.meshery.io/tasks/performance-management
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the performance profile.
namestringYesHuman-readable name of the performance profile.
ownerstring (uuid)YesUser ID of the profile owner.
schedulestring | null (uuid)NoOptional schedule ID associated with this performance profile. Null when the profile is not bound to a recurring schedule.
loadGeneratorsarray of stringNoLoad generators (e.g. fortio, wrk2, nighthawk) to drive the profile’s load test.
endpointsarray of stringNoEndpoints (URLs) targeted by the performance profile’s load test.
serviceMeshstringNoService mesh under test for the profile (e.g. istio, linkerd, consul). Empty string when the profile is mesh-agnostic.
concurrentRequestintegerNoNumber of concurrent requests issued by the load generator.
qpsintegerNoTarget queries-per-second rate for the load generator. Zero indicates the generator runs unthrottled.
durationstringNoDuration of the load test, expressed as a Go duration string (e.g. “30s”, “5m”, “1h”).
requestHeadersstringNoHTTP request headers, serialized as JSON, sent on each load-test request. Empty string when no headers are configured.
requestCookiesstringNoHTTP request cookies, serialized as JSON, sent on each load-test request. Empty string when no cookies are configured.
requestBodystringNoHTTP request body sent on each load-test request. Empty string when no body is configured.
contentTypestringNoContent-Type header value applied to each load-test request body (e.g. “application/json”). Empty string when no body is configured.
metadataobjectNoFree-form metadata associated with the performance profile.
lastRunstring | null (date-time)NoServer-computed timestamp of the most recent load-test run that used this profile. Null until the first run completes. Server-managed; clients must not set this on create/update.
totalResultsintegerNoServer-computed count of load-test results recorded for this profile. Server-managed; clients must not set this on create/update.
createdAtstring (date-time)YesTimestamp when the performance profile was created.
updatedAtstring (date-time)YesTimestamp when the performance profile was last updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Performance GET

/api/performance/profiles/{performanceProfileId}

Get a performance profile by ID

Returns a single performance profile owned by (or visible to) the authenticated user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/performance/profiles/{performanceProfileId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/performance/profiles/{performanceProfileId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/performance/profiles/{performanceProfileId}

Parameters

Path parameters

NameTypeRequiredDescription
performanceProfileIdstring (uuid)YesPerformance profile ID.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Performance profile

application/json

A performance profile captures the configuration for a load test run by Meshery against one or more service-mesh endpoints. Profiles are owned by a user and can optionally be associated with a recurring schedule. Learn more at https://docs.meshery.io/tasks/performance-management
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the performance profile.
namestringYesHuman-readable name of the performance profile.
ownerstring (uuid)YesUser ID of the profile owner.
schedulestring | null (uuid)NoOptional schedule ID associated with this performance profile. Null when the profile is not bound to a recurring schedule.
loadGeneratorsarray of stringNoLoad generators (e.g. fortio, wrk2, nighthawk) to drive the profile’s load test.
endpointsarray of stringNoEndpoints (URLs) targeted by the performance profile’s load test.
serviceMeshstringNoService mesh under test for the profile (e.g. istio, linkerd, consul). Empty string when the profile is mesh-agnostic.
concurrentRequestintegerNoNumber of concurrent requests issued by the load generator.
qpsintegerNoTarget queries-per-second rate for the load generator. Zero indicates the generator runs unthrottled.
durationstringNoDuration of the load test, expressed as a Go duration string (e.g. “30s”, “5m”, “1h”).
requestHeadersstringNoHTTP request headers, serialized as JSON, sent on each load-test request. Empty string when no headers are configured.
requestCookiesstringNoHTTP request cookies, serialized as JSON, sent on each load-test request. Empty string when no cookies are configured.
requestBodystringNoHTTP request body sent on each load-test request. Empty string when no body is configured.
contentTypestringNoContent-Type header value applied to each load-test request body (e.g. “application/json”). Empty string when no body is configured.
metadataobjectNoFree-form metadata associated with the performance profile.
lastRunstring | null (date-time)NoServer-computed timestamp of the most recent load-test run that used this profile. Null until the first run completes. Server-managed; clients must not set this on create/update.
totalResultsintegerNoServer-computed count of load-test results recorded for this profile. Server-managed; clients must not set this on create/update.
createdAtstring (date-time)YesTimestamp when the performance profile was created.
updatedAtstring (date-time)YesTimestamp when the performance profile was last updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Performance PUT

/api/performance/profiles/{performanceProfileId}

Update a performance profile

Updates the performance profile identified by the path parameter.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/performance/profiles/{performanceProfileId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/performance/profiles/{performanceProfileId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/performance/profiles/{performanceProfileId}

Parameters

Path parameters

NameTypeRequiredDescription
performanceProfileIdstring (uuid)YesPerformance profile ID.

Request body

application/json Required
Body for creating or updating a performance profile.
Payload for creating or updating a performance profile. Includes only client-settable fields; server-generated fields (id on create, createdAt, updatedAt, lastRun, totalResults) are populated by the server.
FieldTypeRequiredDescription
concurrentRequestintegerNoNumber of concurrent requests issued by the load generator.
contentTypestringNoContent-Type header value applied to each load-test request body (e.g. “application/json”).
durationstringYesDuration of the load test, expressed as a Go duration string (e.g. “30s”, “5m”, “1h”).
endpointsarray of stringYesEndpoints (URLs) targeted by the performance profile’s load test.
idstring (uuid)NoExisting performance-profile ID for updates; omit on create.
loadGeneratorsarray of stringYesLoad generators (e.g. fortio, wrk2, nighthawk) to drive the profile’s load test.
metadataobjectNoFree-form metadata associated with the performance profile.
namestringYesHuman-readable name of the performance profile.
ownerstring (uuid)NoOwner user ID. When omitted, the server infers it from the authenticated user.
qpsintegerNoTarget queries-per-second rate for the load generator. Zero indicates the generator runs unthrottled.
requestBodystringNoHTTP request body sent on each load-test request.
requestCookiesstringNoHTTP request cookies, serialized as JSON, sent on each load-test request.
requestHeadersstringNoHTTP request headers, serialized as JSON, sent on each load-test request.
schedulestring | null (uuid)NoOptional schedule ID associating the profile with a recurring run.
serviceMeshstringNoService mesh under test for the profile (e.g. istio, linkerd, consul). Empty string when the profile is mesh-agnostic.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Performance profile

application/json

A performance profile captures the configuration for a load test run by Meshery against one or more service-mesh endpoints. Profiles are owned by a user and can optionally be associated with a recurring schedule. Learn more at https://docs.meshery.io/tasks/performance-management
FieldTypeRequiredDescription
idstring (uuid)YesUnique identifier for the performance profile.
namestringYesHuman-readable name of the performance profile.
ownerstring (uuid)YesUser ID of the profile owner.
schedulestring | null (uuid)NoOptional schedule ID associated with this performance profile. Null when the profile is not bound to a recurring schedule.
loadGeneratorsarray of stringNoLoad generators (e.g. fortio, wrk2, nighthawk) to drive the profile’s load test.
endpointsarray of stringNoEndpoints (URLs) targeted by the performance profile’s load test.
serviceMeshstringNoService mesh under test for the profile (e.g. istio, linkerd, consul). Empty string when the profile is mesh-agnostic.
concurrentRequestintegerNoNumber of concurrent requests issued by the load generator.
qpsintegerNoTarget queries-per-second rate for the load generator. Zero indicates the generator runs unthrottled.
durationstringNoDuration of the load test, expressed as a Go duration string (e.g. “30s”, “5m”, “1h”).
requestHeadersstringNoHTTP request headers, serialized as JSON, sent on each load-test request. Empty string when no headers are configured.
requestCookiesstringNoHTTP request cookies, serialized as JSON, sent on each load-test request. Empty string when no cookies are configured.
requestBodystringNoHTTP request body sent on each load-test request. Empty string when no body is configured.
contentTypestringNoContent-Type header value applied to each load-test request body (e.g. “application/json”). Empty string when no body is configured.
metadataobjectNoFree-form metadata associated with the performance profile.
lastRunstring | null (date-time)NoServer-computed timestamp of the most recent load-test run that used this profile. Null until the first run completes. Server-managed; clients must not set this on create/update.
totalResultsintegerNoServer-computed count of load-test results recorded for this profile. Server-managed; clients must not set this on create/update.
createdAtstring (date-time)YesTimestamp when the performance profile was created.
updatedAtstring (date-time)YesTimestamp when the performance profile was last updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Performance DELETE

/api/performance/profiles/{performanceProfileId}

Delete a performance profile

Deletes the performance profile identified by the path parameter and any associated performance results.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/performance/profiles/{performanceProfileId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/performance/profiles/{performanceProfileId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/performance/profiles/{performanceProfileId}

Parameters

Path parameters

NameTypeRequiredDescription
performanceProfileIdstring (uuid)YesPerformance profile ID.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Performance profile deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Performance GET

/api/performance/profiles/{performanceProfileId}/results

List performance results for a profile

Returns paginated load-test results associated with the performance profile identified by the path parameter.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/performance/profiles/{performanceProfileId}/results

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/performance/profiles/{performanceProfileId}/results

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/performance/profiles/{performanceProfileId}/results

Parameters

Path parameters

NameTypeRequiredDescription
performanceProfileIdstring (uuid)YesPerformance profile ID.

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pagesizestringNoGet responses by pagesize
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Performance results

application/json

Paginated list of performance results.
FieldTypeRequiredDescription
pageintegerYesZero-based page index returned in this response.
pageSizeintegerYesMaximum number of items returned on each page.
resultsarray of objectYesPerformance results in this page.
totalCountintegerYesTotal number of performance results across all pages.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Performance GET

/api/performance/profiles/{performanceProfileId}/results/{resultId}

Get a performance result for a profile

Returns one load-test result associated with the performance profile identified by the path parameter.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/performance/profiles/{performanceProfileId}/results/{resultId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/performance/profiles/{performanceProfileId}/results/{resultId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/performance/profiles/{performanceProfileId}/results/{resultId}

Parameters

Path parameters

NameTypeRequiredDescription
performanceProfileIdstring (uuid)YesPerformance profile ID.
resultIdstring (uuid)YesPerformance result ID.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Performance result

application/json

Load-test result captured for a Meshery performance profile.
FieldTypeRequiredDescription
createdAtstring (date-time)NoTimestamp when the performance result was created.
meshstringNoService mesh under test for this result.
mesheryIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
namestringNoHuman-readable name of the performance result.
ownerstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
performanceProfilestring | null (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
runnerResultsobjectNoRaw load-generator output for this performance result.
serverBoardConfigobjectNoServer board configuration associated with this performance result.
serverMetricsobjectNoServer-side metrics collected for this performance result.
testIdstringNoProvider-assigned test identifier for this result.
testStartTimestring (date-time)NoTime when the load test started.
updatedAtstring (date-time)NoTimestamp when the performance result was last updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Performance GET

/api/performance/results

List all performance results

Returns paginated load-test results visible to the authenticated user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/performance/results

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/performance/results

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/performance/results

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pagesizestringNoGet responses by pagesize
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
fromstring (date)NoStart date for filtering results by test start time, in YYYY-MM-DD format.
tostring (date)NoEnd date for filtering results by test start time, in YYYY-MM-DD format.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Performance results

application/json

Paginated list of performance results.
FieldTypeRequiredDescription
pageintegerYesZero-based page index returned in this response.
pageSizeintegerYesMaximum number of items returned on each page.
resultsarray of objectYesPerformance results in this page.
totalCountintegerYesTotal number of performance results across all pages.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Profile GET

/api/profiles

Get all profiles

Gets the live profiles the caller can see: those the caller owns (including profiles assigned to no workspace), those that represent the caller (userId), those assigned to a workspace the caller is a member of, and, for organization admins, every profile of the organization. Provider admins are not granted visibility automatically. search matches the name or description case-insensitively; name matches the name exactly, ignoring case.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/profiles

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/profiles

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/profiles

Parameters

Query parameters

NameTypeRequiredDescription
searchstringNoGet responses that match search param value
namestringNoReturn only live profiles whose name equals this value, ignoring case.
orderstringNoGet ordered responses
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
orgIdstring (uuid)NoOrganization ID used to scope the listing. Defaults to the organization the session resolved to.
userIdstring (uuid)NoReturn only the profile that represents this user.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Profiles

application/json

Paginated list of profiles.
FieldTypeRequiredDescription
pageintegerYesZero-based page index returned in this response.
pageSizeintegerYesMaximum number of items returned on each page.
profilesarray of objectYesProfiles in this page.
totalCountintegerYesTotal number of items across all pages.
401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Profile POST

/api/profiles

Create a profile

Creates a profile in the organization named by organizationId. The server assigns id and the timestamps; owner defaults to the authenticated user. Names are not unique.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/profiles

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/profiles

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/profiles

Request body

application/json Required
Body for creating or updating a profile
Payload for creating or updating a profile. Carries only the client-settable fields. id, createdAt, updatedAt and deletedAt are server-owned and deliberately absent. owner is optional: omitted on create it defaults to the authenticated user, and omitted on update it is unchanged.
FieldTypeRequiredDescription
descriptionstringNoDescription of the profile.
metadataobjectNoFree-form settings of the profile.
namestringYesName of the profile, typically its short handle. Not unique.
organizationIdstring (uuid)YesOrganization in which to create the profile. Cannot change after creation.
ownerstring (uuid)NoID of the user who owns the profile. Only the owner or a holder of Edit Profile in a workspace the profile is assigned to may change it.
userIdstring (uuid)NoID of the user this profile represents, when it represents a user. The user must be a member of the organization.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Created profile

application/json

A profile is a publishing or persona profile: a named set of settings, owned by an organization, that a person or brand publishes as, with the platform accounts it acts through linked to it as Connections. It is not the user account profile (/api/identity/users/profile) and not a performance profile (/api/performance/profiles), and it is neither an environment nor a workspace. Like environments, a profile is assigned to any number of workspaces, and workspace assignment is how access to it is shared: a profile is readable by its owner (whether or not it is assigned to any workspace), by organization admins, and by members of the workspaces it is assigned to. Provider admins do not see profiles automatically, and seeing a profile does not grant access to its linked connections.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated profile ID.
schemaVersionstringYesSpecifies the version of the schema to which the profile conforms.
namestringYesName of the profile, typically its short handle. Not unique; like environment names, two profiles may share one.
descriptionstringNoDescription of the profile.
organizationIdstring (uuid)YesOwning organization ID. Fixed at creation.
ownerstring (uuid)YesID of the user who owns the profile. Defaults to the creating user. The owner, or a holder of the Edit Profile key in a workspace the profile is assigned to, may transfer it. When the owner’s account is deleted, ownership passes on by the same succession rule that applies to designs.
userIdstring (uuid)NoID of the user this profile represents, when it represents a user. Absent for a profile that represents no user account, such as a brand. Not unique: a user may be represented by more than one profile.
metadataobjectNoFree-form settings of the profile, stored as a JSON blob.
createdAtstring (date-time)YesTimestamp when the profile was created.
updatedAtstring (date-time)YesTimestamp when the profile was last updated.
deletedAtstring | null (date-time)NoTimestamp when the profile was soft-deleted. Null while the profile remains active.

Example response

{
  "createdAt": "0001-01-01T00:00:00Z",
  "deletedAt": null,
  "description": "Profile for Jane's accounts and settings.",
  "id": "00000000-0000-0000-0000-000000000000",
  "metadata": {},
  "name": "jane",
  "organizationId": "00000000-0000-0000-0000-000000000000",
  "owner": "00000000-0000-0000-0000-000000000000",
  "schemaVersion": "profiles.meshery.io/v1beta3",
  "updatedAt": "0001-01-01T00:00:00Z",
  "userId": "00000000-0000-0000-0000-000000000000"
}
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Profile GET

/api/profiles/connections

Get the connection links of every visible profile

Gets, in one paged read, the live profile-to-connection links of every live profile of the organization whose connections the caller may list under getProfileConnections’ rules: the profiles the caller can see, with View Profiles; without it, only the profiles the caller owns. A profile that only represents the caller (userId) contributes no links, as its read-only grant does not cover its connections. A client learns which connections each profile acts through without one getProfileConnections call per profile. Items are ProfileConnectionMapping records; they carry ids only, and the connections themselves keep their own access rules. Ordered by profile, then connection.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/profiles/connections

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/profiles/connections

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/profiles/connections

Parameters

Query parameters

NameTypeRequiredDescription
orgIdstring (uuid)NoOrganization ID used to scope the listing. Defaults to the organization the session resolved to.
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Profile connection links

application/json

Paginated list of profile-to-connection links.
FieldTypeRequiredDescription
mappingsarray of objectYesProfile-to-connection links in this page.
pageintegerYesZero-based page index returned in this response.
pageSizeintegerYesMaximum number of items returned on each page.
totalCountintegerYesTotal number of items across all pages.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Profile GET

/api/profiles/{profileId}

Get profile by ID

Gets a profile visible to the caller: its owner (whether or not the profile is assigned to any workspace), the user it represents (userId, read only), an organization admin, or a member of a workspace it is assigned to. Provider admins are not granted visibility automatically. A profile the caller cannot see returns 404. Seeing the profile does not grant access to its linked connections. The response carries the profile’s entity tag in the ETag header.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/profiles/{profileId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/profiles/{profileId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/profiles/{profileId}

Parameters

Path parameters

NameTypeRequiredDescription
profileIdstring (uuid)YesProfile ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Profile

application/json

A profile is a publishing or persona profile: a named set of settings, owned by an organization, that a person or brand publishes as, with the platform accounts it acts through linked to it as Connections. It is not the user account profile (/api/identity/users/profile) and not a performance profile (/api/performance/profiles), and it is neither an environment nor a workspace. Like environments, a profile is assigned to any number of workspaces, and workspace assignment is how access to it is shared: a profile is readable by its owner (whether or not it is assigned to any workspace), by organization admins, and by members of the workspaces it is assigned to. Provider admins do not see profiles automatically, and seeing a profile does not grant access to its linked connections.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated profile ID.
schemaVersionstringYesSpecifies the version of the schema to which the profile conforms.
namestringYesName of the profile, typically its short handle. Not unique; like environment names, two profiles may share one.
descriptionstringNoDescription of the profile.
organizationIdstring (uuid)YesOwning organization ID. Fixed at creation.
ownerstring (uuid)YesID of the user who owns the profile. Defaults to the creating user. The owner, or a holder of the Edit Profile key in a workspace the profile is assigned to, may transfer it. When the owner’s account is deleted, ownership passes on by the same succession rule that applies to designs.
userIdstring (uuid)NoID of the user this profile represents, when it represents a user. Absent for a profile that represents no user account, such as a brand. Not unique: a user may be represented by more than one profile.
metadataobjectNoFree-form settings of the profile, stored as a JSON blob.
createdAtstring (date-time)YesTimestamp when the profile was created.
updatedAtstring (date-time)YesTimestamp when the profile was last updated.
deletedAtstring | null (date-time)NoTimestamp when the profile was soft-deleted. Null while the profile remains active.

Example response

{
  "createdAt": "0001-01-01T00:00:00Z",
  "deletedAt": null,
  "description": "Profile for Jane's accounts and settings.",
  "id": "00000000-0000-0000-0000-000000000000",
  "metadata": {},
  "name": "jane",
  "organizationId": "00000000-0000-0000-0000-000000000000",
  "owner": "00000000-0000-0000-0000-000000000000",
  "schemaVersion": "profiles.meshery.io/v1beta3",
  "updatedAt": "0001-01-01T00:00:00Z",
  "userId": "00000000-0000-0000-0000-000000000000"
}
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Profile PUT

/api/profiles/{profileId}

Update a profile

Replaces the client-settable fields of the profile. organizationId cannot change after creation; a different value is refused with 400. Changing owner transfers the profile; the new owner must be a member of the organization. The optional If-Match header makes the write conditional on the entity tag the profile carried when it was read: when it no longer matches, the request is refused with 412 and nothing is written. Without If-Match the write is unconditional.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/profiles/{profileId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/profiles/{profileId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/profiles/{profileId}

Parameters

Path parameters

NameTypeRequiredDescription
profileIdstring (uuid)YesProfile ID

Header parameters

NameTypeRequiredDescription
If-MatchstringNoEntity tag of the profile as last read, from the ETag header of getProfileById or updateProfile. When present the write applies only if it still matches; otherwise 412.

Request body

application/json Required
Body for creating or updating a profile
Payload for creating or updating a profile. Carries only the client-settable fields. id, createdAt, updatedAt and deletedAt are server-owned and deliberately absent. owner is optional: omitted on create it defaults to the authenticated user, and omitted on update it is unchanged.
FieldTypeRequiredDescription
descriptionstringNoDescription of the profile.
metadataobjectNoFree-form settings of the profile.
namestringYesName of the profile, typically its short handle. Not unique.
organizationIdstring (uuid)YesOrganization in which to create the profile. Cannot change after creation.
ownerstring (uuid)NoID of the user who owns the profile. Only the owner or a holder of Edit Profile in a workspace the profile is assigned to may change it.
userIdstring (uuid)NoID of the user this profile represents, when it represents a user. The user must be a member of the organization.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Updated profile

application/json

A profile is a publishing or persona profile: a named set of settings, owned by an organization, that a person or brand publishes as, with the platform accounts it acts through linked to it as Connections. It is not the user account profile (/api/identity/users/profile) and not a performance profile (/api/performance/profiles), and it is neither an environment nor a workspace. Like environments, a profile is assigned to any number of workspaces, and workspace assignment is how access to it is shared: a profile is readable by its owner (whether or not it is assigned to any workspace), by organization admins, and by members of the workspaces it is assigned to. Provider admins do not see profiles automatically, and seeing a profile does not grant access to its linked connections.
FieldTypeRequiredDescription
idstring (uuid)YesServer-generated profile ID.
schemaVersionstringYesSpecifies the version of the schema to which the profile conforms.
namestringYesName of the profile, typically its short handle. Not unique; like environment names, two profiles may share one.
descriptionstringNoDescription of the profile.
organizationIdstring (uuid)YesOwning organization ID. Fixed at creation.
ownerstring (uuid)YesID of the user who owns the profile. Defaults to the creating user. The owner, or a holder of the Edit Profile key in a workspace the profile is assigned to, may transfer it. When the owner’s account is deleted, ownership passes on by the same succession rule that applies to designs.
userIdstring (uuid)NoID of the user this profile represents, when it represents a user. Absent for a profile that represents no user account, such as a brand. Not unique: a user may be represented by more than one profile.
metadataobjectNoFree-form settings of the profile, stored as a JSON blob.
createdAtstring (date-time)YesTimestamp when the profile was created.
updatedAtstring (date-time)YesTimestamp when the profile was last updated.
deletedAtstring | null (date-time)NoTimestamp when the profile was soft-deleted. Null while the profile remains active.

Example response

{
  "createdAt": "0001-01-01T00:00:00Z",
  "deletedAt": null,
  "description": "Profile for Jane's accounts and settings.",
  "id": "00000000-0000-0000-0000-000000000000",
  "metadata": {},
  "name": "jane",
  "organizationId": "00000000-0000-0000-0000-000000000000",
  "owner": "00000000-0000-0000-0000-000000000000",
  "schemaVersion": "profiles.meshery.io/v1beta3",
  "updatedAt": "0001-01-01T00:00:00Z",
  "userId": "00000000-0000-0000-0000-000000000000"
}
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

412
Precondition failed - If-Match does not match the profile’s current entity tag, so nothing was written. Read the profile again and reapply the change.
429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Profile DELETE

/api/profiles/{profileId}

Delete a profile

Soft-deletes the profile and removes its workspace assignments and connection links. The linked connections themselves are left intact.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/profiles/{profileId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/profiles/{profileId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/profiles/{profileId}

Parameters

Path parameters

NameTypeRequiredDescription
profileIdstring (uuid)YesProfile ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Profile deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Profile GET

/api/profiles/{profileId}/connections

Get profile connections

Gets the connections linked to a profile visible to the caller: its owner (whether or not the profile is assigned to any workspace), an organization admin, or a member of a workspace it is assigned to. The owner needs no permission key; organization admins and workspace members also need View Profiles. Provider admins are not granted visibility automatically. A profile the caller cannot see returns 404. Seeing the profile does not grant access to its linked connections, which follow their own access rules. kind narrows the page to connections of the given kinds.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/profiles/{profileId}/connections

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/profiles/{profileId}/connections

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/profiles/{profileId}/connections

Parameters

Path parameters

NameTypeRequiredDescription
profileIdstring (uuid)YesProfile ID

Query parameters

NameTypeRequiredDescription
kindarray of stringNoReturn only connections of these kinds (repeatable), as getConnections does.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Profile connections

application/json

Represents a page of connections with meta information about connections count
FieldTypeRequiredDescription
connectionsarray of objectYesList of connections on this page
totalCountintegerYesTotal number of connections on all pages
pageintegerYesCurrent page number
pageSizeintegerYesNumber of elements per page
statusSummaryobjectNoAggregate count of connections grouped by status
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Profile POST

/api/profiles/{profileId}/connections/{connectionId}

Add connection to profile

Links an existing connection of the same organization to the profile. Requires Edit Profile.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/profiles/{profileId}/connections/{connectionId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/profiles/{profileId}/connections/{connectionId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/profiles/{profileId}/connections/{connectionId}

Parameters

Path parameters

NameTypeRequiredDescription
profileIdstring (uuid)YesProfile ID
connectionIdstring (uuid)YesConnection ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Connection linked to profile

application/json

Junction record linking a profile to a connection.
FieldTypeRequiredDescription
connectionIdstring (uuid)YesID of the linked connection.
createdAtstring (date-time)NoTimestamp when the mapping was created.
deletedAtstring | null (date-time)NoTimestamp when the mapping was soft-deleted. Null while the mapping remains active.
idstring (uuid)YesMapping record ID.
profileIdstring (uuid)YesID of the linked profile.
updatedAtstring (date-time)NoTimestamp when the mapping was last updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Profile DELETE

/api/profiles/{profileId}/connections/{connectionId}

Remove connection from profile

Unlinks a connection from the profile. The connection itself is left intact. Requires Edit Profile.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/profiles/{profileId}/connections/{connectionId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/profiles/{profileId}/connections/{connectionId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/profiles/{profileId}/connections/{connectionId}

Parameters

Path parameters

NameTypeRequiredDescription
profileIdstring (uuid)YesProfile ID
connectionIdstring (uuid)YesConnection ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Connection unlinked from profile
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

403
Forbidden

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Connection API ConnectionDefinitions GET

/api/registry/connections

List connection definitions

Returns a paginated list of connection definitions registered in the registry, optionally filtered by model or kind.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/registry/connections

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/registry/connections

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/registry/connections

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoPage number
pageSizeintegerNoNumber of items per page
searchstringNoSearch term
orderstringNoSort order
modelstringNoFilter by the name of the model the connection definition belongs to
kindarray of stringNoFilter by connection kind (e.g., kubernetes, prometheus, grafana)

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Paginated list of connection definitions

application/json

Represents a page of connection definitions with meta information about the total count
FieldTypeRequiredDescription
connectionDefinitionsarray of schemaYesList of connection definitions on this page
totalCountintegerYesTotal number of connection definitions on all pages
pageintegerYesCurrent page number
pageSizeintegerYesNumber of elements per page
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Connection API ConnectionDefinitions POST

/api/registry/connections

Register a connection definition

Register a new connection definition into the registry.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/registry/connections

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/registry/connections

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/registry/connections

Request body

application/json Required
Payload for registering (creating) or updating a connection definition. Contains only client-settable fields; server-generated fields such as createdAt, updatedAt, and deletedAt are excluded.
FieldTypeRequiredDescription
connectionSchemaobjectNoSchema for connections of this kind.
credentialSchemaobjectNoSchema for the credential associated with connections of this kind.
descriptionstringNoHuman-readable description of the connection definition and its purpose.
idstring (uuid)NoExisting connection definition ID for updates; omit on create.
kindstringYesConnection kind (e.g., kubernetes, prometheus, grafana)
metadataobjectNoKind-specific connection metadata
modelReferenceobjectNoReference to the registered model that owns this connection definition.
namestringYesConnection definition name
schemaVersionstringNoSpecifies the version of the schema the definition conforms to.
statusstringYesConnection Status Value
stylesobjectNoVisualization styles for the connection, including svgColor and svgWhite used for UI representation.
subTypestringYesConnection sub-type (cloud, identity, metrics, chat, git, orchestration)
transitionMapobjectNoMap describing the connection state machine. Each key is a current connection status and its value is the list of states the connection may transition to from that status.
typestringYesConnection type (platform, telemetry, collaboration)
urlstring (uri)NoURL of the remote resource connections of this kind point to.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Connection definition registered

application/json

A connection definition is an uninitialized connection, authored per-model (in a model’s connections/ folder) and registered into the registry alongside components and relationships. It conforms to the connection schema; the dynamic, kind-specific shape is carried in metadata. The model association scopes the definition to its owning model.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Connection API ConnectionDefinitions GET

/api/registry/connections/{connectionDefinitionId}

Get connection definition by ID

Returns a specific connection definition by its ID.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/registry/connections/{connectionDefinitionId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/registry/connections/{connectionDefinitionId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/registry/connections/{connectionDefinitionId}

Parameters

Path parameters

NameTypeRequiredDescription
connectionDefinitionIdstring (uuid)YesConnection definition ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Connection definition details

application/json

A connection definition is an uninitialized connection, authored per-model (in a model’s connections/ folder) and registered into the registry alongside components and relationships. It conforms to the connection schema; the dynamic, kind-specific shape is carried in metadata. The model association scopes the definition to its owning model.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Connection API ConnectionDefinitions PUT

/api/registry/connections/{connectionDefinitionId}

Update a connection definition

Update an existing connection definition.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/registry/connections/{connectionDefinitionId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/registry/connections/{connectionDefinitionId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/registry/connections/{connectionDefinitionId}

Parameters

Path parameters

NameTypeRequiredDescription
connectionDefinitionIdstring (uuid)YesConnection definition ID

Request body

application/json Required
Payload for registering (creating) or updating a connection definition. Contains only client-settable fields; server-generated fields such as createdAt, updatedAt, and deletedAt are excluded.
FieldTypeRequiredDescription
connectionSchemaobjectNoSchema for connections of this kind.
credentialSchemaobjectNoSchema for the credential associated with connections of this kind.
descriptionstringNoHuman-readable description of the connection definition and its purpose.
idstring (uuid)NoExisting connection definition ID for updates; omit on create.
kindstringYesConnection kind (e.g., kubernetes, prometheus, grafana)
metadataobjectNoKind-specific connection metadata
modelReferenceobjectNoReference to the registered model that owns this connection definition.
namestringYesConnection definition name
schemaVersionstringNoSpecifies the version of the schema the definition conforms to.
statusstringYesConnection Status Value
stylesobjectNoVisualization styles for the connection, including svgColor and svgWhite used for UI representation.
subTypestringYesConnection sub-type (cloud, identity, metrics, chat, git, orchestration)
transitionMapobjectNoMap describing the connection state machine. Each key is a current connection status and its value is the list of states the connection may transition to from that status.
typestringYesConnection type (platform, telemetry, collaboration)
urlstring (uri)NoURL of the remote resource connections of this kind point to.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Connection definition updated

application/json

A connection definition is an uninitialized connection, authored per-model (in a model’s connections/ folder) and registered into the registry alongside components and relationships. It conforms to the connection schema; the dynamic, kind-specific shape is carried in metadata. The model association scopes the definition to its owning model.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Connection API ConnectionDefinitions DELETE

/api/registry/connections/{connectionDefinitionId}

Delete a connection definition

Delete a specific connection definition from the registry.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/registry/connections/{connectionDefinitionId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/registry/connections/{connectionDefinitionId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/registry/connections/{connectionDefinitionId}

Parameters

Path parameters

NameTypeRequiredDescription
connectionDefinitionIdstring (uuid)YesConnection definition ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Connection definition deleted
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Design Designs POST

/api/resource/{resourceType}/share/{resourceId}

Share a resource

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/resource/{resourceType}/share/{resourceId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/resource/{resourceType}/share/{resourceId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/resource/{resourceType}/share/{resourceId}

Parameters

Path parameters

NameTypeRequiredDescription
resourceTypestringYesNo description provided.
resourceIdstringYesNo description provided.

Request body

application/json Required

Schema: object

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Resource access mapping

application/json

400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Design Designs GET

/api/resource/{resourceType}/share/{resourceId}/{actorType}

Get resource access actors by type

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/resource/{resourceType}/share/{resourceId}/{actorType}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/resource/{resourceType}/share/{resourceId}/{actorType}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/resource/{resourceType}/share/{resourceId}/{actorType}

Parameters

Path parameters

NameTypeRequiredDescription
resourceTypestringYesNo description provided.
resourceIdstringYesNo description provided.
actorTypestringYesNo description provided.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Resource access actors

application/json

FieldTypeRequiredDescription
usersarray of objectNoThe users of the resourceaccessactorsresponse.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Schedule Schedules GET

/api/schedules

List schedules

Returns a paginated list of the schedules in the organization of the authenticated session, optionally filtered by workspace or status. Each schedule carries its live claim, when one is held.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/schedules

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/schedules

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/schedules

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of items per page.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
workspaceIdstring (uuid)NoOnly schedules linked to this workspace.
statusstringNoOnly schedules in this status.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Schedules page

application/json

Paginated collection of schedules.
FieldTypeRequiredDescription
pageintegerYesCurrent page number of the result set.
pageSizeintegerYesNumber of items per page.
schedulesarray of objectYesSchedules included on this page of results.
totalCountintegerYesTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Schedule Schedules POST

/api/schedules

Create a schedule

Creates a schedule in the organization of the authenticated session, owned by the session user (createdBy). status accepts only pending, scheduled and cancelled; omitted, the server picks scheduled when the schedule has a due time and pending otherwise. nextRunAt defaults to runAt. A targetId must name a live resource of targetType in the organization, else 400. Send paused: true to create the schedule already paused.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/schedules

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/schedules

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/schedules

Request body

application/json Required
Payload for creating or updating a schedule. Contains only client-settable fields; the owning organizationId, createdBy, the claim, pausedAt, pausedBy, lastRunAt, lastError and the timestamps are server-managed and refused as unknown fields. Pausing is a field, not an operation: paused pauses or resumes the schedule. status accepts only pending, scheduled and cancelled here (otherwise 400); the other values are set by the server as the schedule is claimed and released.
FieldTypeRequiredDescription
actionstringYesThe action the worker runs, for example a command name.
enabledbooleanNoWhether the schedule is eligible to run.
idstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
maxRetriesintegerNoMaximum retries before the run is marked failed.
namestringYesHuman-readable name for the schedule.
nextRunAtstring | null (date-time)NoNext time the schedule becomes due. Omitted on create, it defaults to runAt; omitted on update, it is kept. Send null for never due again.
paramsobjectNoAction parameters, stored as a JSON blob.
pausedbooleanNotrue pauses the schedule so it is never claimed; false resumes it. Omit to leave the pause unchanged. The server records pausedAt and pausedBy.
pauseReasonstringNoReason for pausing; stored only while paused is true and cleared on resume.
posturestringNoOptional Posture this schedule runs under, resolved above the profile x platform resolution and below an explicit per-run flag. Omit to inherit: the schedule then runs under whatever profile x platform, configuration, environment, account or default resolves to, exactly as before.
recurrencestringNoHow the schedule repeats once it has run. Empty, once and none mean run once. hourly repeats every hour; daily, weekly and monthly repeat at the same wall-clock time one calendar day, week or month later in the schedule’s timezone, so a daily schedule keeps its local time across daylight-saving changes. every:<n> repeats every n minutes (1 to 999999). Occurrences are counted from runAt (else from the current nextRunAt); the next due time is the first occurrence after the run is released, so missed runs are not replayed.
retryCountintegerNoRetries used so far for the current run, for example 0 to re-arm a schedule. Omitted on update, it is kept.
retryDelayMinutesintegerNoMinutes to wait before a retry becomes due.
runAtstring | null (date-time)NoTime the schedule first becomes due.
statusstringNoLifecycle status of a schedule. pending: created, not yet due-scheduled. scheduled: waiting for its due time. assigned: designated for a particular worker but not yet claimed. claimed: a worker holds the claim and has not started. running: the claim holder is executing it. retrying: the last attempt failed and another is due. completed, failed and cancelled are terminal for a run-once schedule; a recurring schedule returns to scheduled when its claim is released with a completed outcome.
targetIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
targetTypestringNoType of the resource the schedule acts on, named the way a claim’s resourceType is (lowercase snake_case construct name, for example content_item or profile). A server verifies the target types it serves and refuses others with 400. Set together with targetId or not at all.
timezonestringNoIANA time zone name (for example UTC or America/Chicago) in which daily, weekly and monthly recurrences keep their wall-clock time. Instants (runAt, nextRunAt) are always absolute. The server refuses a name it does not know with 400.
workspaceIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Schedule created

application/json

Server-returned schedule. A schedule is a job: an action to run, what it acts on (targetType, targetId) and its parameters, when it is due (runAt, nextRunAt, recurrence in timezone), its retry budget and its outcome. Schedules belong to an organization and may be linked to a workspace. A worker takes a schedule through the generic claim construct (POST /api/claims with resourceType schedule); there is no schedule-specific claim route. While the claim is live no other worker can take the schedule, and a claim past its expiresAt is stale so the schedule is claimable again. Releasing the claim records the run’s outcome on the schedule in the same transaction (see status). The claim and the status values assigned, claimed and running are server-managed. Pausing is data, not an operation: a client sets paused (and optionally pauseReason) on create or update, and the server records pausedAt and pausedBy. Fields marked readOnly are server-managed and ignored on input.
FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
workspaceIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
createdBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
namestringYesHuman-readable name for the schedule.
actionstringYesThe action the worker runs when it holds the schedule’s claim, for example a command name.
targetTypestringNoType of the resource the schedule acts on, named the way a claim’s resourceType is (lowercase snake_case construct name, for example content_item or profile). A server verifies the target types it serves and refuses others with 400. Set together with targetId or not at all.
targetIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
paramsobjectNoAction parameters, stored as a JSON blob. What the schedule acts on belongs in targetType and targetId, not here.
enabledbooleanYesWhether the schedule is eligible to run. A disabled schedule is never claimed.
runAtstring | null (date-time)NoTime the schedule first becomes due.
nextRunAtstring | null (date-time)NoNext time the schedule becomes due. Null when it is never due again.
recurrencestringNoHow the schedule repeats once it has run. Empty, once and none mean run once. hourly repeats every hour; daily, weekly and monthly repeat at the same wall-clock time one calendar day, week or month later in the schedule’s timezone, so a daily schedule keeps its local time across daylight-saving changes. every:<n> repeats every n minutes (1 to 999999). Occurrences are counted from runAt (else from the current nextRunAt); the next due time is the first occurrence after the run is released, so missed runs are not replayed.
timezonestringYesIANA time zone name (for example UTC or America/Chicago) in which daily, weekly and monthly recurrences keep their wall-clock time. Instants (runAt, nextRunAt) are always absolute. The server refuses a name it does not know with 400.
statusstringYesLifecycle status of a schedule. pending: created, not yet due-scheduled. scheduled: waiting for its due time. assigned: designated for a particular worker but not yet claimed. claimed: a worker holds the claim and has not started. running: the claim holder is executing it. retrying: the last attempt failed and another is due. completed, failed and cancelled are terminal for a run-once schedule; a recurring schedule returns to scheduled when its claim is released with a completed outcome.
retryCountintegerYesAttempts already retried for the current run.
maxRetriesintegerYesMaximum retries before the run is marked failed.
retryDelayMinutesintegerNoMinutes to wait before a retry becomes due.
lastRunAtstring | null (date-time)NoTime the most recent attempt ended (the release time of its claim). Server-managed.
lastErrorstringNoError reported by the most recent attempt; empty after a successful one. Server-managed.
claimobjectNoThe schedule’s live claim, when one is held. A read-only view of the claim construct; omitted when the schedule is unclaimed.
pausedAtstring | null (date-time)NoTime the schedule was paused. Null when the schedule is not paused. Server-managed.
pausedBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
pauseReasonstringNoReason given for pausing the schedule, set with paused on create or update. Empty when not paused.
createdAtstring (date-time)YesTimestamp of schedule creation.
updatedAtstring (date-time)YesTimestamp of last schedule modification.
deletedAtstring | null (date-time)NoTimestamp when the schedule was soft-deleted. Null while live.
posturestringNoOptional Posture this schedule runs under, resolved above the profile x platform resolution and below an explicit per-run flag. Omitted when the schedule has no override: it then runs under whatever profile x platform, configuration, environment, account or default resolves to, exactly as before. Any value outside the Posture enum is refused with 400.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Schedule Schedules GET

/api/schedules/{scheduleId}

Get a schedule by ID

Returns the schedule with its live claim, when one is held, and its entity tag in the ETag header.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/schedules/{scheduleId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/schedules/{scheduleId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/schedules/{scheduleId}

Parameters

Path parameters

NameTypeRequiredDescription
scheduleIdstring (uuid)YesSchedule ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Schedule response

application/json

Server-returned schedule. A schedule is a job: an action to run, what it acts on (targetType, targetId) and its parameters, when it is due (runAt, nextRunAt, recurrence in timezone), its retry budget and its outcome. Schedules belong to an organization and may be linked to a workspace. A worker takes a schedule through the generic claim construct (POST /api/claims with resourceType schedule); there is no schedule-specific claim route. While the claim is live no other worker can take the schedule, and a claim past its expiresAt is stale so the schedule is claimable again. Releasing the claim records the run’s outcome on the schedule in the same transaction (see status). The claim and the status values assigned, claimed and running are server-managed. Pausing is data, not an operation: a client sets paused (and optionally pauseReason) on create or update, and the server records pausedAt and pausedBy. Fields marked readOnly are server-managed and ignored on input.
FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
workspaceIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
createdBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
namestringYesHuman-readable name for the schedule.
actionstringYesThe action the worker runs when it holds the schedule’s claim, for example a command name.
targetTypestringNoType of the resource the schedule acts on, named the way a claim’s resourceType is (lowercase snake_case construct name, for example content_item or profile). A server verifies the target types it serves and refuses others with 400. Set together with targetId or not at all.
targetIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
paramsobjectNoAction parameters, stored as a JSON blob. What the schedule acts on belongs in targetType and targetId, not here.
enabledbooleanYesWhether the schedule is eligible to run. A disabled schedule is never claimed.
runAtstring | null (date-time)NoTime the schedule first becomes due.
nextRunAtstring | null (date-time)NoNext time the schedule becomes due. Null when it is never due again.
recurrencestringNoHow the schedule repeats once it has run. Empty, once and none mean run once. hourly repeats every hour; daily, weekly and monthly repeat at the same wall-clock time one calendar day, week or month later in the schedule’s timezone, so a daily schedule keeps its local time across daylight-saving changes. every:<n> repeats every n minutes (1 to 999999). Occurrences are counted from runAt (else from the current nextRunAt); the next due time is the first occurrence after the run is released, so missed runs are not replayed.
timezonestringYesIANA time zone name (for example UTC or America/Chicago) in which daily, weekly and monthly recurrences keep their wall-clock time. Instants (runAt, nextRunAt) are always absolute. The server refuses a name it does not know with 400.
statusstringYesLifecycle status of a schedule. pending: created, not yet due-scheduled. scheduled: waiting for its due time. assigned: designated for a particular worker but not yet claimed. claimed: a worker holds the claim and has not started. running: the claim holder is executing it. retrying: the last attempt failed and another is due. completed, failed and cancelled are terminal for a run-once schedule; a recurring schedule returns to scheduled when its claim is released with a completed outcome.
retryCountintegerYesAttempts already retried for the current run.
maxRetriesintegerYesMaximum retries before the run is marked failed.
retryDelayMinutesintegerNoMinutes to wait before a retry becomes due.
lastRunAtstring | null (date-time)NoTime the most recent attempt ended (the release time of its claim). Server-managed.
lastErrorstringNoError reported by the most recent attempt; empty after a successful one. Server-managed.
claimobjectNoThe schedule’s live claim, when one is held. A read-only view of the claim construct; omitted when the schedule is unclaimed.
pausedAtstring | null (date-time)NoTime the schedule was paused. Null when the schedule is not paused. Server-managed.
pausedBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
pauseReasonstringNoReason given for pausing the schedule, set with paused on create or update. Empty when not paused.
createdAtstring (date-time)YesTimestamp of schedule creation.
updatedAtstring (date-time)YesTimestamp of last schedule modification.
deletedAtstring | null (date-time)NoTimestamp when the schedule was soft-deleted. Null while live.
posturestringNoOptional Posture this schedule runs under, resolved above the profile x platform resolution and below an explicit per-run flag. Omitted when the schedule has no override: it then runs under whatever profile x platform, configuration, environment, account or default resolves to, exactly as before. Any value outside the Posture enum is refused with 400.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Schedule Schedules PUT

/api/schedules/{scheduleId}

Update a schedule

Updates the client-settable fields present in the payload; an omitted optional field keeps its stored value, and null clears a nullable one (workspaceId, runAt, nextRunAt, and targetType with targetId). status accepts only pending, scheduled and cancelled. Pause or resume the schedule by setting paused (with an optional pauseReason); the server then records pausedAt and pausedBy. Pausing a paused schedule keeps its original pausedAt; omitting paused leaves the pause unchanged. The optional If-Match header makes the write conditional on the entity tag the schedule carried when it was read: when it no longer matches, the request is refused with 412 and nothing is written. Without If-Match the write is unconditional.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/schedules/{scheduleId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/schedules/{scheduleId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/schedules/{scheduleId}

Parameters

Path parameters

NameTypeRequiredDescription
scheduleIdstring (uuid)YesSchedule ID

Header parameters

NameTypeRequiredDescription
If-MatchstringNoEntity tag of the schedule as last read, from the ETag header of getScheduleById, createSchedule or updateSchedule. When present the write applies only if it still matches; otherwise 412.

Request body

application/json Required
Payload for creating or updating a schedule. Contains only client-settable fields; the owning organizationId, createdBy, the claim, pausedAt, pausedBy, lastRunAt, lastError and the timestamps are server-managed and refused as unknown fields. Pausing is a field, not an operation: paused pauses or resumes the schedule. status accepts only pending, scheduled and cancelled here (otherwise 400); the other values are set by the server as the schedule is claimed and released.
FieldTypeRequiredDescription
actionstringYesThe action the worker runs, for example a command name.
enabledbooleanNoWhether the schedule is eligible to run.
idstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
maxRetriesintegerNoMaximum retries before the run is marked failed.
namestringYesHuman-readable name for the schedule.
nextRunAtstring | null (date-time)NoNext time the schedule becomes due. Omitted on create, it defaults to runAt; omitted on update, it is kept. Send null for never due again.
paramsobjectNoAction parameters, stored as a JSON blob.
pausedbooleanNotrue pauses the schedule so it is never claimed; false resumes it. Omit to leave the pause unchanged. The server records pausedAt and pausedBy.
pauseReasonstringNoReason for pausing; stored only while paused is true and cleared on resume.
posturestringNoOptional Posture this schedule runs under, resolved above the profile x platform resolution and below an explicit per-run flag. Omit to inherit: the schedule then runs under whatever profile x platform, configuration, environment, account or default resolves to, exactly as before.
recurrencestringNoHow the schedule repeats once it has run. Empty, once and none mean run once. hourly repeats every hour; daily, weekly and monthly repeat at the same wall-clock time one calendar day, week or month later in the schedule’s timezone, so a daily schedule keeps its local time across daylight-saving changes. every:<n> repeats every n minutes (1 to 999999). Occurrences are counted from runAt (else from the current nextRunAt); the next due time is the first occurrence after the run is released, so missed runs are not replayed.
retryCountintegerNoRetries used so far for the current run, for example 0 to re-arm a schedule. Omitted on update, it is kept.
retryDelayMinutesintegerNoMinutes to wait before a retry becomes due.
runAtstring | null (date-time)NoTime the schedule first becomes due.
statusstringNoLifecycle status of a schedule. pending: created, not yet due-scheduled. scheduled: waiting for its due time. assigned: designated for a particular worker but not yet claimed. claimed: a worker holds the claim and has not started. running: the claim holder is executing it. retrying: the last attempt failed and another is due. completed, failed and cancelled are terminal for a run-once schedule; a recurring schedule returns to scheduled when its claim is released with a completed outcome.
targetIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
targetTypestringNoType of the resource the schedule acts on, named the way a claim’s resourceType is (lowercase snake_case construct name, for example content_item or profile). A server verifies the target types it serves and refuses others with 400. Set together with targetId or not at all.
timezonestringNoIANA time zone name (for example UTC or America/Chicago) in which daily, weekly and monthly recurrences keep their wall-clock time. Instants (runAt, nextRunAt) are always absolute. The server refuses a name it does not know with 400.
workspaceIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Schedule updated

application/json

Server-returned schedule. A schedule is a job: an action to run, what it acts on (targetType, targetId) and its parameters, when it is due (runAt, nextRunAt, recurrence in timezone), its retry budget and its outcome. Schedules belong to an organization and may be linked to a workspace. A worker takes a schedule through the generic claim construct (POST /api/claims with resourceType schedule); there is no schedule-specific claim route. While the claim is live no other worker can take the schedule, and a claim past its expiresAt is stale so the schedule is claimable again. Releasing the claim records the run’s outcome on the schedule in the same transaction (see status). The claim and the status values assigned, claimed and running are server-managed. Pausing is data, not an operation: a client sets paused (and optionally pauseReason) on create or update, and the server records pausedAt and pausedBy. Fields marked readOnly are server-managed and ignored on input.
FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
workspaceIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
createdBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
namestringYesHuman-readable name for the schedule.
actionstringYesThe action the worker runs when it holds the schedule’s claim, for example a command name.
targetTypestringNoType of the resource the schedule acts on, named the way a claim’s resourceType is (lowercase snake_case construct name, for example content_item or profile). A server verifies the target types it serves and refuses others with 400. Set together with targetId or not at all.
targetIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
paramsobjectNoAction parameters, stored as a JSON blob. What the schedule acts on belongs in targetType and targetId, not here.
enabledbooleanYesWhether the schedule is eligible to run. A disabled schedule is never claimed.
runAtstring | null (date-time)NoTime the schedule first becomes due.
nextRunAtstring | null (date-time)NoNext time the schedule becomes due. Null when it is never due again.
recurrencestringNoHow the schedule repeats once it has run. Empty, once and none mean run once. hourly repeats every hour; daily, weekly and monthly repeat at the same wall-clock time one calendar day, week or month later in the schedule’s timezone, so a daily schedule keeps its local time across daylight-saving changes. every:<n> repeats every n minutes (1 to 999999). Occurrences are counted from runAt (else from the current nextRunAt); the next due time is the first occurrence after the run is released, so missed runs are not replayed.
timezonestringYesIANA time zone name (for example UTC or America/Chicago) in which daily, weekly and monthly recurrences keep their wall-clock time. Instants (runAt, nextRunAt) are always absolute. The server refuses a name it does not know with 400.
statusstringYesLifecycle status of a schedule. pending: created, not yet due-scheduled. scheduled: waiting for its due time. assigned: designated for a particular worker but not yet claimed. claimed: a worker holds the claim and has not started. running: the claim holder is executing it. retrying: the last attempt failed and another is due. completed, failed and cancelled are terminal for a run-once schedule; a recurring schedule returns to scheduled when its claim is released with a completed outcome.
retryCountintegerYesAttempts already retried for the current run.
maxRetriesintegerYesMaximum retries before the run is marked failed.
retryDelayMinutesintegerNoMinutes to wait before a retry becomes due.
lastRunAtstring | null (date-time)NoTime the most recent attempt ended (the release time of its claim). Server-managed.
lastErrorstringNoError reported by the most recent attempt; empty after a successful one. Server-managed.
claimobjectNoThe schedule’s live claim, when one is held. A read-only view of the claim construct; omitted when the schedule is unclaimed.
pausedAtstring | null (date-time)NoTime the schedule was paused. Null when the schedule is not paused. Server-managed.
pausedBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
pauseReasonstringNoReason given for pausing the schedule, set with paused on create or update. Empty when not paused.
createdAtstring (date-time)YesTimestamp of schedule creation.
updatedAtstring (date-time)YesTimestamp of last schedule modification.
deletedAtstring | null (date-time)NoTimestamp when the schedule was soft-deleted. Null while live.
posturestringNoOptional Posture this schedule runs under, resolved above the profile x platform resolution and below an explicit per-run flag. Omitted when the schedule has no override: it then runs under whatever profile x platform, configuration, environment, account or default resolves to, exactly as before. Any value outside the Posture enum is refused with 400.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

412
Precondition failed - If-Match does not match the schedule’s current entity tag, so nothing was written. Read the schedule again and reapply the change.
429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Schedule Schedules DELETE

/api/schedules/{scheduleId}

Delete a schedule

Soft-deletes the schedule. A schedule with a live claim is deleted all the same, and that claim is expired in the same transaction.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/schedules/{scheduleId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/schedules/{scheduleId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/schedules/{scheduleId}

Parameters

Path parameters

NameTypeRequiredDescription
scheduleIdstring (uuid)YesSchedule ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Schedule deleted
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Support POST

/api/support/anonymous

Submit an anonymous support request

Accepts a support request without requiring a signed-in user, so a desktop client can offer a “Contact support” action whether or not the person is signed in. A signed-out client authenticates with the same per-client-kind X-Client-Key as submitFailureDiagnostic; a signed-in caller may use its bearer token instead, and only then is the organization attached. A request carrying neither is a 401. The email address is only ever sent when the person types it in, and diagnosticId links this report to the automatic failure diagnostic submitted for the same incident, when one exists. Served by Layer5 Cloud; see Blowhorn issue #771.

Authentication

Support ClientKey or Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/support/anonymous

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/support/anonymous

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/support/anonymous

Request body

application/json Required
Payload for submitting a help-and-support request without signing in. It carries the same subject, message, and scope as SupportRequest, plus two optional fields: an email address the person typed in for a follow-up, and the diagnosticId of the automatic failure diagnostic for the same incident, when one was submitted. The fields are spelled out here rather than composed with allOf so generated clients expose them flat, exactly like SupportRequest. The object is closed: Cloud decodes it strictly and refuses an unknown field with a 400.
FieldTypeRequiredDescription
diagnosticIdstring (uuid)NoOptional id of the FailureDiagnostic submitted for the same incident (schemas/constructs/v1beta1/diagnostics/api.yml), linking the human report to the automatic diagnostic.
emailstring (email)NoOptional email address the person typed in for a follow-up. Absent when they did not ask to be contacted; never inferred from an account, because this request may come from a signed-out client.
messagestringYesDetailed description of the issue or question.
scopestringNoCategory that best represents the nature of the inquiry.
subjectstringYesConcise and descriptive title for the support request.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Support request received and forwarded

application/json

FieldTypeRequiredDescription
diagnosticIdstring (uuid)NoEchoes the request’s diagnosticId; omitted when the request linked none.
statusstringYesAlways received.
400
Invalid request body or request param

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
401
Neither a signed-in session nor a valid X-Client-Key. A missing, revoked, expired, not-yet-valid or unknown key all answer alike, so key existence is not an oracle. Rotate the client key; this is not an expired session.

application/json

FieldTypeRequiredDescription
messagestringYesThe refusal, for example “Client key required for operation is invalid or missing”.
413
The request body exceeds the 16 KB cap. Do not retry the same body.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
429
Rate limit exceeded; retry after the Retry-After interval.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
502
Bad gateway - an upstream service the operation depends on could not be reached or rejected the request

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
System POST

/api/system/email/test

Send a test email

Sends a test email through the configured SMTP provider to verify the email configuration. Restricted to provider administrators.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/system/email/test

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/system/email/test

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/system/email/test

Request body

application/json Required
Recipient and optional subject for the test email.
Request body for sending a test email through the configured SMTP provider.
FieldTypeRequiredDescription
subjectstringNoSubject line for the test message. A default subject is used when omitted.
tostring (email)YesRecipient email address for the test message.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Test email sent

application/json

Result of a test email send attempt.
FieldTypeRequiredDescription
messagestringYesHuman-readable result message.
sentTostring (email)YesRecipient address the test email was sent to.
statusstringYesOutcome status of the send attempt (e.g. success).
timestampstringYesUnix-epoch seconds, as a decimal string, when the test email was sent.
400
Invalid request payload or malformed recipient email address.
401
Expired JWT token used or insufficient privilege

text/plain

500
Email configuration validation failed or the send attempt errored.
System GET

/api/system/version

Get the running Meshery server's version metadata

Returns version metadata for the running Meshery service.

Authentication

No authentication required

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/system/version

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/system/version

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/system/version

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Server version metadata

application/json

Version metadata for a running Meshery service.
FieldTypeRequiredDescription
buildstringNoBuild identifier (typically the git tag of the running binary).
commitshastringNoGit commit SHA of the running service. The wire field is commitsha.
lateststringNoLatest available Meshery release tag fetched from GitHub.
outdatedbooleanNoTrue when the running build is older than the latest available release.
releaseChannelstringNoRelease channel of the running binary (e.g. stable, edge).
versionstringNoMeshery Cloud deployment version.
500
Encoding error while serializing the version payload.
User GET

/api/users

Get public users

Returns the publicly viewable user directory. Records are reduced to the PublicUser projection (username and avatar); personally identifying fields such as email and real names are never served on this unauthenticated path.

Authentication

No authentication required

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/users

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/users

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/users

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
filterstringNoGet filtered reponses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Paginated list of public users

application/json

Paginated list of publicly viewable user records
FieldTypeRequiredDescription
dataarray of objectYesPublic user records for the requested page.
pageintegerYesCurrent page number of the result set.
pageSizeintegerYesNumber of items per page.
totalCountintegerYesTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Workspace GET

/api/workspaces

Get all workspaces

Gets all workspaces accessible to the current user, optionally scoped to a specific organization.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces

Parameters

Query parameters

NameTypeRequiredDescription
orgIdstring (uuid)NoOrganization ID used to scope the workspace listing.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
filterstringNoJSON-encoded filter string used for assignment and soft-delete filters.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Workspaces

application/json

Paginated list of workspaces.
FieldTypeRequiredDescription
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
workspacesarray of objectNoList of workspaces with resolved owner details.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Workspace POST

/api/workspaces

Create a workspace

Creates a new workspace.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces

Request body

application/json Required
Body for creating a workspace
Payload for creating a workspace.
FieldTypeRequiredDescription
descriptionstringNoDescription of the workspace.
metadataobjectNoMetadata associated with the workspace.
namestringYesName of the workspace.
organizationIdstring (uuid)YesOrganization ID.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

201
Created workspace

application/json

A workspace is a logical grouping of resources within an organization. Workspaces provide a way to organize environments, designs, teams, and views. Learn more at https://docs.meshery.io/concepts/logical/workspaces
FieldTypeRequiredDescription
createdAtstring (date-time)YesTimestamp when the workspace was created.
deletedAtstring (date-time)NoTimestamp when the workspace was soft-deleted. Null while the workspace is active.
descriptionstringNoDescription of the workspace.
idstring (uuid)YesNo description provided.
metadataobjectNoMetadata associated with the workspace.
namestringYesName of the workspace.
organizationIdstring (uuid)YesOrganization to which this workspace belongs.
ownerstring (uuid)NoUser ID of the workspace owner.
updatedAtstring (date-time)YesTimestamp when the workspace was last updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Workspace GET

/api/workspaces/{workspaceId}

Get a workspace by ID

Gets a workspace by its ID.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Workspace

application/json

A workspace is a logical grouping of resources within an organization. Workspaces provide a way to organize environments, designs, teams, and views. Learn more at https://docs.meshery.io/concepts/logical/workspaces
FieldTypeRequiredDescription
createdAtstring (date-time)YesTimestamp when the workspace was created.
deletedAtstring (date-time)NoTimestamp when the workspace was soft-deleted. Null while the workspace is active.
descriptionstringNoDescription of the workspace.
idstring (uuid)YesNo description provided.
metadataobjectNoMetadata associated with the workspace.
namestringYesName of the workspace.
organizationIdstring (uuid)YesOrganization to which this workspace belongs.
ownerstring (uuid)NoUser ID of the workspace owner.
updatedAtstring (date-time)YesTimestamp when the workspace was last updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace PUT

/api/workspaces/{workspaceId}

Update a workspace

Updates a workspace.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID

Request body

application/json Required
Body for updating a workspace
Payload for updating a workspace.
FieldTypeRequiredDescription
descriptionstringNoDescription of the workspace.
metadataobjectNoMetadata associated with the workspace.
namestringNoName of the workspace.
organizationIdstring (uuid)YesOrganization ID.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Workspace

application/json

A workspace is a logical grouping of resources within an organization. Workspaces provide a way to organize environments, designs, teams, and views. Learn more at https://docs.meshery.io/concepts/logical/workspaces
FieldTypeRequiredDescription
createdAtstring (date-time)YesTimestamp when the workspace was created.
deletedAtstring (date-time)NoTimestamp when the workspace was soft-deleted. Null while the workspace is active.
descriptionstringNoDescription of the workspace.
idstring (uuid)YesNo description provided.
metadataobjectNoMetadata associated with the workspace.
namestringYesName of the workspace.
organizationIdstring (uuid)YesOrganization to which this workspace belongs.
ownerstring (uuid)NoUser ID of the workspace owner.
updatedAtstring (date-time)YesTimestamp when the workspace was last updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace DELETE

/api/workspaces/{workspaceId}

Delete a workspace

Deletes a workspace by its ID.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Workspace deleted
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace GET

/api/workspaces/{workspaceId}/designs

Get designs assigned to a workspace

Gets designs assigned to or available for a workspace depending on the filter.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/designs

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/designs

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/designs

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID

Query parameters

NameTypeRequiredDescription
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
filterstringNoJSON-encoded filter string used for assignment and soft-delete filters.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Designs

application/json

Paginated list of designs.
FieldTypeRequiredDescription
designsarray of objectNoDesigns in this page.
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace POST

/api/workspaces/{workspaceId}/designs/{designId}

Assign a design to a workspace

Assigns a design to a workspace.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/designs/{designId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/designs/{designId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/designs/{designId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID
designIdstring (uuid)YesDesign ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Workspace design mappings

application/json

Paginated list of workspace-design mappings.
FieldTypeRequiredDescription
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
workspacesDesignsMappingarray of objectNoWorkspace-design mapping entries.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace DELETE

/api/workspaces/{workspaceId}/designs/{designId}

Unassign a design from a workspace

Removes a design from a workspace.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/designs/{designId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/designs/{designId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/designs/{designId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID
designIdstring (uuid)YesDesign ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Workspace design mapping removed
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace GET

/api/workspaces/{workspaceId}/environments

Get environments assigned to a workspace

Gets environments assigned to or available for a workspace depending on the filter.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/environments

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/environments

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/environments

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID

Query parameters

NameTypeRequiredDescription
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
filterstringNoJSON-encoded filter string used for assignment and soft-delete filters.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Environments

application/json

Paginated list of environments.
FieldTypeRequiredDescription
environmentsarray of objectNoEnvironments associated with this resource.
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace POST

/api/workspaces/{workspaceId}/environments/{environmentId}

Assign an environment to a workspace

Assigns an environment to a workspace.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/environments/{environmentId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/environments/{environmentId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/environments/{environmentId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID
environmentIdstring (uuid)YesEnvironment ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Workspace environment mappings

application/json

Paginated list of workspace-environment mappings.
FieldTypeRequiredDescription
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
workspacesEnvironmentsMappingarray of objectNoWorkspace-environment mapping entries.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace DELETE

/api/workspaces/{workspaceId}/environments/{environmentId}

Unassign an environment from a workspace

Removes an environment from a workspace.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/environments/{environmentId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/environments/{environmentId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/environments/{environmentId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID
environmentIdstring (uuid)YesEnvironment ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Workspace environment mapping removed
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Events GET

/api/workspaces/{workspaceId}/events

Get workspace events

Gets events for a workspace.

Authentication

Bearer JWT

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/events

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/events

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/events

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Workspace events

application/json

Paginated list of events.
FieldTypeRequiredDescription
dataarray of objectNoThe events returned on the current page.
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
400
Invalid request

application/json

Generic error envelope returned for non-2xx responses.
FieldTypeRequiredDescription
errorstringNoHuman-readable error message.
401
Unauthorized
404
Workspace not found
429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Server error
Workspace GET

/api/workspaces/{workspaceId}/profiles

Get profiles assigned to a workspace

Gets profiles assigned to or available for a workspace depending on the filter. A profile can be assigned to many workspaces; members of each one can read it, as can its owner and organization admins.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/profiles

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/profiles

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/profiles

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID

Query parameters

NameTypeRequiredDescription
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
filterstringNoJSON-encoded filter string used for assignment and soft-delete filters.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Profiles

application/json

Paginated list of profiles.
FieldTypeRequiredDescription
pageintegerYesZero-based page index returned in this response.
pageSizeintegerYesMaximum number of items returned on each page.
profilesarray of objectYesProfiles in this page.
totalCountintegerYesTotal number of items across all pages.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace POST

/api/workspaces/{workspaceId}/profiles/{profileId}

Assign a profile to a workspace

Assigns a profile to a workspace, granting the workspace’s members read access to it (not to its linked connections). The profile and the workspace must belong to the same organization, and a profile can be assigned to many workspaces.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/profiles/{profileId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/profiles/{profileId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/profiles/{profileId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID
profileIdstring (uuid)YesProfile ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Workspace profile mappings

application/json

Paginated list of workspace-profile mappings.
FieldTypeRequiredDescription
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
workspacesProfilesMappingarray of objectNoWorkspace-profile mapping entries.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace DELETE

/api/workspaces/{workspaceId}/profiles/{profileId}

Unassign a profile from a workspace

Removes a profile from a workspace. The profile itself is left intact.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/profiles/{profileId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/profiles/{profileId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/profiles/{profileId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID
profileIdstring (uuid)YesProfile ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Workspace profile mapping removed
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Schedule Schedules GET

/api/workspaces/{workspaceId}/schedules

List a workspace's schedules

Returns a paginated list of the schedules linked to the workspace.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/schedules

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/schedules

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/schedules

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoNumber of items per page.
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
statusstringNoOnly schedules in this status.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Schedules page

application/json

Paginated collection of schedules.
FieldTypeRequiredDescription
pageintegerYesCurrent page number of the result set.
pageSizeintegerYesNumber of items per page.
schedulesarray of objectYesSchedules included on this page of results.
totalCountintegerYesTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Schedule Schedules POST

/api/workspaces/{workspaceId}/schedules/{scheduleId}

Link a schedule to a workspace

Links the schedule to the workspace, replacing any previous workspace link: a schedule belongs to at most one workspace. The workspace must be in the schedule’s organization.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/schedules/{scheduleId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/schedules/{scheduleId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/schedules/{scheduleId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID
scheduleIdstring (uuid)YesSchedule ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The linked schedule

application/json

Server-returned schedule. A schedule is a job: an action to run, what it acts on (targetType, targetId) and its parameters, when it is due (runAt, nextRunAt, recurrence in timezone), its retry budget and its outcome. Schedules belong to an organization and may be linked to a workspace. A worker takes a schedule through the generic claim construct (POST /api/claims with resourceType schedule); there is no schedule-specific claim route. While the claim is live no other worker can take the schedule, and a claim past its expiresAt is stale so the schedule is claimable again. Releasing the claim records the run’s outcome on the schedule in the same transaction (see status). The claim and the status values assigned, claimed and running are server-managed. Pausing is data, not an operation: a client sets paused (and optionally pauseReason) on create or update, and the server records pausedAt and pausedBy. Fields marked readOnly are server-managed and ignored on input.
FieldTypeRequiredDescription
idstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
organizationIdstring (uuid)YesA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
workspaceIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
createdBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
namestringYesHuman-readable name for the schedule.
actionstringYesThe action the worker runs when it holds the schedule’s claim, for example a command name.
targetTypestringNoType of the resource the schedule acts on, named the way a claim’s resourceType is (lowercase snake_case construct name, for example content_item or profile). A server verifies the target types it serves and refuses others with 400. Set together with targetId or not at all.
targetIdstring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
paramsobjectNoAction parameters, stored as a JSON blob. What the schedule acts on belongs in targetType and targetId, not here.
enabledbooleanYesWhether the schedule is eligible to run. A disabled schedule is never claimed.
runAtstring | null (date-time)NoTime the schedule first becomes due.
nextRunAtstring | null (date-time)NoNext time the schedule becomes due. Null when it is never due again.
recurrencestringNoHow the schedule repeats once it has run. Empty, once and none mean run once. hourly repeats every hour; daily, weekly and monthly repeat at the same wall-clock time one calendar day, week or month later in the schedule’s timezone, so a daily schedule keeps its local time across daylight-saving changes. every:<n> repeats every n minutes (1 to 999999). Occurrences are counted from runAt (else from the current nextRunAt); the next due time is the first occurrence after the run is released, so missed runs are not replayed.
timezonestringYesIANA time zone name (for example UTC or America/Chicago) in which daily, weekly and monthly recurrences keep their wall-clock time. Instants (runAt, nextRunAt) are always absolute. The server refuses a name it does not know with 400.
statusstringYesLifecycle status of a schedule. pending: created, not yet due-scheduled. scheduled: waiting for its due time. assigned: designated for a particular worker but not yet claimed. claimed: a worker holds the claim and has not started. running: the claim holder is executing it. retrying: the last attempt failed and another is due. completed, failed and cancelled are terminal for a run-once schedule; a recurring schedule returns to scheduled when its claim is released with a completed outcome.
retryCountintegerYesAttempts already retried for the current run.
maxRetriesintegerYesMaximum retries before the run is marked failed.
retryDelayMinutesintegerNoMinutes to wait before a retry becomes due.
lastRunAtstring | null (date-time)NoTime the most recent attempt ended (the release time of its claim). Server-managed.
lastErrorstringNoError reported by the most recent attempt; empty after a successful one. Server-managed.
claimobjectNoThe schedule’s live claim, when one is held. A read-only view of the claim construct; omitted when the schedule is unclaimed.
pausedAtstring | null (date-time)NoTime the schedule was paused. Null when the schedule is not paused. Server-managed.
pausedBystring (uuid)NoA Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
pauseReasonstringNoReason given for pausing the schedule, set with paused on create or update. Empty when not paused.
createdAtstring (date-time)YesTimestamp of schedule creation.
updatedAtstring (date-time)YesTimestamp of last schedule modification.
deletedAtstring | null (date-time)NoTimestamp when the schedule was soft-deleted. Null while live.
posturestringNoOptional Posture this schedule runs under, resolved above the profile x platform resolution and below an explicit per-run flag. Omitted when the schedule has no override: it then runs under whatever profile x platform, configuration, environment, account or default resolves to, exactly as before. Any value outside the Posture enum is refused with 400.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Schedule Schedules DELETE

/api/workspaces/{workspaceId}/schedules/{scheduleId}

Unlink a schedule from a workspace

Removes the schedule’s link to the workspace. The schedule itself is kept. A schedule that is not linked to this workspace answers 404.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/schedules/{scheduleId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/schedules/{scheduleId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/schedules/{scheduleId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID
scheduleIdstring (uuid)YesSchedule ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Schedule unlinked
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Workspace GET

/api/workspaces/{workspaceId}/teams

Get teams assigned to a workspace

Gets teams assigned to or available for a workspace depending on the filter.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/teams

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/teams

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/teams

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID

Query parameters

NameTypeRequiredDescription
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
filterstringNoJSON-encoded filter string used for assignment and soft-delete filters.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Teams

application/json

Paginated list of teams
FieldTypeRequiredDescription
pageintegerNoCurrent page number of the result set.
pageSizeintegerNoNumber of items per page.
teamsarray of objectNoThe teams of the teampage.
totalCountintegerNoTotal number of items available.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace POST

/api/workspaces/{workspaceId}/teams/{teamId}

Assign a team to a workspace

Assigns a team to a workspace.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/teams/{teamId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/teams/{teamId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/teams/{teamId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID
teamIdstring (uuid)YesTeam ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Workspace team mappings

application/json

Paginated list of workspace-team mappings.
FieldTypeRequiredDescription
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
workspacesTeamsMappingarray of objectNoWorkspace-team mapping entries.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace DELETE

/api/workspaces/{workspaceId}/teams/{teamId}

Unassign a team from a workspace

Removes a team from a workspace.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/teams/{teamId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/teams/{teamId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/teams/{teamId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID
teamIdstring (uuid)YesTeam ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Workspace team mapping removed
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace GET

/api/workspaces/{workspaceId}/views

Get views assigned to a workspace

Gets views assigned to or available for a workspace depending on the filter.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/views

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/views

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/views

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID

Query parameters

NameTypeRequiredDescription
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses
pageintegerNoGet responses by page
pageSizeintegerNoNumber of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase pagesize.
pagesizeintegerNoGet responses by pagesize. Deprecated alias of pageSize.
filterstringNoJSON-encoded filter string used for assignment and soft-delete filters.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Views

application/json

Paginated list of views with location enrichment.
FieldTypeRequiredDescription
pageintegerNoNo description provided.
page_sizeintegerNoNo description provided.
total_countintegerNoNo description provided.
viewsarray of objectNoViews in this page, enriched with workspace and organization context.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace POST

/api/workspaces/{workspaceId}/views/{viewId}

Assign a view to a workspace

Assigns a view to a workspace.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/views/{viewId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/views/{viewId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/views/{viewId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID
viewIdstring (uuid)YesView ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Workspace view mappings

application/json

Paginated list of workspace-view mappings.
FieldTypeRequiredDescription
pageintegerNoZero-based page index returned in this response.
pageSizeintegerNoMaximum number of items returned on each page.
totalCountintegerNoTotal number of items across all pages.
workspacesViewsMappingarray of objectNoWorkspace-view mapping entries.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Workspace DELETE

/api/workspaces/{workspaceId}/views/{viewId}

Unassign a view from a workspace

Removes a view from a workspace.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/api/workspaces/{workspaceId}/views/{viewId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/api/workspaces/{workspaceId}/views/{viewId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/api/workspaces/{workspaceId}/views/{viewId}

Parameters

Path parameters

NameTypeRequiredDescription
workspaceIdstring (uuid)YesWorkspace ID
viewIdstring (uuid)YesView ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Workspace view mapping removed
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Schedule Scheduler GET

/user/schedules

Get schedules

Returns all schedules for the authenticated user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/user/schedules

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/user/schedules

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/user/schedules

Parameters

Query parameters

NameTypeRequiredDescription
pageintegerNoGet responses by page
pageSizeintegerNoGet responses by page size
searchstringNoGet responses that match search param value
orderstringNoGet ordered responses

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Schedules response

application/json

A paginated list of schedules.
FieldTypeRequiredDescription
pageintegerYesCurrent page number (zero-based).
pageSizeintegerYesNumber of schedules per page.
totalCountintegerYesTotal number of schedules across all pages.
schedulesarray of objectYesThe schedules of the schedulepage.
401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Schedule Scheduler POST

/user/schedules

Create or update schedule

Creates or updates a schedule for the authenticated user.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/user/schedules

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/user/schedules

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/user/schedules

Request body

application/json Required
Payload for upserting a schedule. Includes only client-settable fields.
FieldTypeRequiredDescription
cronExpressionstringYesCron expression defining the schedule’s recurrence (e.g. “0 0 * * *” for daily at midnight).
idstring (uuid)NoExisting schedule ID for updates; omit on create.
namestringYesHuman-readable name for the schedule.
userIdstring (uuid)NoOwner user ID; inferred from the authenticated user when omitted.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Schedule upserted

application/json

A schedule defines a recurring cron-based trigger for performance tests or other automated tasks.
FieldTypeRequiredDescription
idstring (uuid)NoUnique identifier for the schedule.
namestringYesHuman-readable name for the schedule.
userIdstring (uuid)YesUUID of the user who owns this schedule.
cronExpressionstringYesCron expression defining the schedule’s recurrence (e.g. “0 0 * * *” for daily at midnight).
lastRunstring (date-time)NoServer-computed timestamp of the schedule’s most recent execution. Null until the first run completes. Server-managed; clients must not set this on create/update.
nextRunstring (date-time)NoServer-computed timestamp of the schedule’s next planned execution, derived from the cron expression. Server-managed; clients must not set this on create/update.
createdAtstring (date-time)NoTimestamp when the schedule was created.
updatedAtstring (date-time)NoTimestamp when the schedule was last updated.
400
Invalid request body or request param

text/plain

401
Expired JWT token used or insufficient privilege

text/plain

500
Internal server error

text/plain

Schedule Scheduler GET

/user/schedules/{scheduleId}

Get schedule by ID

Returns a specific schedule by its ID.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/user/schedules/{scheduleId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/user/schedules/{scheduleId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/user/schedules/{scheduleId}

Parameters

Path parameters

NameTypeRequiredDescription
scheduleIdstring (uuid)YesSchedule ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
Schedule response

application/json

A schedule defines a recurring cron-based trigger for performance tests or other automated tasks.
FieldTypeRequiredDescription
idstring (uuid)NoUnique identifier for the schedule.
namestringYesHuman-readable name for the schedule.
userIdstring (uuid)YesUUID of the user who owns this schedule.
cronExpressionstringYesCron expression defining the schedule’s recurrence (e.g. “0 0 * * *” for daily at midnight).
lastRunstring (date-time)NoServer-computed timestamp of the schedule’s most recent execution. Null until the first run completes. Server-managed; clients must not set this on create/update.
nextRunstring (date-time)NoServer-computed timestamp of the schedule’s next planned execution, derived from the cron expression. Server-managed; clients must not set this on create/update.
createdAtstring (date-time)NoTimestamp when the schedule was created.
updatedAtstring (date-time)NoTimestamp when the schedule was last updated.
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

Schedule Scheduler DELETE

/user/schedules/{scheduleId}

Delete schedule

Deletes a schedule by its ID.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/user/schedules/{scheduleId}

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/user/schedules/{scheduleId}

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/user/schedules/{scheduleId}

Parameters

Path parameters

NameTypeRequiredDescription
scheduleIdstring (uuid)YesSchedule ID

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

204
Schedule deleted
401
Expired JWT token used or insufficient privilege

text/plain

404
Result not found

text/plain

500
Internal server error

text/plain

ProviderCapability GET

/{version}/capabilities

Get the provider's capabilities

Returns the capabilities document for a client of the given version. Authentication is optional: with a valid token the document reflects the caller’s roles, and with a valid token plus X-Current-Orgid it also carries membership. An invalid or absent token is not an error; the document is returned without membership. A malformed X-Current-Orgid is a client error and returns 400. With client, the document carries compatibility for that client at {version}; an outdated client still receives 200 with compatible false. With a valid token the document carries session; for a live member of the X-Current-Orgid organization it includes that organization’s plan, entitlements and device usage.

Try this endpoint

Substitute your own Layer5 Cloud hostname when you are working against a hosted or self-managed instance.

Meshery Cloud production server URL

https://cloud.meshery.io/{version}/capabilities

Meshery Cloud staging server URL

https://staging-cloud.meshery.io/{version}/capabilities

Meshery Cloud development server URL (controlled via PORT environment variable)

http://localhost:9876/{version}/capabilities

Parameters

Path parameters

NameTypeRequiredDescription
versionstringYesVersion of the requesting client, for example v0.8.0.

Query parameters

NameTypeRequiredDescription
clientstringNoIdentifier of the requesting client application, for example the product name of a desktop app. When present, the document carries compatibility for this client at the {version} path parameter.
osstringNoOperating system of the client, used to select packages.

Header parameters

NameTypeRequiredDescription
X-Current-Orgidstring (uuid)NoOrganization whose membership the caller wants reported.

Returned data

Responses

Status codes, content types, and response schemas returned by this endpoint.

200
The capabilities document

application/json

The remote provider’s capabilities document. Existing fields describe the provider and its extensions; contractVersion and membership let a native client gate on the provider’s contract and on its organization membership after authenticating; compatibility tells a client that named itself whether its version is still accepted, and session describes the authenticated caller’s roles, plan and entitlements. New fields arrive only with a new contractVersion (1.1 added compatibility and session).
FieldTypeRequiredDescription
capabilitiesarray of objectNoFeatures the provider serves and their endpoints. Clients read paths from here instead of hard-coding them. A provider serving desktop connections lists register-connection, connection-heartbeat and deregister-desktop-connection; an endpoint may hold {connectionId} or {installationId} placeholders.
compatibilityobjectNoWhether a client application’s version meets the provider’s minimum for that client. A client whose compatible is false must update before it registers or keeps a connection alive; the provider answers those calls with 426. A client the provider has no minimum for is compatible and has no minimumVersion.
contractVersionstringNoVersion of the provider’s REST contract for native clients, as MAJOR.MINOR. A client refuses a provider whose major differs from the one it was built against. A provider that predates this field omits it, which a client treats as not serving the contract.
extensionsobjectNoExtension points; shape owned by the provider.
membershipobjectNoWhether the authenticated caller is a live member of the organization named by X-Current-Orgid. Present only on an authenticated request that carried that header.
packageUrlstringNoDownload URL of that package.
packageVersionstringNoVersion of the extension package the provider offers this client.
providerDescriptionarray of stringNoLines describing the provider.
providerNamestringNoDisplay name of the provider.
providerTypestringYesProvider type, for example remote.
providerUrlstringNoHome page URL of the provider.
redirectsobjectNoRedirect targets the provider serves to this client, keyed by name.
restrictedAccessobjectNoAccess restrictions applied to this client; shape owned by the provider.
sessionobjectNoThe authenticated caller’s session as the provider sees it: who the caller is, the caller’s roles, and, for the organization named by X-Current-Orgid when the caller is a live member of it, that organization’s roles, plan, entitlements and device usage. Present only on an authenticated request.
400
Invalid request body or request param

text/plain

429
Too many requests - the caller exceeded the server’s per-user request rate for this route family. Wait the number of seconds in Retry-After before retrying.

application/json

A MeshKit error answered as a JSON body. error is the sentence the caller is shown; MeshKit’s long description is never serialized. Use the MeshkitError400, MeshkitError403, MeshkitError404, MeshkitError409, MeshkitError429, MeshkitError500 and MeshkitError502 responses for an operation whose server answers its refusals this way.
FieldTypeRequiredDescription
codestringNoMeshKit error code, a component-scoped identifier allocated by the emitting service (e.g. <component>-<number>); it is not a stable part of this contract. Omitted for an error that is not a MeshKit error.
errorstringYesThe sentence the caller is shown.
probableCausearray of stringNoMeshKit’s probable causes of the error.
severitystringNoMeshKit severity name. Omitted when MeshKit reports none.
suggestedRemediationarray of stringNoMeshKit’s suggested remediations for the error.
500
Internal server error

text/plain

Related Reading