Files
ziti/controller/specs/swagger.yml
T
2024-01-19 17:33:21 -05:00

1992 lines
52 KiB
YAML

---
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
#######################################################################################################################
#
# 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'
'/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'
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'
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'
'/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'
'/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'
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'
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'
'/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'
'/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'
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'
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'
###################################################################
# 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'
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'
###################################################################
# 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'
###################################################################
# 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.
security:
- ztSession: [ ]
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.
security:
- ztSession: [ ]
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.
security:
- ztSession: [ ]
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.
security:
- ztSession: [ ]
tags:
- Database
operationId: dataIntegrityResults
responses:
'200':
$ref: '#/responses/dataIntegrityCheckResult'
'401':
$ref: '#/responses/unauthorizedResponse'
'429':
$ref: '#/responses/rateLimitedResponse'
###################################################################
# Raft
##################################################################
'/raft/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:
- Raft
operationId: raftListMembers
responses:
'200':
$ref: '#/responses/raftListMembersResponse'
'400':
$ref: '#/responses/badRequestResponse'
'401':
$ref: '#/responses/unauthorizedResponse'
'429':
$ref: '#/responses/rateLimitedResponse'
'/raft/add-member':
post:
summary: Add a member to the raft cluster
description: Add a member to the raft cluster. Requires admin access.
tags:
- Raft
operationId: raftMemberAdd
parameters:
- name: member
in: body
required: true
description: member parameters
schema:
$ref: '#/definitions/raftMemberAdd'
responses:
'200':
$ref: '#/responses/emptyResponse'
'400':
$ref: '#/responses/badRequestResponse'
'401':
$ref: '#/responses/unauthorizedResponse'
'429':
$ref: '#/responses/rateLimitedResponse'
'/raft/remove-member':
post:
summary: Remove a member from the raft cluster
description: Remove a member from the raft cluster. Requires admin access.
tags:
- Raft
operationId: raftMemberRemove
parameters:
- name: member
in: body
required: true
description: member parameters
schema:
$ref: '#/definitions/raftMemberRemove'
responses:
'200':
$ref: '#/responses/emptyResponse'
'400':
$ref: '#/responses/badRequestResponse'
'401':
$ref: '#/responses/unauthorizedResponse'
'404':
$ref: '#/responses/notFoundResponse'
'429':
$ref: '#/responses/rateLimitedResponse'
'/raft/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:
- Raft
operationId: raftTranferLeadership
parameters:
- name: member
in: body
required: true
description: transfer operation parameters
schema:
$ref: '#/definitions/raftTransferLeadership'
responses:
'200':
$ref: '#/responses/emptyResponse'
'401':
$ref: '#/responses/unauthorizedResponse'
'404':
$ref: '#/responses/notFoundResponse'
'429':
$ref: '#/responses/rateLimitedResponse'
'500':
$ref: '#/responses/badRequestResponse'
#######################################################################################################################
#
# 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'
###################################################################
# 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'
###################################################################
# Raft
##################################################################
raftListMembersResponse:
description: A response to a raft list-members request
schema:
$ref: '#/definitions/raftMemberListResponse'
#######################################################################################################################
#
# 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
raftMemberAdd:
type: object
required:
- address
- isVoter
properties:
address:
type: string
isVoter:
type: boolean
raftMemberRemove:
type: object
required:
- id
properties:
id:
type: string
raftTransferLeadership:
type: object
properties:
newLeaderId:
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
properties:
name:
type: string
terminatorStrategy:
type: string
serviceCreate:
type: object
required:
- name
properties:
name:
type: string
terminatorStrategy:
type: string
tags:
$ref: '#/definitions/tags'
serviceUpdate:
type: object
required:
- name
properties:
name:
type: string
terminatorStrategy:
type: string
tags:
$ref: '#/definitions/tags'
servicePatch:
type: object
properties:
name:
type: string
terminatorStrategy:
type: string
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'
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
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
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
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'
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
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'
###################################################################
# Raft
##################################################################
raftMemberListRequest:
type: object
raftMemberListValue:
type: object
required:
- id
- address
- voter
- leader
- version
- connected
properties:
id:
type: string
address:
type: string
voter:
type: boolean
leader:
type: boolean
version:
type: string
connected:
type: boolean
raftMemberListResponse:
type: object
properties:
values:
type: array
items:
$ref: '#/definitions/raftMemberListValue'