--- swagger: '2.0' info: version: 0.16.54 title: Ziti Fabric description: OpenZiti Fabric API contact: name: OpenZiti url: https://openziti.discourse.group email: help@openziti.org license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html host: demo.ziti.dev basePath: /fabric/v1 schemes: - https consumes: - application/json produces: - application/json securityDefinitions: oauth2: authorizationUrl: /oidc/authorize flow: accessCode scopes: openid: openid tokenUrl: /oidc/token type: oauth2 ztSession: description: An API Key that is provided post authentication in: header name: zt-session type: apiKey security: - ztSession: [] - oauth2: - openid ####################################################################################################################### # # Paths - Endpoints and their associated HTTP methods # ####################################################################################################################### paths: ################################################################### # Services ################################################################## '/services': get: summary: List services description: | Retrieves a list of service resources; supports filtering, sorting, and pagination. Requires admin access. tags: - Service operationId: listServices parameters: - $ref: '#/parameters/limit' - $ref: '#/parameters/offset' - $ref: '#/parameters/filter' responses: '200': $ref: '#/responses/listServices' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' post: summary: Create a service resource description: Create a service resource. Requires admin access. tags: - Service operationId: createService parameters: - name: service in: body required: true description: A service to create schema: $ref: '#/definitions/serviceCreate' responses: '201': $ref: '#/responses/createResponse' '400': $ref: '#/responses/badRequestResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' '/services/{id}': parameters: - $ref: '#/parameters/id' get: summary: Retrieves a single service description: Retrieves a single service by id. Requires admin access. tags: - Service operationId: detailService responses: '200': $ref: '#/responses/detailService' '404': $ref: '#/responses/notFoundResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' put: summary: Update all fields on a service description: Update all fields on a service by id. Requires admin access. tags: - Service operationId: updateService parameters: - name: service in: body required: true description: A service update object schema: $ref: '#/definitions/serviceUpdate' responses: '200': $ref: '#/responses/updateResponse' '400': $ref: '#/responses/badRequestResponse' '404': $ref: '#/responses/notFoundResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' patch: summary: Update the supplied fields on a service description: Update the supplied fields on a service. Requires admin access. tags: - Service operationId: patchService parameters: - name: service in: body required: true description: A service patch object schema: $ref: '#/definitions/servicePatch' responses: '200': $ref: '#/responses/patchResponse' '400': $ref: '#/responses/badRequestResponse' '404': $ref: '#/responses/notFoundResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' delete: summary: Delete a service description: Delete a service by id. Requires admin access. tags: - Service operationId: deleteService responses: '200': $ref: '#/responses/deleteResponse' '400': $ref: '#/responses/badRequestResponse' '401': $ref: '#/responses/unauthorizedResponse' '409': $ref: '#/responses/cannotDeleteReferencedResourceResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' '/services/{id}/terminators': parameters: - $ref: '#/parameters/id' get: summary: List of terminators assigned to a service description: | Retrieves a list of terminator resources that are assigned specific service; supports filtering, sorting, and pagination. tags: - Service operationId: listServiceTerminators parameters: - $ref: '#/parameters/limit' - $ref: '#/parameters/offset' - $ref: '#/parameters/filter' responses: '200': $ref: '#/responses/listTerminators' '401': $ref: '#/responses/unauthorizedResponse' '400': $ref: '#/responses/badRequestResponse' '429': $ref: '#/responses/rateLimitedResponse' ################################################################### # Routers ################################################################## '/routers': get: summary: List routers description: | Retrieves a list of router resources; supports filtering, sorting, and pagination. Requires admin access. tags: - Router operationId: listRouters parameters: - $ref: '#/parameters/limit' - $ref: '#/parameters/offset' - $ref: '#/parameters/filter' responses: '200': $ref: '#/responses/listRouters' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' post: summary: Create a router resource description: Create a router resource. Requires admin access. tags: - Router operationId: createRouter parameters: - name: router in: body required: true description: A router to create schema: $ref: '#/definitions/routerCreate' responses: '201': $ref: '#/responses/createResponse' '400': $ref: '#/responses/badRequestResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' '/routers/{id}': parameters: - $ref: '#/parameters/id' get: summary: Retrieves a single router description: Retrieves a single router by id. Requires admin access. tags: - Router operationId: detailRouter responses: '200': $ref: '#/responses/detailRouter' '404': $ref: '#/responses/notFoundResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' put: summary: Update all fields on a router description: Update all fields on a router by id. Requires admin access. tags: - Router operationId: updateRouter parameters: - name: router in: body required: true description: A router update object schema: $ref: '#/definitions/routerUpdate' responses: '200': $ref: '#/responses/updateResponse' '400': $ref: '#/responses/badRequestResponse' '404': $ref: '#/responses/notFoundResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' patch: summary: Update the supplied fields on a router description: Update the supplied fields on a router. Requires admin access. tags: - Router operationId: patchRouter parameters: - name: router in: body required: true description: A router patch object schema: $ref: '#/definitions/routerPatch' responses: '200': $ref: '#/responses/patchResponse' '400': $ref: '#/responses/badRequestResponse' '404': $ref: '#/responses/notFoundResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' delete: summary: Delete a router description: Delete a router by id. Requires admin access. tags: - Router operationId: deleteRouter responses: '200': $ref: '#/responses/deleteResponse' '400': $ref: '#/responses/badRequestResponse' '401': $ref: '#/responses/unauthorizedResponse' '409': $ref: '#/responses/cannotDeleteReferencedResourceResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' '/routers/{id}/terminators': parameters: - $ref: '#/parameters/id' get: summary: List of terminators assigned to a router description: | Retrieves a list of terminator resources that are assigned specific router; supports filtering, sorting, and pagination. tags: - Router operationId: listRouterTerminators parameters: - $ref: '#/parameters/limit' - $ref: '#/parameters/offset' - $ref: '#/parameters/filter' responses: '200': $ref: '#/responses/listTerminators' '401': $ref: '#/responses/unauthorizedResponse' '400': $ref: '#/responses/badRequestResponse' '429': $ref: '#/responses/rateLimitedResponse' ################################################################### # Terminators ################################################################## '/terminators': get: summary: List terminators description: | Retrieves a list of terminator resources; supports filtering, sorting, and pagination. Requires admin access. tags: - Terminator operationId: listTerminators parameters: - $ref: '#/parameters/limit' - $ref: '#/parameters/offset' - $ref: '#/parameters/filter' responses: '200': $ref: '#/responses/listTerminators' '401': $ref: '#/responses/unauthorizedResponse' '400': $ref: '#/responses/badRequestResponse' '429': $ref: '#/responses/rateLimitedResponse' post: summary: Create a terminator resource description: Create a terminator resource. Requires admin access. tags: - Terminator operationId: createTerminator parameters: - name: terminator in: body required: true description: A terminator to create schema: $ref: '#/definitions/terminatorCreate' responses: '201': $ref: '#/responses/createResponse' '400': $ref: '#/responses/badRequestResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' '/terminators/{id}': parameters: - $ref: '#/parameters/id' get: summary: Retrieves a single terminator description: Retrieves a single terminator by id. Requires admin access. tags: - Terminator operationId: detailTerminator responses: '200': $ref: '#/responses/detailTerminator' '404': $ref: '#/responses/notFoundResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' put: summary: Update all fields on a terminator description: Update all fields on a terminator by id. Requires admin access. tags: - Terminator operationId: updateTerminator parameters: - name: terminator in: body required: true description: A terminator update object schema: $ref: '#/definitions/terminatorUpdate' responses: '200': $ref: '#/responses/updateResponse' '400': $ref: '#/responses/badRequestResponse' '404': $ref: '#/responses/notFoundResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' patch: summary: Update the supplied fields on a terminator description: Update the supplied fields on a terminator. Requires admin access. tags: - Terminator operationId: patchTerminator parameters: - name: terminator in: body required: true description: A terminator patch object schema: $ref: '#/definitions/terminatorPatch' responses: '200': $ref: '#/responses/patchResponse' '400': $ref: '#/responses/badRequestResponse' '404': $ref: '#/responses/notFoundResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' delete: summary: Delete a terminator description: Delete a terminator by id. Requires admin access. tags: - Terminator operationId: deleteTerminator responses: '200': $ref: '#/responses/deleteResponse' '400': $ref: '#/responses/badRequestResponse' '401': $ref: '#/responses/unauthorizedResponse' '409': $ref: '#/responses/cannotDeleteReferencedResourceResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' ################################################################### # Links ################################################################## '/links': get: summary: List links description: | Retrieves a list of link resources; does not supports filtering, sorting, or pagination. Requires admin access. tags: - Link operationId: listLinks parameters: - $ref: '#/parameters/limit' - $ref: '#/parameters/offset' - $ref: '#/parameters/filter' responses: '200': $ref: '#/responses/listLinks' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '/links/{id}': parameters: - $ref: '#/parameters/id' get: summary: Retrieves a single link description: Retrieves a single link by id. Requires admin access. tags: - Link operationId: detailLink responses: '200': $ref: '#/responses/detailLink' '404': $ref: '#/responses/notFoundResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' patch: summary: Update the supplied fields on a link description: Update the supplied fields on a link. Requires admin access. tags: - Link operationId: patchLink parameters: - name: link in: body required: true description: A link patch object schema: $ref: '#/definitions/linkPatch' responses: '200': $ref: '#/responses/patchResponse' '400': $ref: '#/responses/badRequestResponse' '404': $ref: '#/responses/notFoundResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' delete: summary: Delete a link description: Delete a link by id. Requires admin access. tags: - Link operationId: deleteLink responses: '200': $ref: '#/responses/deleteResponse' '400': $ref: '#/responses/badRequestResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' ################################################################### # Circuits ################################################################## '/circuits': get: summary: List circuits description: | Retrieves a list of circuit resources; does not supports filtering, sorting, or pagination. Requires admin access. tags: - Circuit operationId: listCircuits parameters: - $ref: '#/parameters/limit' - $ref: '#/parameters/offset' - $ref: '#/parameters/filter' responses: '200': $ref: '#/responses/listCircuits' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '/circuits/{id}': parameters: - $ref: '#/parameters/id' get: summary: Retrieves a single circuit description: Retrieves a single circuit by id. Requires admin access. tags: - Circuit operationId: detailCircuit responses: '200': $ref: '#/responses/detailCircuit' '404': $ref: '#/responses/notFoundResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' delete: summary: Delete a circuit description: Delete a circuit by id. Requires admin access. tags: - Circuit operationId: deleteCircuit parameters: - name: options in: body required: false description: A circuit delete object schema: $ref: '#/definitions/circuitDelete' responses: '200': $ref: '#/responses/deleteResponse' '400': $ref: '#/responses/badRequestResponse' '401': $ref: '#/responses/unauthorizedResponse' '409': $ref: '#/responses/cannotDeleteReferencedResourceResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' ################################################################### # Inspections ################################################################### '/inspections': post: summary: Inspect system values description: | Requests system information, such as stack dumps or information about capabilities. Requires admin access. tags: - Inspect operationId: inspect parameters: - name: request in: body required: true description: An inspect request schema: $ref: '#/definitions/inspectRequest' responses: '200': $ref: '#/responses/inspectResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' ################################################################### # Database ################################################################### '/database': post: summary: Create a new database snapshot description: Create a new database snapshot. Requires admin access. tags: - Database operationId: createDatabaseSnapshot responses: '200': $ref: '#/responses/emptyResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '/database/snapshot': post: summary: Create a new database snapshot with path description: Create a new database snapshot with path. Requires admin access. tags: - Database operationId: createDatabaseSnapshotWithPath parameters: - name: snapshot in: body required: true description: snapshot parameters schema: $ref: '#/definitions/databaseSnapshotCreate' responses: '200': $ref: '#/responses/databaseSnapshotCreateResult' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '/database/check-data-integrity': post: summary: Starts a data integrity scan on the datastore description: Starts a data integrity scan on the datastore. Requires admin access. Only once instance may run at a time, including runs of fixDataIntegrity. tags: - Database operationId: checkDataIntegrity responses: '202': $ref: '#/responses/emptyResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '/database/fix-data-integrity': post: summary: Runs a data integrity scan on the datastore, attempts to fix any issues it can and returns any found issues description: Runs a data integrity scan on the datastore, attempts to fix any issues it can, and returns any found issues. Requires admin access. Only once instance may run at a time, including runs of checkDataIntegrity. tags: - Database operationId: fixDataIntegrity responses: '202': $ref: '#/responses/emptyResponse' '429': $ref: '#/responses/rateLimitedResponse' '401': $ref: '#/responses/unauthorizedResponse' '/database/data-integrity-results': get: summary: Returns any results found from in-progress integrity checks description: Returns any results found from in-progress integrity checks. Requires admin access. tags: - Database operationId: dataIntegrityResults responses: '200': $ref: '#/responses/dataIntegrityCheckResult' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' ################################################################### # Cluster ################################################################## '/cluster/list-members': get: summary: Returns all members of a cluster and their current status description: Returns all members of a cluster and their current status tags: - Cluster operationId: clusterListMembers responses: '200': $ref: '#/responses/clusterListMembersResponse' '400': $ref: '#/responses/badRequestResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '/cluster/add-member': post: summary: Add a member to the controller cluster description: Add a member to the controller cluster. Requires admin access. tags: - Cluster operationId: clusterMemberAdd parameters: - name: member in: body required: true description: member parameters schema: $ref: '#/definitions/clusterMemberAdd' responses: '200': $ref: '#/responses/emptyResponse' '400': $ref: '#/responses/badRequestResponse' '401': $ref: '#/responses/unauthorizedResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' '/cluster/remove-member': post: summary: Remove a member from the controller cluster description: Remove a member from the controller cluster. Requires admin access. tags: - Cluster operationId: clusterMemberRemove parameters: - name: member in: body required: true description: member parameters schema: $ref: '#/definitions/clusterMemberRemove' responses: '200': $ref: '#/responses/emptyResponse' '400': $ref: '#/responses/badRequestResponse' '401': $ref: '#/responses/unauthorizedResponse' '404': $ref: '#/responses/notFoundResponse' '429': $ref: '#/responses/rateLimitedResponse' '503': $ref: '#/responses/serverUnavailableResponse' '/cluster/transfer-leadership': post: summary: Attempts to transfer leadership to a different member of the cluster description: Attempts to transfer leadership to a different member of the cluster. Requires admin access. tags: - Cluster operationId: clusterTransferLeadership parameters: - name: member in: body required: true description: transfer operation parameters schema: $ref: '#/definitions/clusterTransferLeadership' responses: '200': $ref: '#/responses/emptyResponse' '401': $ref: '#/responses/unauthorizedResponse' '404': $ref: '#/responses/notFoundResponse' '429': $ref: '#/responses/rateLimitedResponse' '500': $ref: '#/responses/badRequestResponse' '503': $ref: '#/responses/serverUnavailableResponse' ####################################################################################################################### # # Parameters - Reusable parameters # ####################################################################################################################### parameters: id: name: id required: true type: string in: path description: The id of the requested resource limit: name: limit type: integer in: query offset: name: offset type: integer in: query filter: name: filter type: string in: query ####################################################################################################################### # # Responses - Envelope Wrapped Definitions # ####################################################################################################################### responses: ################################################################### # Errors ################################################################## badRequestResponse: description: The supplied request contains invalid fields or could not be parsed (json and non-json bodies). The error's code, message, and cause fields can be inspected for further information schema: $ref: '#/definitions/apiErrorEnvelope' examples: 'application/json': error: args: urlVars: {} cause: field: '(root)' type: required value: fooField: abc fooField2: def message: '(root): fooField3 is required' details: context: '(root)' field: '(root)' property: fooField3 causeMessage: schema validation failed code: COULD_NOT_VALIDATE message: The supplied request contains an invalid document requestId: ac6766d6-3a09-44b3-8d8a-1b541d97fdd9 meta: apiEnrollmentVersion: 0.0.1 apiVersion: 0.0.1 unauthorizedResponse: description: The currently supplied session does not have the correct access rights to request this resource schema: $ref: '#/definitions/apiErrorEnvelope' examples: 'application/json': error: args: urlVars: {} cause: '' causeMessage: '' code: UNAUTHORIZED message: The request could not be completed. The session is not authorized or the credentials are invalid requestId: 0bfe7a04-9229-4b7a-812c-9eb3cc0eac0f meta: apiEnrollmentVersion: 0.0.1 apiVersion: 0.0.1 invalidAuthResponse: description: The authentication request could not be processed as the credentials are invalid schema: $ref: '#/definitions/apiErrorEnvelope' examples: 'application/json': error: args: urlVars: {} cause: '' causeMessage: '' code: INVALID_AUTH message: The authentication request failed requestId: 5952ed10-3091-474f-a691-47ebab6990dc meta: apiEnrollmentVersion: 0.0.1 apiVersion: 0.0.1 notFoundResponse: description: The requested resource does not exist schema: $ref: '#/definitions/apiErrorEnvelope' examples: 'application/json': error: args: urlVars: id: 71a3000f-7dda-491a-9b90-a19f4ee6c406 cause: causeMessage: '' code: NOT_FOUND message: The resource requested was not found or is no longer available requestId: 270908d6-f2ef-4577-b973-67bec18ae376 meta: apiEnrollmentVersion: 0.0.1 apiVersion: 0.0.1 cannotDeleteReferencedResourceResponse: description: The resource requested to be removed/altered cannot be as it is referenced by another object. schema: $ref: '#/definitions/apiErrorEnvelope' examples: 'application/json': error: args: urlVars: id: 71a3000f-7dda-491a-9b90-a19f4ee6c406 causeMessage: 'referenced by /some-resource/05f4f710-c155-4a74-86d5-77558eb9cb42' code: CONFLICT_CANNOT_MODIFY_REFERENCED message: The resource cannot be deleted/modified. Remove all referencing resources first. requestId: 270908d6-f2ef-4577-b973-67bec18ae376 meta: apiEnrollmentVersion: 0.0.1 apiVersion: 0.0.1 rateLimitedResponse: description: The resource requested is rate limited and the rate limit has been exceeded schema: $ref: '#/definitions/apiErrorEnvelope' examples: 'application/json': error: args: urlVars: {} causeMessage: 'you have hit a rate limit in the requested operation' code: RATE_LIMITED message: The resource is rate limited and the rate limit has been exceeded. Please try again later requestId: 270908d6-f2ef-4577-b973-67bec18ae376 meta: apiEnrollmentVersion: 0.0.1 apiVersion: 0.0.1 ################################################################### # Standard Responses ################################################################## emptyResponse: description: Base empty response schema: $ref: '#/definitions/empty' deleteResponse: description: The delete request was successful and the resource has been removed schema: $ref: '#/definitions/empty' updateResponse: description: The update request was successful and the resource has been altered schema: $ref: '#/definitions/empty' patchResponse: description: The patch request was successful and the resource has been altered schema: $ref: '#/definitions/empty' createResponse: description: The create request was successful and the resource has been added at the following location schema: $ref: '#/definitions/createEnvelope' serverUnavailableResponse: description: The request could not be completed due to the server being busy or in a temporarily bad state schema: $ref: '#/definitions/apiErrorEnvelope' ################################################################### # Services ################################################################## listServices: description: A list of services schema: $ref: '#/definitions/listServicesEnvelope' detailService: description: A single service schema: $ref: '#/definitions/detailServiceEnvelope' ################################################################### # Routers ################################################################## listRouters: description: A list of routers schema: $ref: '#/definitions/listRoutersEnvelope' detailRouter: description: A single router schema: $ref: '#/definitions/detailRouterEnvelope' ################################################################### # Terminators ################################################################## listTerminators: description: A list of terminators schema: $ref: '#/definitions/listTerminatorsEnvelope' detailTerminator: description: A single terminator schema: $ref: '#/definitions/detailTerminatorEnvelope' ################################################################### # Links ################################################################## listLinks: description: A list of links schema: $ref: '#/definitions/listLinksEnvelope' detailLink: description: A single link schema: $ref: '#/definitions/detailLinkEnvelope' ################################################################### # Circuits ################################################################### listCircuits: description: A list of circuits schema: $ref: '#/definitions/listCircuitsEnvelope' detailCircuit: description: A single circuit schema: $ref: '#/definitions/detailCircuitEnvelope' ################################################################### # Inspections ################################################################### inspectResponse: description: A response to an inspect request schema: $ref: '#/definitions/inspectResponse' ################################################################### # Database ################################################################### dataIntegrityCheckResult: description: A list of data integrity issues found schema: $ref: '#/definitions/dataIntegrityCheckResultEnvelope' databaseSnapshotCreateResult: description: The path to the created snapshot schema: $ref: '#/definitions/databaseSnapshotCreateResultEnvelope' ################################################################### # Cluster ################################################################## clusterListMembersResponse: description: A response to a cluster list-members request schema: $ref: '#/definitions/clusterMemberListResponse' ####################################################################################################################### # # Definitions - In & Out Models Only # ####################################################################################################################### definitions: ################################################################### # Standard ################################################################## pagination: type: object required: - limit - offset - totalCount properties: limit: type: number format: int64 offset: type: number format: int64 totalCount: type: number format: int64 empty: type: object required: - meta - data properties: meta: $ref: '#/definitions/meta' data: type: object example: {} meta: type: object properties: filterableFields: type: array items: type: string x-omitempty: true pagination: $ref: '#/definitions/pagination' apiEnrollmentVersion: type: string apiVersion: type: string createEnvelope: type: object properties: meta: $ref: '#/definitions/meta' data: $ref: '#/definitions/createLocation' createLocation: type: object properties: _links: $ref: '#/definitions/links' id: type: string baseEntity: description: Fields shared by all Edge API entities type: object required: - id - createdAt - updatedAt - _links - tags properties: id: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time _links: $ref: '#/definitions/links' tags: $ref: '#/definitions/tags' link: description: A link to another resource type: object required: - href properties: href: type: string format: uri method: type: string comment: type: string links: description: A map of named links type: object x-omitempty: false additionalProperties: $ref: '#/definitions/link' entityRef: description: A reference to another resource and links to interact with it type: object properties: entity: type: string id: type: string name: type: string _links: $ref: '#/definitions/links' tags: description: 'A map of user defined fields and values. The values are limited to the following types/values: null, string, boolean' allOf: - $ref: '#/definitions/subTags' x-nullable: true subTags: type: object additionalProperties: { type: object } versionInfo: description: 'Application build information' type: object properties: version: type: string revision: type: string buildDate: type: string os: type: string arch: type: string databaseSnapshotCreate: type: object properties: path: type: string databaseSnapshotCreateResultEnvelope: type: object required: - meta - data properties: meta: $ref: '#/definitions/meta' data: $ref: '#/definitions/databaseSnapshotCreateDetails' databaseSnapshotCreateDetails: type: object required: - path properties: path: type: string dataIntegrityCheckResultEnvelope: type: object required: - meta - data properties: meta: $ref: '#/definitions/meta' data: $ref: '#/definitions/dataIntegrityCheckDetails' dataIntegrityCheckDetails: type: object required: - inProgress - fixingErrors - tooManyErrors - startTime - endTime - error - results properties: inProgress: type: boolean startTime: type: string format: date-time endTime: type: string format: date-time fixingErrors: type: boolean error: type: string tooManyErrors: type: boolean results: $ref: '#/definitions/dataIntegrityCheckDetailList' dataIntegrityCheckDetailList: type: array items: $ref: '#/definitions/dataIntegrityCheckDetail' dataIntegrityCheckDetail: type: object required: - description - fixed properties: description: type: string fixed: type: boolean clusterMemberAdd: type: object required: - address - isVoter properties: address: type: string isVoter: type: boolean clusterMemberRemove: type: object required: - id properties: id: type: string clusterTransferLeadership: type: object properties: newLeaderId: type: string interface: description: A resource describing a network interface type: object required: - name - hardwareAddress - mtu - index - isUp - isRunning - isLoopback - isBroadcast - isMulticast - addresses properties: name: type: string hardwareAddress: type: string mtu: type: integer minimum: 0 index: type: integer minimum: 0 isUp: type: boolean isRunning: type: boolean isLoopback: type: boolean isBroadcast: type: boolean isMulticast: type: boolean addresses: type: array items: type: string ################################################################### # Errors ################################################################## apiErrorEnvelope: type: object required: - meta - error properties: meta: $ref: '#/definitions/meta' error: $ref: '#/definitions/apiError' apiError: type: object properties: args: $ref: '#/definitions/apiErrorArgs' data: type: object additionalProperties: true causeMessage: type: string code: type: string message: type: string requestId: type: string cause: $ref: '#/definitions/apiErrorCause' apiFieldError: type: object properties: reason: type: string field: type: string value: type: string apiErrorCause: allOf: - $ref: '#/definitions/apiFieldError' - $ref: '#/definitions/apiError' apiErrorArgs: type: object properties: urlVars: properties: {} additionalProperties: type: string type: object ################################################################### # Services ################################################################## listServicesEnvelope: type: object required: - meta - data properties: meta: $ref: '#/definitions/meta' data: $ref: '#/definitions/serviceList' detailServiceEnvelope: type: object required: - meta - data properties: meta: $ref: '#/definitions/meta' data: $ref: '#/definitions/serviceDetail' serviceList: type: array items: $ref: '#/definitions/serviceDetail' serviceDetail: type: object allOf: - $ref: '#/definitions/baseEntity' - type: object required: - name - terminatorStrategy - maxIdleTimeMillis properties: name: type: string terminatorStrategy: type: string maxIdleTimeMillis: type: integer serviceCreate: type: object required: - name properties: name: type: string terminatorStrategy: type: string maxIdleTimeMillis: type: integer tags: $ref: '#/definitions/tags' serviceUpdate: type: object required: - name properties: name: type: string terminatorStrategy: type: string maxIdleTimeMillis: type: integer tags: $ref: '#/definitions/tags' servicePatch: type: object properties: name: type: string terminatorStrategy: type: string maxIdleTimeMillis: type: integer tags: $ref: '#/definitions/tags' ################################################################### # Routers ################################################################## listRoutersEnvelope: type: object required: - meta - data properties: meta: $ref: '#/definitions/meta' data: $ref: '#/definitions/routerList' detailRouterEnvelope: type: object required: - meta - data properties: meta: $ref: '#/definitions/meta' data: $ref: '#/definitions/routerDetail' routerList: type: array items: $ref: '#/definitions/routerDetail' routerDetail: type: object allOf: - $ref: '#/definitions/baseEntity' - type: object required: - name - fingerprint - connected - cost - noTraversal - disabled properties: name: type: string fingerprint: type: string connected: type: boolean cost: type: integer minimum: 0 maximum: 65535 noTraversal: type: boolean disabled: type: boolean listenerAddresses: type: array items: $ref: '#/definitions/routerListener' versionInfo: $ref: '#/definitions/versionInfo' interfaces: type: array items: $ref: '#/definitions/interface' ctrlChanListeners: type: object additionalProperties: type: array items: type: string configs: type: array items: type: string routerListener: type: object required: - address - protocol properties: address: type: string protocol: type: string routerCreate: type: object required: - id - name - cost - noTraversal properties: id: type: string name: type: string fingerprint: type: string x-nullable: true cost: type: integer minimum: 0 maximum: 65535 noTraversal: type: boolean disabled: type: boolean x-nullable: true ctrlChanListeners: type: object additionalProperties: type: array items: type: string x-omitempty: false configs: type: array items: type: string tags: $ref: '#/definitions/tags' routerUpdate: type: object required: - name - fingerprint - cost - noTraversal properties: name: type: string fingerprint: type: string cost: type: integer minimum: 0 maximum: 65535 noTraversal: type: boolean disabled: type: boolean x-nullable: true ctrlChanListeners: type: object additionalProperties: type: array items: type: string x-omitempty: false configs: type: array items: type: string tags: $ref: '#/definitions/tags' routerPatch: type: object properties: name: type: string fingerprint: type: string x-nullable: true cost: type: integer minimum: 0 maximum: 65535 x-nullable: true noTraversal: type: boolean x-nullable: true disabled: type: boolean x-nullable: true ctrlChanListeners: type: object additionalProperties: type: array items: type: string x-omitempty: false configs: type: array items: type: string tags: $ref: '#/definitions/tags' ################################################################### # Terminators ################################################################## listTerminatorsEnvelope: type: object required: - meta - data properties: meta: $ref: '#/definitions/meta' data: $ref: '#/definitions/terminatorList' detailTerminatorEnvelope: type: object required: - meta - data properties: meta: $ref: '#/definitions/meta' data: $ref: '#/definitions/terminatorDetail' terminatorList: type: array items: $ref: '#/definitions/terminatorDetail' terminatorDetail: type: object allOf: - $ref: '#/definitions/baseEntity' - type: object required: - serviceId - service - routerId - router - binding - address - instanceId - cost - precedence - dynamicCost - hostId properties: serviceId: type: string service: $ref: '#/definitions/entityRef' routerId: type: string router: $ref: '#/definitions/entityRef' binding: type: string address: type: string instanceId: type: string cost: $ref: '#/definitions/terminatorCost' precedence: $ref: '#/definitions/terminatorPrecedence' dynamicCost: $ref: '#/definitions/terminatorCost' hostId: type: string terminatorCreate: type: object required: - service - router - address - binding properties: service: type: string router: type: string binding: type: string address: type: string instanceId: type: string instanceSecret: type: string format: byte cost: $ref: '#/definitions/terminatorCost' precedence: $ref: '#/definitions/terminatorPrecedence' tags: $ref: '#/definitions/tags' hostId: type: string terminatorUpdate: type: object required: - service - router - address - binding properties: service: type: string router: type: string binding: type: string address: type: string cost: $ref: '#/definitions/terminatorCost' precedence: $ref: '#/definitions/terminatorPrecedence' tags: $ref: '#/definitions/tags' hostId: type: string terminatorPatch: type: object properties: service: type: string router: type: string binding: type: string address: type: string cost: $ref: '#/definitions/terminatorCost' precedence: $ref: '#/definitions/terminatorPrecedence' tags: $ref: '#/definitions/tags' hostId: type: string terminatorCost: type: integer minimum: 0 maximum: 65535 terminatorPrecedence: type: string enum: - default - required - failed terminatorPrecedenceMap: type: object additionalProperties: $ref: '#/definitions/terminatorPrecedence' terminatorCostMap: type: object additionalProperties: $ref: '#/definitions/terminatorCost' ################################################################### # Links ################################################################## listLinksEnvelope: type: object required: - meta - data properties: meta: $ref: '#/definitions/meta' data: $ref: '#/definitions/linkList' detailLinkEnvelope: type: object required: - meta - data properties: meta: $ref: '#/definitions/meta' data: $ref: '#/definitions/linkDetail' linkList: type: array items: $ref: '#/definitions/linkDetail' linkConnection: type: object properties: type: type: string source: type: string dest: type: string linkDetail: type: object required: - id - protocol - sourceRouter - destRouter - state - staticCost - sourceLatency - destLatency - cost - down - iteration properties: id: type: string protocol: type: string sourceRouter: $ref: '#/definitions/entityRef' destRouter: $ref: '#/definitions/entityRef' state: type: string down: type: boolean staticCost: type: integer sourceLatency: type: integer destLatency: type: integer cost: type: integer iteration: type: integer connections: type: array items: $ref: '#/definitions/linkConnection' linkPatch: type: object properties: down: type: boolean staticCost: type: integer ################################################################### # Circuits ################################################################## listCircuitsEnvelope: type: object required: - meta - data properties: meta: $ref: '#/definitions/meta' data: $ref: '#/definitions/circuitList' detailCircuitEnvelope: type: object required: - meta - data properties: meta: $ref: '#/definitions/meta' data: $ref: '#/definitions/circuitDetail' circuitList: type: array items: $ref: '#/definitions/circuitDetail' circuitDetail: allOf: - $ref: '#/definitions/baseEntity' - type: object required: - service - terminator - path properties: clientId: type: string service: $ref: '#/definitions/entityRef' terminator: $ref: '#/definitions/entityRef' path: $ref: '#/definitions/path' circuitDelete: type: object properties: immediate: type: boolean path: type: object properties: nodes: type: array items: $ref: '#/definitions/entityRef' links: type: array items: $ref: '#/definitions/entityRef' ################################################################### # Inspections ################################################################## inspectRequest: type: object required: - appRegex - requestedValues properties: appRegex: type: string requestedValues: type: array items: type: string inspectResponseValue: type: object required: - appId - name - value properties: appId: type: string name: type: string value: type: - object - string - number - boolean inspectResponse: type: object required: - success properties: success: type: boolean errors: type: array items: type: string values: type: array items: $ref: '#/definitions/inspectResponseValue' ################################################################### # Cluster ################################################################## clusterMemberListValue: type: object required: - id - address - voter - leader - version - connected - readOnly properties: id: type: string address: type: string voter: type: boolean leader: type: boolean version: type: string connected: type: boolean readOnly: type: boolean preferredLeader: type: boolean clusterMemberListResponse: type: object properties: data: type: array items: $ref: '#/definitions/clusterMemberListValue'