openapi: 3.0.0 info: title: Konnect Control Planes version: 2.0.2 description: The API for Kong Konnect Control Planes. contact: name: Kong url: 'https://cloud.konghq.com' x-oas-source: kong/platform-api@f6932e30e5dd1b0d4e720438d3313ed35fb0dbba x-oas-source-link: 'https://github.com/Kong/platform-api/commit/f6932e30e5dd1b0d4e720438d3313ed35fb0dbba' servers: - url: 'https://us.api.konghq.com/v2' description: United-States Production region - url: 'https://eu.api.konghq.com/v2' description: Europe Production region - url: 'https://au.api.konghq.com/v2' description: Australia Production region - url: 'https://me.api.konghq.com/v2' description: Middle-East Production region - url: 'https://in.api.konghq.com/v2' description: India Production region - url: 'https://sg.api.konghq.com/v2' description: Singapore Production region paths: /control-planes: get: operationId: list-control-planes summary: List Control Planes description: Returns an array of control plane objects containing information about the Konnect Control Planes. parameters: - $ref: '#/components/parameters/PageSize' - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/ControlPlaneFilter' - $ref: '#/components/parameters/FilterByLabels' - $ref: '#/components/parameters/ControlPlaneSort' responses: '200': $ref: '#/components/responses/ListControlPlanesResponse' '400': $ref: '#/components/responses/ControlPlanesBadRequest' '401': $ref: '#/components/responses/ControlPlaneUnauthenticated' '403': $ref: '#/components/responses/ControlPlanePermissionDenied' '500': $ref: '#/components/responses/Internal' '503': $ref: '#/components/responses/ServiceUnavailable' tags: - Control Planes post: operationId: create-control-plane summary: Create Control Plane description: Create a control plane in the Konnect Organization. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateControlPlaneRequest' examples: Example Request Body: $ref: '#/components/examples/CreateControlPlaneRequestExample' responses: '201': $ref: '#/components/responses/CreateControlPlaneResponse' '400': $ref: '#/components/responses/ControlPlanesBadRequest' '401': $ref: '#/components/responses/ControlPlaneUnauthenticated' '403': $ref: '#/components/responses/ControlPlanePermissionDenied' '409': $ref: '#/components/responses/ControlPlaneConflict' '500': $ref: '#/components/responses/InternalServerError' '503': $ref: '#/components/responses/ServiceUnavailable' tags: - Control Planes '/control-planes/{controlPlaneId}': parameters: - name: controlPlaneId in: path description: The control plane ID required: true schema: type: string format: uuid example: d32d905a-ed33-46a3-a093-d8f536af9a8a get: operationId: get-control-plane summary: Get a Control Plane description: Returns information about an individual control plane. responses: '200': $ref: '#/components/responses/RetrieveControlPlaneResponse' '400': $ref: '#/components/responses/ControlPlanesBadRequest' '401': $ref: '#/components/responses/ControlPlaneUnauthenticated' '403': $ref: '#/components/responses/ControlPlanePermissionDenied' '404': $ref: '#/components/responses/ControlPlaneNotFound' '500': $ref: '#/components/responses/Internal' '503': $ref: '#/components/responses/ServiceUnavailable' tags: - Control Planes patch: operationId: update-control-plane summary: Update Control Plane description: Update an individual control plane. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateControlPlaneRequest' examples: Example Request Body: $ref: '#/components/examples/UpdateControlPlaneRequestExample' responses: '200': $ref: '#/components/responses/UpdateControlPlaneResponse' '400': $ref: '#/components/responses/ControlPlanesBadRequest' '401': $ref: '#/components/responses/ControlPlaneUnauthenticated' '403': $ref: '#/components/responses/ControlPlanePermissionDenied' '404': $ref: '#/components/responses/ControlPlaneNotFound' '500': $ref: '#/components/responses/InternalServerError' '503': $ref: '#/components/responses/ServiceUnavailable' tags: - Control Planes delete: operationId: delete-control-plane summary: Delete Control Plane description: Delete an individual control plane. responses: '204': description: No Content '400': $ref: '#/components/responses/ControlPlanesBadRequest' '401': $ref: '#/components/responses/ControlPlaneUnauthenticated' '403': $ref: '#/components/responses/ControlPlanePermissionDenied' '404': $ref: '#/components/responses/ControlPlaneNotFound' '500': $ref: '#/components/responses/InternalServerError' '503': $ref: '#/components/responses/ServiceUnavailable' tags: - Control Planes '/control-planes/{controlPlaneId}/group-memberships': parameters: - name: controlPlaneId in: path description: ID of a control plane group required: true schema: type: string get: operationId: get-control-planes-id-group-memberships summary: List Control Plane Group Memberships description: Returns an array of control planes that are a member of this control plane group. parameters: - $ref: '#/components/parameters/PageSize' - $ref: '#/components/parameters/PageAfter' responses: '200': $ref: '#/components/responses/ListGroupMemberships' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/Internal' '503': $ref: '#/components/responses/ServiceUnavailable' tags: - Control Plane Groups put: operationId: put-control-planes-id-group-memberships summary: Upsert Control Plane Group Members description: Adds one or more control planes as a member of a control plane group. requestBody: $ref: '#/components/requestBodies/GroupMembershipUpsert' responses: '204': description: No Content '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/Internal' '503': $ref: '#/components/responses/ServiceUnavailable' tags: - Control Plane Groups '/control-planes/{controlPlaneId}/group-memberships/add': parameters: - name: controlPlaneId in: path description: ID of a control plane group required: true schema: type: string post: operationId: post-control-planes-id-group-memberships-add summary: Add Control Plane Group Members description: Adds one or more control planes as a member of a control plane group. requestBody: $ref: '#/components/requestBodies/GroupMembershipAdd' responses: '204': description: No Content '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/Internal' '503': $ref: '#/components/responses/ServiceUnavailable' tags: - Control Plane Groups '/control-planes/{controlPlaneId}/group-memberships/remove': parameters: - name: controlPlaneId in: path description: ID of a control plane group required: true schema: type: string post: operationId: post-control-planes-id-group-memberships-remove summary: Remove Control Plane Group Members description: Removes one or more control planes from the members of a control plane group. requestBody: $ref: '#/components/requestBodies/GroupMembershipRemove' responses: '204': description: No Content '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/Internal' '503': $ref: '#/components/responses/ServiceUnavailable' tags: - Control Plane Groups '/control-planes/{controlPlaneId}/group-member-status': parameters: - name: controlPlaneId in: path description: ID of a control plane required: true schema: type: string get: operationId: get-control-planes-id-group-member-status summary: Get Control Plane Group Member Status description: Determines the group membership status of a control plane. responses: '200': $ref: '#/components/responses/GetGroupMemberStatus' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/Internal' '503': $ref: '#/components/responses/ServiceUnavailable' tags: - Control Plane Groups '/control-planes/{controlPlaneId}/group-status': parameters: - name: controlPlaneId in: path description: ID of a control plane group required: true schema: type: string get: operationId: get-control-planes-id-group-status summary: Get Control Plane Group Status description: 'Returns the status of a control plane group, including existing conflicts.' responses: '200': $ref: '#/components/responses/GetGroupStatus' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/Internal' '503': $ref: '#/components/responses/ServiceUnavailable' tags: - Control Plane Groups components: parameters: ControlPlaneFilter: name: filter description: Filters a collection of control-planes. required: false in: query schema: $ref: '#/components/schemas/ControlPlaneFilterParameters' style: deepObject ControlPlaneSort: name: sort description: | Sorts a collection of control-planes. Supported sort attributes are: - created_at required: false in: query schema: $ref: '#/components/schemas/SortQuery' FilterByLabels: name: labels description: Filter control planes in the response by associated labels. in: query required: false schema: type: string example: 'key:value,existCheck' PageAfter: name: 'page[after]' description: 'Request the next page of data, starting with the item after this parameter.' required: false in: query allowEmptyValue: true schema: type: string example: ewogICJpZCI6ICJoZWxsbyB3b3JsZCIKfQ PageNumber: name: 'page[number]' description: Determines which page of the entities to retrieve. required: false in: query allowEmptyValue: true schema: type: integer example: 1 PageSize: name: 'page[size]' description: The maximum number of items to include per page. The last page of a collection may include fewer items. required: false in: query allowEmptyValue: true schema: type: integer example: 10 schemas: GroupMembership: type: object properties: members: type: array items: type: object required: - id properties: id: type: string required: - members CreateControlPlaneRequest: description: The request schema for the create control plane request. type: object properties: name: description: The name of the control plane. type: string example: Test Control Plane maxLength: 256 minLength: 2 description: description: The description of the control plane in Konnect. type: string example: A test control plane for exploration. maxLength: 2048 nullable: false cluster_type: description: The ClusterType value of the cluster associated with the Control Plane. type: string example: CLUSTER_TYPE_CONTROL_PLANE enum: - CLUSTER_TYPE_CONTROL_PLANE - CLUSTER_TYPE_K8S_INGRESS_CONTROLLER - CLUSTER_TYPE_CONTROL_PLANE_GROUP - CLUSTER_TYPE_SERVERLESS - CLUSTER_TYPE_KAFKA_NATIVE_EVENT_PROXY - CLUSTER_TYPE_SERVERLESS_V1 auth_type: description: The auth type value of the cluster associated with the Runtime Group. type: string example: pinned_client_certs enum: - pinned_client_certs - pki_client_certs cloud_gateway: description: Whether this control-plane can be used for cloud-gateways. type: boolean example: false nullable: false proxy_urls: $ref: '#/components/schemas/ProxyURLs' labels: $ref: '#/components/schemas/Labels' additionalProperties: false required: - name title: CreateControlPlaneRequest UpdateControlPlaneRequest: description: The request schema for the update control plane request. type: object properties: name: description: The name of the control plane. type: string example: Test Control Plane maxLength: 256 minLength: 2 description: description: The description of the control plane in Konnect. type: string example: A test control plane for exploration. maxLength: 2048 nullable: false auth_type: description: The auth type value of the cluster associated with the Runtime Group. type: string example: pinned_client_certs enum: - pinned_client_certs - pki_client_certs proxy_urls: $ref: '#/components/schemas/ProxyURLs' labels: $ref: '#/components/schemas/Labels' additionalProperties: false title: UpdateControlPlaneRequest ControlPlane: description: The control plane object contains information about a Kong control plane. type: object properties: id: description: The control plane ID. type: string format: uuid example: 7f9fd312-a987-4628-b4c5-bb4f4fddd5f7 name: description: The name of the control plane. type: string example: Test Control Plane description: description: The description of the control plane in Konnect. type: string example: A test control plane for exploration. nullable: false labels: $ref: '#/components/schemas/Labels' config: description: CP configuration object for related access endpoints. type: object additionalProperties: false properties: control_plane_endpoint: description: Control Plane Endpoint. type: string format: url example: 'https://acfe5f253f.cp.konghq.com' telemetry_endpoint: description: Telemetry Endpoint. type: string format: url example: 'https://acfe5f253f.tp0.konghq.com' cluster_type: description: The ClusterType value of the cluster associated with the Control Plane. type: string example: CLUSTER_TYPE_CONTROL_PLANE enum: - CLUSTER_TYPE_CONTROL_PLANE - CLUSTER_TYPE_K8S_INGRESS_CONTROLLER - CLUSTER_TYPE_CONTROL_PLANE_GROUP - CLUSTER_TYPE_SERVERLESS - CLUSTER_TYPE_KAFKA_NATIVE_EVENT_PROXY - CLUSTER_TYPE_SERVERLESS_V1 auth_type: description: The auth type value of the cluster associated with the Runtime Group. type: string example: pinned_client_certs enum: - pinned_client_certs - pki_client_certs cloud_gateway: description: Whether the Control Plane can be used for cloud-gateways. type: boolean nullable: false proxy_urls: $ref: '#/components/schemas/ProxyURLs' required: - control_plane_endpoint - telemetry_endpoint - cluster_type - auth_type - cloud_gateway - proxy_urls created_at: description: An ISO-8604 timestamp representation of control plane creation date. type: string format: date-time example: '2022-11-04T20:10:06.927Z' updated_at: description: An ISO-8604 timestamp representation of control plane update date. type: string format: date-time example: '2022-11-04T20:10:06.927Z' additionalProperties: false required: - id - name - config - created_at - updated_at - description - labels x-examples: Example 1: id: 7f9fd312-a987-4628-b4c5-bb4f4fddd5f7 name: Test Control Plane description: A test control plane for exploration. labels: env: test config: control_plane_endpoint: 'https://acfe5f253f.cp.konghq.com' telemetry_endpoint: 'https://acfe5f253f.tp0.konghq.com' cluster_type: CLUSTER_TYPE_CONTROL_PLANE auth_type: pinned_client_certs cloud_gateway: false proxy_urls: - host: example.com port: 443 protocol: https created_at: '2022-11-04T20:10:06.927Z' updated_at: '2022-11-04T20:10:06.927Z' GroupStatus: description: The Group Status object contains information about the status of a control plane group. type: object properties: id: description: The control plane group ID. type: string format: uuid example: 7f9fd312-a987-4628-b4c5-bb4f4fddd5f7 readOnly: true created_at: description: An ISO-8604 timestamp representation of control plane group status creation date. type: string format: date-time example: '2022-11-04T20:10:06.927Z' readOnly: true updated_at: description: An ISO-8604 timestamp representation of control plane group status update date. type: string format: date-time example: '2022-11-04T20:10:06.927Z' readOnly: true conflicts: type: array items: $ref: '#/components/schemas/GroupConflict' maxItems: 256 state: description: The state of the control plane group. type: string example: CONFLICT enum: - OK - CONFLICT - UNKNOWN readOnly: true required: - id - created_at - updated_at - state title: GroupStatus GroupConflict: description: The Group Conflict object contains information about a conflict in a control plane group. type: object properties: cluster_id: description: The ID of a control plane member of a control plane group. type: string format: uuid example: 7f9fd312-a987-4628-b4c5-bb4f4fddd5f7 readOnly: true description: description: The description of the conflict. type: string example: 'conflicting entity found: ID=38d790ad-8b08-4ff5-a074-2e1e9e64d8bd, Name=foo' readOnly: true resource: $ref: '#/components/schemas/GroupConflictResource' required: - cluster_id - description - resource title: GroupConflict GroupConflictResource: description: A resource causing a conflict in a control plane group. type: object properties: id: description: The ID of the resource. type: string format: uuid example: 7f9fd312-a987-4628-b4c5-bb4f4fddd5f7 readOnly: true type: description: The type of the resource. type: string example: service readOnly: true required: - id - type title: GroupConflictResource GroupMemberStatus: description: Object with information determining the group membership status of a control plane. type: object properties: is_member: description: Boolean indicating if a control plane is a member of a control plane group. type: boolean example: true readOnly: true required: - is_member title: GroupMemberStatus Labels: description: 'Labels to facilitate tagged search on control planes. Keys must be of length 1-63 characters, and cannot start with ''kong'', ''konnect'', ''mesh'', ''kic'', or ''_''.' type: object example: env: test additionalProperties: type: string pattern: '^[a-z0-9A-Z]{1}([a-z0-9A-Z\-\.\_]*[a-z0-9A-Z]+)?$' minLength: 1 maxLength: 63 title: Labels ProxyURL: description: Proxy URL associated with reaching the data-planes connected to a control-plane. type: object properties: host: description: Hostname of the proxy URL. type: string maxLength: 120 minLength: 1 port: description: Port of the proxy URL. type: integer minimum: 1 protocol: description: Protocol of the proxy URL. type: string maxLength: 32 minLength: 1 example: host: example.com port: 443 protocol: https additionalProperties: false required: - host - port - protocol title: ProxyURL ProxyURLs: description: Array of proxy URLs associated with reaching the data-planes connected to a control-plane. type: array items: $ref: '#/components/schemas/ProxyURL' format: set example: - host: example.com port: 443 protocol: https maxItems: 5 title: ProxyURLs ControlPlaneFilterParameters: type: object properties: id: description: 'Filter using **one** of the following operators: `eq`, `oeq`' type: object additionalProperties: false properties: eq: description: The field exactly matches the provided value. type: string example: '?filter[field_name_here][eq]=foo' oeq: description: The field matches any of the provided values. type: string example: '?filter[field_name_here][oeq]=foo,bar' x-examples: example-1: oeq: 'some-value,some-other-value' example-2: eq: some-value name: description: 'Filter using **one** of the following operators: `eq`, `neq`, `contains`' type: object additionalProperties: false properties: eq: description: The field exactly matches the provided value. type: string example: '?filter[field_name_here][eq]=foo' contains: description: The field contains the provided value. type: string example: '?filter[field_name_here][contains]=foo' neq: description: The field does not match the provided value. type: string example: '?filter[field_name_here][neq]=bar' x-examples: example-1: contains: some-value neq: not-this-value example-2: eq: some-value cluster_type: description: 'Filter using **one** of the following operators: `eq`, `oeq`, `neq`' type: object additionalProperties: false properties: eq: description: The field exactly matches the provided value. type: string example: '?filter[field_name_here][eq]=foo' neq: description: The field does not match the provided value. type: string example: '?filter[field_name_here][neq]=bar' oeq: description: The field matches any of the provided values. type: string example: '?filter[field_name_here][oeq]=foo,bar' x-examples: example-1: neq: not-this-value oeq: 'some-value,some-other-value' example-2: eq: some-value cloud_gateway: $ref: '#/components/schemas/BooleanFieldFilter' additionalProperties: false title: ControlPlaneFilterParameters CursorPaginatedMetaWithSizeAndTotal: description: returns the pagination information type: object properties: page: $ref: '#/components/schemas/CursorMetaWithSizeAndTotal' required: - page title: CursorPaginatedMetaWithSizeAndTotal CursorMetaWithSizeAndTotal: type: object properties: next: description: URI to the next page type: string format: path nullable: true size: description: Requested page size type: number example: 10 total: description: Total number of objects in the collection; will only be present on the first page type: number example: 974 required: - size - next BooleanFieldFilter: description: Filter by a boolean value (true/false). type: boolean title: BooleanFieldFilter x-examples: example-1: true SortQuery: description: | The `asc` suffix is optional as the default sort order is ascending. The `desc` suffix is used to specify a descending order. Multiple sort attributes may be provided via a comma separated list. JSONPath notation may be used to specify a sub-attribute (eg: 'foo.bar desc'). type: string example: created_at desc title: SortQuery PageMeta: description: Contains pagination query parameters and the total number of objects returned. type: object properties: number: type: integer format: int32 example: 1 x-go-type: int32 size: type: integer format: int32 example: 10 x-go-type: int32 total: type: integer format: int32 example: 100 x-go-type: int32 required: - number - size - total PaginatedMeta: description: returns the pagination information type: object properties: page: $ref: '#/components/schemas/PageMeta' required: - page title: PaginatedMeta BaseError: description: standard error type: object properties: status: description: | The HTTP status code of the error. Useful when passing the response body to child properties in a frontend UI. Must be returned as an integer. type: integer readOnly: true title: description: | A short, human-readable summary of the problem. It should not change between occurences of a problem, except for localization. Should be provided as "Sentence case" for direct use in the UI. type: string readOnly: true type: description: The error type. type: string readOnly: true instance: description: | Used to return the correlation ID back to the user, in the format kong:trace:. This helps us find the relevant logs when a customer reports an issue. type: string readOnly: true detail: description: | A human readable explanation specific to this occurence of the problem. This field may contain request/entity data to help the user understand what went wrong. Enclose variable values in square brackets. Should be provided as "Sentence case" for direct use in the UI. type: string readOnly: true required: - status - title - instance - detail title: Error InvalidRules: description: invalid parameters rules type: string enum: - required - is_array - is_base64 - is_boolean - is_date_time - is_integer - is_null - is_number - is_object - is_string - is_uuid - is_fqdn - is_arn - unknown_property - missing_reference - is_label - matches_regex - invalid - is_supported_network_availability_zone_list - is_supported_network_cidr_block - is_supported_provider_region - type nullable: true readOnly: true InvalidParameterStandard: type: object properties: field: type: string example: name readOnly: true rule: $ref: '#/components/schemas/InvalidRules' source: type: string example: body reason: type: string example: is a required field readOnly: true additionalProperties: false required: - field - reason InvalidParameterMinimumLength: type: object properties: field: type: string example: name readOnly: true rule: description: invalid parameters rules type: string enum: - min_length - min_digits - min_lowercase - min_uppercase - min_symbols - min_items - min nullable: false readOnly: true minimum: type: integer example: 8 source: type: string example: body reason: type: string example: must have at least 8 characters readOnly: true additionalProperties: false required: - field - reason - rule - minimum InvalidParameterMaximumLength: type: object properties: field: type: string example: name readOnly: true rule: description: invalid parameters rules type: string enum: - max_length - max_items - max nullable: false readOnly: true maximum: type: integer example: 8 source: type: string example: body reason: type: string example: must not have more than 8 characters readOnly: true additionalProperties: false required: - field - reason - rule - maximum InvalidParameterChoiceItem: type: object properties: field: type: string example: name readOnly: true rule: description: invalid parameters rules type: string enum: - enum nullable: false readOnly: true reason: type: string example: is a required field readOnly: true choices: type: array items: {} minItems: 1 nullable: false readOnly: true uniqueItems: true source: type: string example: body additionalProperties: false required: - field - reason - rule - choices InvalidParameterDependentItem: type: object properties: field: type: string example: name readOnly: true rule: description: invalid parameters rules type: string enum: - dependent_fields nullable: true readOnly: true reason: type: string example: is a required field readOnly: true dependents: type: array items: {} nullable: true readOnly: true uniqueItems: true source: type: string example: body additionalProperties: false required: - field - rule - reason - dependents InvalidParameters: description: invalid parameters type: array items: oneOf: - $ref: '#/components/schemas/InvalidParameterStandard' - $ref: '#/components/schemas/InvalidParameterMinimumLength' - $ref: '#/components/schemas/InvalidParameterMaximumLength' - $ref: '#/components/schemas/InvalidParameterChoiceItem' - $ref: '#/components/schemas/InvalidParameterDependentItem' minItems: 1 nullable: false uniqueItems: true BadRequestError: allOf: - $ref: '#/components/schemas/BaseError' - type: object required: - invalid_parameters properties: invalid_parameters: $ref: '#/components/schemas/InvalidParameters' UnauthorizedError: allOf: - $ref: '#/components/schemas/BaseError' - type: object properties: status: example: 401 title: example: Unauthorized type: example: 'https://httpstatuses.com/401' instance: example: 'kong:trace:1234567890' detail: example: Invalid credentials ForbiddenError: allOf: - $ref: '#/components/schemas/BaseError' - type: object properties: status: example: 403 title: example: Forbidden type: example: 'https://httpstatuses.com/403' instance: example: 'kong:trace:1234567890' detail: example: Forbidden ConflictError: allOf: - $ref: '#/components/schemas/BaseError' - type: object properties: status: example: 409 title: example: Conflict type: example: 'https://httpstatuses.com/409' instance: example: 'kong:trace:1234567890' detail: example: Conflict NotFoundError: allOf: - $ref: '#/components/schemas/BaseError' - type: object properties: status: example: 404 title: example: Not Found type: example: 'https://httpstatuses.com/404' instance: example: 'kong:trace:1234567890' detail: example: Not found examples: 400RequestFormatInvalidExample: value: status: 400 title: Bad Request detail: Invalid request format instance: 'konnect:trace:3674017986744198214' invalid_parameters: - field: body reason: request format is invalid 400CannotBeBlankExample: value: status: 400 title: Bad Request detail: Request cannot be empty instance: 'konnect:trace:6644808935508571943' invalid_parameters: - field: name reason: cannot be blank 400InvalidIDFormatExample: value: status: 400 title: Bad Request detail: Request contains invalid ID format instance: 'konnect:trace:8988732526256293040' invalid_parameters: - field: id reason: invalid ID format 400UsageLimitsReachedExample: value: status: 400 title: Bad Request instance: 'konnect:trace:8988732526256293040' detail: Cannot create an additional control plane because usage limits have been reached. invalid_parameters: - field: object reason: usage limits reached 400UnknownPropertyExample: value: status: 400 title: Bad Request detail: Request contains unknown property instance: 'konnect:trace:8988732526256293040' invalid_parameters: - field: id reason: property id should not exist 401UnauthenticatedExample: value: status: 401 title: Unauthenticated instance: 'konnect:trace:952172606039454040' detail: A valid token is required 403PermissionDeniedExample: value: status: 403 title: Permission denied instance: 'konnect:trace:2822394689570210664' detail: Insufficient role-set to create control planes. 404NotFoundExample: value: status: 404 title: Not Found instance: 'konnect:trace:2287285207635123011' detail: The requested control plane was not found. 409ConflictExample: value: status: 409 title: Conflict instance: 'konnect:trace:2287285207635123011' detail: Control Plane with provided name already exists. 500InternalErrorExample: value: status: 500 title: Internal Server Error instance: 'konnect:trace:2287285207635123011' detail: Could not propagate control plane changes to control plane cluster service. 503PermissionReadFailureExample: value: status: 503 title: Service Unavailable instance: 'konnect:trace:2287285207635123011' detail: Could not retrieve permissions to check resource accessibility. CreateControlPlaneRequestExample: value: name: Test Control Plane description: A test control plane for exploration. cluster_type: CLUSTER_TYPE_K8S_INGRESS_CONTROLLER cloud_gateway: false proxy_urls: - host: example.com port: 443 protocol: https labels: env: test UpdateControlPlaneRequestExample: value: name: Test Control Plane description: A test control plane for exploration. proxy_urls: - host: example.com port: 443 protocol: https labels: env: development ControlPlaneExample: value: id: 7f9fd312-a987-4628-b4c5-bb4f4fddd5f7 name: Test Control Plane description: A test control plane for exploration. labels: env: test config: control_plane_endpoint: 'https://acfe5f253f.cp.konghq.com' telemetry_endpoint: 'https://acfe5f253f.tp0.konghq.com' cluster_type: CLUSTER_TYPE_CONTROL_PLANE auth_type: pinned_client_certs cloud_gateway: false proxy_urls: - host: example.com port: 443 protocol: https created_at: '2022-11-04T20:10:06.927Z' updated_at: '2022-11-04T20:10:06.927Z' GroupConflictStatusExample: value: item: id: 7f9fd312-a987-4628-b4c5-bb4f4fddd5f7 conflicts: - cluster_id: 57fdf779-7935-476f-ab2b-7fa1323b70e6 description: 'conflicting entity found: ID=df43b088-cace-4119-9e2a-d83e5fbb0c48, Name=svc1' resource: id: df43b088-cace-4119-9e2a-d83e5fbb0c48 type: service - cluster_id: 38ceea96-fe39-11ed-be56-0242ac120002 description: 'conflicting entity found: ID=15f3ab7d-7202-498a-95b4-334f783dbcdd, Name=svc1' resource: id: 15f3ab7d-7202-498a-95b4-334f783dbcdd type: service state: CONFLICT created_at: '2022-11-04T20:10:06.927Z' updated_at: '2022-11-04T20:10:06.927Z' GroupNoConflictStatusExample: value: item: id: 7f9fd312-a987-4628-b4c5-bb4f4fddd5f7 conflicts: - cluster_id: 57fdf779-7935-476f-ab2b-7fa1323b70e6 description: 'conflicting entity found: ID=df43b088-cace-4119-9e2a-d83e5fbb0c48, Name=svc1' resource: id: df43b088-cace-4119-9e2a-d83e5fbb0c48 type: service - cluster_id: 38ceea96-fe39-11ed-be56-0242ac120002 description: 'conflicting entity found: ID=15f3ab7d-7202-498a-95b4-334f783dbcdd, Name=svc1' resource: id: 15f3ab7d-7202-498a-95b4-334f783dbcdd type: service state: CONFLICT created_at: '2022-11-04T20:10:06.927Z' updated_at: '2022-11-04T20:10:06.927Z' ListGroupMembershipsExample: value: meta: page: total: 2 size: 100 next: '/control-planes/57fdf779-7935-476f-ab2b-7fa1323b70e6/group-memberships?q=son&page[after]=ewogICJpZCI6ICJoZWysbyB3b3JsZCIKgZ' data: - id: 774f2a35-509d-4b94-97e9-1ed49563bcb1 name: Group Member 1 description: Child RG labels: env: prod config: control_plane_endpoint: 'https://9e0353434a.us.cp.konghq.com' telemetry_endpoint: 'https://9e0353434a.us.tp0.konghq.com' cluster_type: CLUSTER_TYPE_CONTROL_PLANE auth_type: pinned_client_certs cloud_gateway: false proxy_urls: - host: example.com port: 443 protocol: https created_at: '2023-03-20T22:23:45.873Z' updated_at: '2023-03-30T16:17:55.073Z' - id: e4a1917c-bb26-4aa1-9a3e-50ee366f13db name: Group Member 2 description: Child RG labels: env: prod foo: bar config: control_plane_endpoint: 'https://05459046af.us.cp.konghq.com' telemetry_endpoint: 'https://05459046af.us.tp0.konghq.com' cluster_type: CLUSTER_TYPE_CONTROL_PLANE auth_type: pinned_client_certs cloud_gateway: false proxy_urls: - host: example.com port: 443 protocol: https created_at: '2023-03-23T22:25:30.907Z' updated_at: '2023-03-30T16:18:12.067Z' UnauthorizedExample: value: status: 401 title: Unauthorized instance: 'kong:trace:8347343766220159418' detail: Unauthorized ForbiddenExample: value: status: 403 title: Forbidden instance: 'kong:trace:2723154947768991354' detail: You do not have permission to perform this action NotFoundExample: value: status: 404 title: Not Found instance: 'kong:trace:6816496025408232265' detail: Not Found requestBodies: GroupMembershipAdd: content: application/json: schema: $ref: '#/components/schemas/GroupMembership' examples: Example 1: value: members: - id: 1beb9ad3-d21b-4090-b6e3-574784d1166d - id: 778a0474-687d-41af-8e51-a0488d790586 - id: fa85f8e8-2e5a-496e-b6d0-4e534eaab459 description: Request body for adding a list of child control planes to a control plane group membership. GroupMembershipRemove: content: application/json: schema: $ref: '#/components/schemas/GroupMembership' examples: Example 1: value: members: - id: 1beb9ad3-d21b-4090-b6e3-574784d1166d - id: 778a0474-687d-41af-8e51-a0488d790586 - id: fa85f8e8-2e5a-496e-b6d0-4e534eaab459 description: Request body for removing a list of child control planes from a control plane group membership. GroupMembershipUpsert: content: application/json: schema: $ref: '#/components/schemas/GroupMembership' examples: Example 1: value: members: - id: 1beb9ad3-d21b-4090-b6e3-574784d1166d - id: 778a0474-687d-41af-8e51-a0488d790586 - id: fa85f8e8-2e5a-496e-b6d0-4e534eaab459 description: Request body for upserting a list of child control planes to a control plane group membership. responses: RetrieveControlPlaneResponse: description: A response to retrieving a single control plane. content: application/json: schema: $ref: '#/components/schemas/ControlPlane' examples: Single control plane response: $ref: '#/components/examples/ControlPlaneExample' CreateControlPlaneResponse: description: A response to creating a control plane. content: application/json: schema: $ref: '#/components/schemas/ControlPlane' examples: Create Control Plane Response: $ref: '#/components/examples/ControlPlaneExample' UpdateControlPlaneResponse: description: A response to updating a control plane. content: application/json: schema: $ref: '#/components/schemas/ControlPlane' examples: Update Control Plane Response: $ref: '#/components/examples/ControlPlaneExample' ListControlPlanesResponse: description: A paginated list response for a collection of control planes. content: application/json: schema: type: object properties: meta: $ref: '#/components/schemas/PaginatedMeta' data: type: array items: $ref: '#/components/schemas/ControlPlane' additionalProperties: false required: - meta - data title: ListControlPlanesResponse ControlPlanesBadRequest: description: Bad Request content: application/problem+json: schema: $ref: '#/components/schemas/BadRequestError' examples: Request Format Invalid: $ref: '#/components/examples/400RequestFormatInvalidExample' Cannot Be Blank: $ref: '#/components/examples/400CannotBeBlankExample' Invalid ID Format: $ref: '#/components/examples/400InvalidIDFormatExample' Usage Limits Reached: $ref: '#/components/examples/400UsageLimitsReachedExample' Unknown Property: $ref: '#/components/examples/400UnknownPropertyExample' ControlPlanePermissionDenied: description: Permission denied content: application/problem+json: schema: $ref: '#/components/schemas/ForbiddenError' examples: Permission Denied: $ref: '#/components/examples/403PermissionDeniedExample' ControlPlaneUnauthenticated: description: Unauthenticated content: application/problem+json: schema: $ref: '#/components/schemas/UnauthorizedError' examples: Unauthorized: $ref: '#/components/examples/401UnauthenticatedExample' ControlPlaneNotFound: description: Not Found content: application/problem+json: schema: $ref: '#/components/schemas/NotFoundError' examples: Not Found: $ref: '#/components/examples/404NotFoundExample' ControlPlaneConflict: description: Conflict content: application/problem+json: schema: $ref: '#/components/schemas/ConflictError' examples: Conflict: $ref: '#/components/examples/409ConflictExample' InternalServerError: description: Internal Server Error content: application/problem+json: schema: description: The error response object. type: object properties: status: description: The HTTP status code. type: integer format: int32 example: 500 enum: - 500 x-go-type: int32 title: description: The error response code. type: string example: Internal Server Error instance: description: The Konnect traceback code type: string example: 'konnect:trace:2287285207635123011' detail: description: Details about the error. type: string example: Could not propagate control plane changes to control plane cluster service. required: - status - title - instance title: InternalServerError examples: Internal Server Error: $ref: '#/components/examples/500InternalErrorExample' ServiceUnavailable: description: Service Unavailable content: application/problem+json: schema: description: Error response for temporary service unavailability. type: object properties: status: description: The HTTP status code. type: integer format: int32 example: 503 enum: - 503 x-go-type: int32 title: description: The error response code. type: string example: Service Unavailable instance: description: The Konnect traceback code type: string example: 'konnect:trace:2287285207635123011' detail: description: Details about the error. type: string example: Could not retrieve permissions to check resource accessibility. required: - status - title - instance title: ServiceUnavailableError examples: Service Unavailable: $ref: '#/components/examples/503PermissionReadFailureExample' ListGroupMemberships: description: A paginated list response for a collection of control plane group memberships. content: application/json: schema: type: object properties: meta: $ref: '#/components/schemas/CursorPaginatedMetaWithSizeAndTotal' data: description: Array of control planes summary who are a child to this control plane group. type: array items: $ref: '#/components/schemas/ControlPlane' required: - meta - data examples: List Group Memberships Example: $ref: '#/components/examples/ListGroupMembershipsExample' GetGroupStatus: description: 'Status of a control plane group, including existing conflicts.' content: application/json: schema: type: object properties: item: $ref: '#/components/schemas/GroupStatus' examples: Group Conflict Status Example: $ref: '#/components/examples/GroupConflictStatusExample' Group No Conflict Status Example: $ref: '#/components/examples/GroupNoConflictStatusExample' GetGroupMemberStatus: description: Determines the group membership status of a control plane. content: application/json: schema: $ref: '#/components/schemas/GroupMemberStatus' Internal: description: Internal content: application/problem+json: schema: $ref: '#/components/schemas/BaseError' BadRequest: description: Bad Request content: application/problem+json: schema: $ref: '#/components/schemas/BadRequestError' Unauthorized: description: Unauthorized content: application/problem+json: schema: $ref: '#/components/schemas/UnauthorizedError' examples: UnauthorizedExample: $ref: '#/components/examples/UnauthorizedExample' Forbidden: description: Forbidden content: application/problem+json: schema: $ref: '#/components/schemas/ForbiddenError' examples: UnauthorizedExample: $ref: '#/components/examples/ForbiddenExample' NotFound: description: Not Found content: application/problem+json: schema: $ref: '#/components/schemas/NotFoundError' examples: NotFoundExample: $ref: '#/components/examples/NotFoundExample' securitySchemes: personalAccessToken: type: http scheme: bearer bearerFormat: Token description: | The personal access token is meant to be used as an alternative to basic-auth when accessing Konnect via APIs. You can generate a Personal Access Token (PAT) from the [personal access token page](https://cloud.konghq.com/global/account/tokens/) in the Konnect dashboard. The PAT token must be passed in the header of a request, for example: `curl -X GET 'https://global.api.konghq.com/v2/users/' --header 'Authorization: Bearer kpat_xgfT...'` systemAccountAccessToken: type: http scheme: bearer bearerFormat: Token description: | The system account access token is meant for automations and integrations that are not directly associated with a human identity. You can generate a system account Access Token by creating a system account and then obtaining a system account access token for that account. The access token must be passed in the header of a request, for example: `curl -X GET 'https://global.api.konghq.com/v2/users/' --header 'Authorization: Bearer spat_i2Ej...'` tags: - name: Control Planes - name: Control Plane Groups security: - personalAccessToken: [] - systemAccountAccessToken: []