openapi: 3.0.0 info: description: Infra API license: name: Elastic License v2.0 url: https://www.elastic.co/licensing/elastic-license title: Infra Authentication Destinations API version: 0.0.0 servers: - url: https://api.infrahq.com tags: - name: Destinations paths: /api/destinations: get: description: ListDestinations operationId: ListDestinations parameters: - in: header name: Infra-Version required: true schema: description: Version of the API being requested example: 0.0.0 format: \d+\.\d+\(.\d+)?(-.\w(+\w)?)? type: string - in: header name: Authorization required: true schema: description: Bearer followed by your access key example: Bearer ACCESSKEY format: Bearer [\da-zA-Z]{10}\.[\da-zA-Z]{24} type: string - description: Name of the destination example: production-cluster in: query name: name schema: description: Name of the destination example: production-cluster type: string - description: Kind of destination. eg. kubernetes or ssh or postgres example: kubernetes in: query name: kind schema: description: Kind of destination. eg. kubernetes or ssh or postgres example: kubernetes type: string - description: Unique ID generated by the connector example: 94c2c570a20311180ec325fd56 in: query name: unique_id schema: description: Unique ID generated by the connector example: 94c2c570a20311180ec325fd56 type: string - description: Page number to retrieve example: '1' in: query name: page schema: description: Page number to retrieve example: '1' format: int minimum: 0 type: integer - description: Number of objects to retrieve per page (up to 1000) example: '100' in: query name: limit schema: description: Number of objects to retrieve per page (up to 1000) example: '100' format: int maximum: 1000 minimum: 0 type: integer responses: '400': content: application/json: schema: $ref: '#/components/schemas/Error' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Unauthorized: Requestor is not authenticated' '403': content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Forbidden: Requestor does not have the right permissions' '404': content: application/json: schema: $ref: '#/components/schemas/Error' description: Not Found '409': content: application/json: schema: $ref: '#/components/schemas/Error' description: Duplicate Record default: content: application/json: schema: $ref: '#/components/schemas/ListResponse_Destination' description: Success summary: ListDestinations tags: - Destinations post: description: CreateDestination operationId: CreateDestination parameters: - in: header name: Infra-Version required: true schema: description: Version of the API being requested example: 0.0.0 format: \d+\.\d+\(.\d+)?(-.\w(+\w)?)? type: string - in: header name: Authorization required: true schema: description: Bearer followed by your access key example: Bearer ACCESSKEY format: Bearer [\da-zA-Z]{10}\.[\da-zA-Z]{24} type: string requestBody: content: application/json: schema: properties: connection: description: Object that includes the URL and CA for the destination properties: ca: example: '-----BEGIN CERTIFICATE----- MIIDNTCCAh2gAwIBAgIRALRetnpcTo9O3V2fAK3ix+c -----END CERTIFICATE----- ' type: string url: example: aa60eexample.us-west-2.elb.amazonaws.com type: string required: - ca type: object kind: description: Kind of destination. eg. kubernetes or ssh or postgres enum: - kubernetes - ssh - '' example: kubernetes type: string name: description: Name of the destination example: production-cluster format: '[a-zA-Z0-9\-_]' maxLength: 256 minLength: 2 type: string resources: items: type: string type: array roles: items: type: string type: array uniqueID: description: Unique ID used to identify this specific destination example: 94c2c570a20311180ec325fd56 type: string version: description: Application version of the connector for this destination type: string required: - name type: object responses: '400': content: application/json: schema: $ref: '#/components/schemas/Error' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Unauthorized: Requestor is not authenticated' '403': content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Forbidden: Requestor does not have the right permissions' '404': content: application/json: schema: $ref: '#/components/schemas/Error' description: Not Found '409': content: application/json: schema: $ref: '#/components/schemas/Error' description: Duplicate Record default: content: application/json: schema: $ref: '#/components/schemas/Destination' description: Success summary: CreateDestination tags: - Destinations /api/destinations/{id}: delete: description: DeleteDestination operationId: DeleteDestination parameters: - in: header name: Infra-Version required: true schema: description: Version of the API being requested example: 0.0.0 format: \d+\.\d+\(.\d+)?(-.\w(+\w)?)? type: string - in: header name: Authorization required: true schema: description: Bearer followed by your access key example: Bearer ACCESSKEY format: Bearer [\da-zA-Z]{10}\.[\da-zA-Z]{24} type: string - in: path name: id required: true schema: example: 4yJ3n3D8E2 format: uid pattern: '[1-9a-km-zA-HJ-NP-Z]{1,11}' type: string responses: '400': content: application/json: schema: $ref: '#/components/schemas/Error' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Unauthorized: Requestor is not authenticated' '403': content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Forbidden: Requestor does not have the right permissions' '404': content: application/json: schema: $ref: '#/components/schemas/Error' description: Not Found '409': content: application/json: schema: $ref: '#/components/schemas/Error' description: Duplicate Record default: content: application/json: schema: $ref: '#/components/schemas/EmptyResponse' description: Success summary: DeleteDestination tags: - Destinations get: description: GetDestination operationId: GetDestination parameters: - in: header name: Infra-Version required: true schema: description: Version of the API being requested example: 0.0.0 format: \d+\.\d+\(.\d+)?(-.\w(+\w)?)? type: string - in: header name: Authorization required: true schema: description: Bearer followed by your access key example: Bearer ACCESSKEY format: Bearer [\da-zA-Z]{10}\.[\da-zA-Z]{24} type: string - in: path name: id required: true schema: example: 4yJ3n3D8E2 format: uid pattern: '[1-9a-km-zA-HJ-NP-Z]{1,11}' type: string responses: '400': content: application/json: schema: $ref: '#/components/schemas/Error' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Unauthorized: Requestor is not authenticated' '403': content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Forbidden: Requestor does not have the right permissions' '404': content: application/json: schema: $ref: '#/components/schemas/Error' description: Not Found '409': content: application/json: schema: $ref: '#/components/schemas/Error' description: Duplicate Record default: content: application/json: schema: $ref: '#/components/schemas/Destination' description: Success summary: GetDestination tags: - Destinations put: description: UpdateDestination operationId: UpdateDestination parameters: - in: header name: Infra-Version required: true schema: description: Version of the API being requested example: 0.0.0 format: \d+\.\d+\(.\d+)?(-.\w(+\w)?)? type: string - in: header name: Authorization required: true schema: description: Bearer followed by your access key example: Bearer ACCESSKEY format: Bearer [\da-zA-Z]{10}\.[\da-zA-Z]{24} type: string - description: ID of the destination example: 7a1b26b33F in: path name: id required: true schema: description: ID of the destination example: 7a1b26b33F format: uid pattern: '[1-9a-km-zA-HJ-NP-Z]{1,11}' type: string requestBody: content: application/json: schema: properties: connection: description: Object that includes the URL and CA for the destination properties: ca: example: '-----BEGIN CERTIFICATE----- MIIDNTCCAh2gAwIBAgIRALRetnpcTo9O3V2fAK3ix+c -----END CERTIFICATE----- ' type: string url: example: aa60eexample.us-west-2.elb.amazonaws.com type: string required: - ca type: object name: description: Name of the destination example: production-cluster format: '[a-zA-Z0-9\-_]' maxLength: 256 minLength: 2 type: string resources: items: type: string type: array roles: items: type: string type: array uniqueID: description: Unique ID generated by the connector example: 94c2c570a20311180ec325fd56 type: string version: description: Application version of the connector for this destination type: string required: - name type: object responses: '400': content: application/json: schema: $ref: '#/components/schemas/Error' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Unauthorized: Requestor is not authenticated' '403': content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Forbidden: Requestor does not have the right permissions' '404': content: application/json: schema: $ref: '#/components/schemas/Error' description: Not Found '409': content: application/json: schema: $ref: '#/components/schemas/Error' description: Duplicate Record default: content: application/json: schema: $ref: '#/components/schemas/Destination' description: Success summary: UpdateDestination tags: - Destinations /api/tokens: post: description: CreateToken operationId: CreateToken parameters: - in: header name: Infra-Version required: true schema: description: Version of the API being requested example: 0.0.0 format: \d+\.\d+\(.\d+)?(-.\w(+\w)?)? type: string - in: header name: Authorization required: true schema: description: Bearer followed by your access key example: Bearer ACCESSKEY format: Bearer [\da-zA-Z]{10}\.[\da-zA-Z]{24} type: string responses: '400': content: application/json: schema: $ref: '#/components/schemas/Error' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Unauthorized: Requestor is not authenticated' '403': content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Forbidden: Requestor does not have the right permissions' '404': content: application/json: schema: $ref: '#/components/schemas/Error' description: Not Found '409': content: application/json: schema: $ref: '#/components/schemas/Error' description: Duplicate Record default: content: application/json: schema: $ref: '#/components/schemas/CreateTokenResponse' description: Success summary: CreateToken tags: - Destinations components: schemas: ListResponse_Destination: properties: count: description: Total number of items on the current page example: '100' format: int type: integer items: items: properties: connected: description: Shows if the destination is currently connected example: 'true' type: boolean connection: description: Object that includes the URL and CA for the destination properties: ca: example: '-----BEGIN CERTIFICATE----- MIIDNTCCAh2gAwIBAgIRALRetnpcTo9O3V2fAK3ix+c -----END CERTIFICATE----- ' type: string url: example: aa60eexample.us-west-2.elb.amazonaws.com type: string required: - ca type: object created: description: Time destination was created example: '2022-11-10T23:35:22Z' format: date-time type: string id: description: ID of the destination example: 7a1b26b33F format: uid pattern: '[1-9a-km-zA-HJ-NP-Z]{1,11}' type: string kind: description: Kind of destination. eg. kubernetes or ssh or postgres example: kubernetes type: string lastSeen: description: formatted as an RFC3339 date-time example: '2022-03-14T09:48:00Z' format: date-time type: string name: description: Name of the destination example: production-cluster type: string resources: description: Destination specific. For Kubernetes, it is the list of namespaces example: '[''default'', ''kube-system'']' items: description: Destination specific. For Kubernetes, it is the list of namespaces example: '[''default'', ''kube-system'']' type: string type: array roles: description: Destination specific. For Kubernetes, it is the list of cluster roles available on that cluster example: '[''cluster-admin'', ''admin'', ''edit'', ''view'', ''exec'', ''logs'', ''port-forward'']' items: description: Destination specific. For Kubernetes, it is the list of cluster roles available on that cluster example: '[''cluster-admin'', ''admin'', ''edit'', ''view'', ''exec'', ''logs'', ''port-forward'']' type: string type: array uniqueID: description: Unique ID generated by the connector example: 94c2c570a20311180ec325fd56 type: string updated: description: Time destination was updated example: '2022-12-01T19:48:55Z' format: date-time type: string version: description: Application version of the connector for this destination type: string type: object type: array limit: description: Number of objects per page example: '100' format: int type: integer page: description: Page number retrieved example: '1' format: int type: integer totalCount: description: Total number of objects example: '485' format: int type: integer totalPages: description: Total number of pages example: '5' format: int type: integer Destination: properties: connected: description: Shows if the destination is currently connected example: 'true' type: boolean connection: description: Object that includes the URL and CA for the destination properties: ca: example: '-----BEGIN CERTIFICATE----- MIIDNTCCAh2gAwIBAgIRALRetnpcTo9O3V2fAK3ix+c -----END CERTIFICATE----- ' type: string url: example: aa60eexample.us-west-2.elb.amazonaws.com type: string required: - ca type: object created: description: Time destination was created example: '2022-11-10T23:35:22Z' format: date-time type: string id: description: ID of the destination example: 7a1b26b33F format: uid pattern: '[1-9a-km-zA-HJ-NP-Z]{1,11}' type: string kind: description: Kind of destination. eg. kubernetes or ssh or postgres example: kubernetes type: string lastSeen: description: formatted as an RFC3339 date-time example: '2022-03-14T09:48:00Z' format: date-time type: string name: description: Name of the destination example: production-cluster type: string resources: description: Destination specific. For Kubernetes, it is the list of namespaces example: '[''default'', ''kube-system'']' items: description: Destination specific. For Kubernetes, it is the list of namespaces example: '[''default'', ''kube-system'']' type: string type: array roles: description: Destination specific. For Kubernetes, it is the list of cluster roles available on that cluster example: '[''cluster-admin'', ''admin'', ''edit'', ''view'', ''exec'', ''logs'', ''port-forward'']' items: description: Destination specific. For Kubernetes, it is the list of cluster roles available on that cluster example: '[''cluster-admin'', ''admin'', ''edit'', ''view'', ''exec'', ''logs'', ''port-forward'']' type: string type: array uniqueID: description: Unique ID generated by the connector example: 94c2c570a20311180ec325fd56 type: string updated: description: Time destination was updated example: '2022-12-01T19:48:55Z' format: date-time type: string version: description: Application version of the connector for this destination type: string Error: properties: code: format: int32 type: integer fieldErrors: items: properties: errors: items: type: string type: array fieldName: type: string type: object type: array message: type: string EmptyResponse: {} CreateTokenResponse: properties: expires: description: formatted as an RFC3339 date-time example: '2022-03-14T09:48:00Z' format: date-time type: string token: type: string