openapi: 3.1.0 info: contact: email: support@konghq.com name: Kong Inc url: https://konghq.com description: 'OpenAPI 3.0 spec for Kong Gateway''s Admin API. You can learn more about Kong Gateway at [developer.konghq.com](https://developer.konghq.com). Give Kong a star at the [Kong/kong](https://github.com/kong/kong) repository.' license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html title: Kong Enterprise Admin ACLs Control Planes API version: 3.14.0 servers: - description: Default Admin API URL url: '{protocol}://{hostname}:{port}{path}' variables: hostname: default: localhost description: Hostname for Kong's Admin API path: default: / description: Base path for Kong's Admin API port: default: '8001' description: Port for Kong's Admin API protocol: default: http description: Protocol for requests to Kong's Admin API enum: - http - https security: - adminToken: [] tags: - name: Control Planes paths: /v2/control-planes: get: x-speakeasy-entity-operation: terraform-resource: null terraform-datasource: - GatewayControlPlaneList#read 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 x-speakeasy-pagination: type: offsetLimit inputs: - name: page[number] in: parameters type: page - name: page[size] in: parameters type: limit outputs: results: $.data numPages: $.meta.page.total post: x-speakeasy-entity-operation: terraform-resource: GatewayControlPlane#create terraform-datasource: null 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' 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 /v2/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: x-speakeasy-entity-operation: terraform-resource: GatewayControlPlane#read terraform-datasource: null 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: x-speakeasy-entity-operation: terraform-resource: GatewayControlPlane#update terraform-datasource: null 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' 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: x-speakeasy-entity-operation: terraform-resource: GatewayControlPlane#delete terraform-datasource: null 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 components: schemas: 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 x-speakeasy-unknown-values: allow 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 ControlPlane: x-speakeasy-entity: GatewayControlPlane 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 readOnly: true x-speakeasy-param-suppress-computed-diff: true 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 readOnly: true telemetry_endpoint: description: Telemetry Endpoint. type: string format: url example: https://acfe5f253f.tp0.konghq.com readOnly: true 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 readOnly: true x-speakeasy-unknown-values: allow 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 readOnly: true x-speakeasy-unknown-values: allow cloud_gateway: description: Whether the Control Plane can be used for cloud-gateways. type: boolean nullable: false readOnly: true 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' readOnly: true x-speakeasy-terraform-ignore: true 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' readOnly: true x-speakeasy-terraform-ignore: true additionalProperties: false required: - id - name - config - created_at - updated_at - description - labels 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 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 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 x-speakeasy-unknown-values: allow 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 Labels: description: "Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. \n\nKeys must be of length 1-63 characters, and cannot start with \"kong\", \"konnect\", \"mesh\", \"kic\", or \"_\".\n" 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 maxProperties: 50 title: Labels 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 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 oeq: description: The field matches any of the provided values. type: string 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 contains: description: The field contains the provided value. type: string neq: description: The field does not match the provided value. type: string 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 neq: description: The field does not match the provided value. type: string oeq: description: The field matches any of the provided values. type: string cloud_gateway: $ref: '#/components/schemas/BooleanFieldFilter' additionalProperties: false title: ControlPlaneFilterParameters 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 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 description: description: The description of the control plane in Konnect. type: string example: A test control plane for exploration. 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 x-speakeasy-unknown-values: allow proxy_urls: $ref: '#/components/schemas/ProxyURLs' labels: $ref: '#/components/schemas/Labels' additionalProperties: false title: UpdateControlPlaneRequest PaginatedMeta: description: returns the pagination information type: object properties: page: $ref: '#/components/schemas/PageMeta' required: - page title: PaginatedMeta x-speakeasy-terraform-ignore: true 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 title: ProxyURLs BooleanFieldFilter: description: Filter by a boolean value (true/false). type: boolean title: BooleanFieldFilter 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 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 CreateControlPlaneRequest: x-speakeasy-entity: GatewayControlPlane 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 description: description: The description of the control plane in Konnect. type: string example: A test control plane for exploration. 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 x-speakeasy-unknown-values: allow 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 x-speakeasy-unknown-values: allow 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 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 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 x-speakeasy-unknown-values: allow 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' 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 PageMeta: description: Contains pagination query parameters and the total number of objects returned. type: object properties: number: type: number example: 1 x-speakeasy-terraform-ignore: true size: type: number example: 10 x-speakeasy-terraform-ignore: true total: type: number example: 100 x-speakeasy-terraform-ignore: true required: - number - size - total 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 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 port: description: Port of the proxy URL. type: integer protocol: description: Protocol of the proxy URL. type: string example: host: example.com port: 443 protocol: https additionalProperties: false required: - host - port - protocol title: ProxyURL responses: ControlPlaneNotFound: description: Not Found content: application/problem+json: schema: $ref: '#/components/schemas/NotFoundError' ControlPlanePermissionDenied: description: Permission denied content: application/problem+json: schema: $ref: '#/components/schemas/ForbiddenError' 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 ControlPlaneUnauthenticated: description: Unauthenticated content: application/problem+json: schema: $ref: '#/components/schemas/UnauthorizedError' UpdateControlPlaneResponse: description: A response to updating a control plane. content: application/json: schema: $ref: '#/components/schemas/ControlPlane' ControlPlaneConflict: description: Conflict content: application/problem+json: schema: $ref: '#/components/schemas/ConflictError' 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: x-speakeasy-entity: GatewayControlPlaneList type: array items: $ref: '#/components/schemas/ControlPlane' additionalProperties: false required: - meta - data title: ListControlPlanesResponse CreateControlPlaneResponse: description: A response to creating a control plane. content: application/json: schema: $ref: '#/components/schemas/ControlPlane' RetrieveControlPlaneResponse: description: A response to retrieving a single control plane. content: application/json: schema: $ref: '#/components/schemas/ControlPlane' Internal: description: Internal content: application/problem+json: schema: $ref: '#/components/schemas/BaseError' 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 ControlPlanesBadRequest: description: Bad Request content: application/problem+json: schema: $ref: '#/components/schemas/BadRequestError' parameters: ControlPlaneSort: name: sort description: "Sorts a collection of control-planes. Supported sort attributes are:\n - created_at\n" required: false in: query schema: $ref: '#/components/schemas/SortQuery' FilterByLabels: x-speakeasy-name-override: filter_labels name: labels description: Filter control planes in the response by associated labels. in: query required: false schema: type: string example: key:value,existCheck 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 x-speakeasy-terraform-ignore: true ControlPlaneFilter: name: filter description: Filters a collection of control-planes. required: false in: query schema: $ref: '#/components/schemas/ControlPlaneFilterParameters' style: deepObject PageNumber: name: page[number] description: Determines which page of the entities to retrieve. required: false in: query allowEmptyValue: true schema: type: integer example: 1 x-speakeasy-terraform-ignore: true securitySchemes: adminToken: in: header name: Kong-Admin-Token type: apiKey externalDocs: description: Documentation for Kong Gateway and its APIs url: https://developer.konghq.com