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 Services 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: - description: 'Service entities are abstractions of your microservice interfaces or formal APIs. For example, a service could be a data transformation microservice or a billing API.

The main attribute of a service is the destination URL for proxying traffic. This URL can be set as a single string or by specifying its protocol, host, port and path individually.

Services are associated to routes, and a single service can have many routes associated with it. Routes are entrypoints in Kong Gateway which define rules to match client requests. Once a route is matched, Kong Gateway proxies the request to its associated service. See the [Route documentation](https://developer.konghq.com/gateway/entities/route/) for a detailed explanation of how Kong proxies traffic.

Services can be both [tagged and filtered by tags](https://developer.konghq.com/admin-api/). ' name: Services paths: /{workspace}/services: post: x-speakeasy-entity-operation: terraform-datasource: null terraform-resource: Service#create operationId: create-service summary: Create a new Service description: Create a new Service parameters: - $ref: '#/components/parameters/Workspace' requestBody: description: Description of the new Service for creation required: true content: application/json: schema: $ref: '#/components/schemas/Service' responses: '201': description: Successfully created Service content: application/json: schema: $ref: '#/components/schemas/Service' '401': $ref: '#/components/responses/HTTP401Error' tags: - Services /{workspace}/services/{ServiceIdOrName}: parameters: - $ref: '#/components/parameters/ServiceIdOrName' delete: x-speakeasy-entity-operation: terraform-datasource: null terraform-resource: Service#delete operationId: delete-service summary: Delete a Service description: Delete a Service parameters: - $ref: '#/components/parameters/ServiceIdOrName' - $ref: '#/components/parameters/Workspace' responses: '204': description: Successfully deleted Service or the resource didn't exist '401': $ref: '#/components/responses/HTTP401Error' tags: - Services get: x-speakeasy-entity-operation: terraform-datasource: null terraform-resource: Service#read operationId: get-service summary: Get a Service description: Get a Service using ID or name. parameters: - $ref: '#/components/parameters/Workspace' responses: '200': description: Successfully fetched Service content: application/json: schema: $ref: '#/components/schemas/Service' '401': $ref: '#/components/responses/HTTP401Error' '404': description: Resource does not exist tags: - Services put: x-speakeasy-entity-operation: terraform-datasource: null terraform-resource: Service#update operationId: upsert-service summary: Upsert a Service description: Create or Update Service using ID or name. parameters: - $ref: '#/components/parameters/Workspace' requestBody: description: Description of the Service required: true content: application/json: schema: $ref: '#/components/schemas/Service' responses: '200': description: Successfully upserted Service content: application/json: schema: $ref: '#/components/schemas/Service' '401': $ref: '#/components/responses/HTTP401Error' tags: - Services /v2/control-planes/{controlPlaneId}/core-entities/services: parameters: - $ref: '#/components/parameters/controlPlaneId' get: operationId: list-service summary: List all Services description: List all Services parameters: - $ref: '#/components/parameters/PaginationSize' - $ref: '#/components/parameters/PaginationOffset' - $ref: '#/components/parameters/PaginationTagsFilter' - $ref: '#/components/parameters/NameContainsFilter' - $ref: '#/components/parameters/NameEqualsFilter' responses: '200': description: A successful response listing Services content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Service_2' next: $ref: '#/components/schemas/PaginationNextResponse' offset: $ref: '#/components/schemas/PaginationOffsetResponse' '401': $ref: '#/components/responses/HTTP401Error_2' tags: - Services post: operationId: create-service summary: Create a new Service description: Create a new Service requestBody: description: Description of the new Service for creation required: true content: application/json: schema: $ref: '#/components/schemas/Service_2' responses: '201': description: Successfully created Service content: application/json: schema: $ref: '#/components/schemas/Service_2' '401': $ref: '#/components/responses/HTTP401Error_2' tags: - Services /v2/control-planes/{controlPlaneId}/core-entities/services/{ServiceId}: parameters: - $ref: '#/components/parameters/ServiceId' - $ref: '#/components/parameters/controlPlaneId' delete: operationId: delete-service summary: Delete a Service description: Delete a Service parameters: - $ref: '#/components/parameters/ServiceId' responses: '204': description: Successfully deleted Service or the resource didn't exist '401': $ref: '#/components/responses/HTTP401Error_2' tags: - Services get: operationId: get-service summary: Get a Service description: Get a Service using ID or name. responses: '200': description: Successfully fetched Service content: application/json: schema: $ref: '#/components/schemas/Service_2' '401': $ref: '#/components/responses/HTTP401Error_2' '404': description: Resource does not exist tags: - Services put: operationId: upsert-service summary: Upsert a Service description: Create or Update Service using ID or name. requestBody: description: Description of the Service required: true content: application/json: schema: $ref: '#/components/schemas/Service_2' responses: '200': description: Successfully upserted Service content: application/json: schema: $ref: '#/components/schemas/Service_2' '401': $ref: '#/components/responses/HTTP401Error_2' tags: - Services components: schemas: Service_2: description: Service entities, as the name implies, are abstractions of each of your own upstream services. Examples of Services would be a data transformation microservice, a billing API, etc. The main attribute of a Service is its URL (where Kong should proxy traffic to), which can be set as a single string or by specifying its `protocol`, `host`, `port` and `path` individually. Services are associated to Routes (a Service can have many Routes associated with it). Routes are entry-points in Kong and define rules to match client requests. Once a Route is matched, Kong proxies the request to its associated Service. See the [Proxy Reference][proxy-reference] for a detailed explanation of how Kong proxies traffic. type: object properties: ca_certificates: description: Array of `CA Certificate` object UUIDs that are used to build the trust store while verifying upstream server's TLS certificate. If set to `null` when Nginx default is respected. If default CA list in Nginx are not specified and TLS verification is enabled, then handshake with upstream server will always fail (because no CA are trusted). type: array items: type: string nullable: true client_certificate: description: Certificate to be used as client certificate while TLS handshaking to the upstream server. type: object nullable: true properties: id: type: string x-foreign: true connect_timeout: description: The timeout in milliseconds for establishing a connection to the upstream server. type: integer default: 60000 maximum: 2147483646 minimum: 1 nullable: true created_at: description: Unix epoch when the resource was created. type: integer nullable: true enabled: description: 'Whether the Service is active. If set to `false`, the proxy behavior will be as if any routes attached to it do not exist (404). Default: `true`.' type: boolean default: true nullable: true host: description: The host of the upstream server. Note that the host value is case sensitive. type: string id: description: A string representing a UUID (universally unique identifier). type: string minLength: 1 nullable: true name: description: The Service name. type: string nullable: true path: description: The path to be used in requests to the upstream server. type: string nullable: true port: description: The upstream server port. type: integer default: 80 maximum: 65535 minimum: 0 nullable: true protocol: description: The protocol used to communicate with the upstream. type: string default: http enum: - grpc - grpcs - http - https - tcp - tls - tls_passthrough - udp - ws - wss nullable: true x-speakeasy-unknown-values: allow read_timeout: description: The timeout in milliseconds between two successive read operations for transmitting a request to the upstream server. type: integer default: 60000 maximum: 2147483646 minimum: 1 nullable: true retries: description: The number of retries to execute upon failure to proxy. type: integer default: 5 maximum: 32767 minimum: 0 nullable: true tags: description: An optional set of strings associated with the Service for grouping and filtering. type: array items: description: A string representing a tag. type: string nullable: true tls_sans: description: Additional Subject Alternative Names that can be matched on Upstream server's TLS certificate (in addition to `host`). type: object nullable: true properties: dnsnames: description: A dnsName for TLS verification. type: array items: description: A string representing an SNI (server name indication) value for TLS. type: string uris: description: An URI for TLS verification. type: array items: description: A string representing a URL, such as https://example.com/path/to/resource?q=search. type: string tls_verify: description: Whether to enable verification of upstream server TLS certificate. If set to `null`, then the Nginx default is respected. type: boolean nullable: true tls_verify_depth: description: Maximum depth of chain while verifying Upstream server's TLS certificate. If set to `null`, then the Nginx default is respected. type: integer maximum: 64 minimum: 0 nullable: true updated_at: description: Unix epoch when the resource was last updated. type: integer nullable: true url: description: Helper field to set `protocol`, `host`, `port` and `path` using a URL. This field is write-only and is not returned in responses. type: string writeOnly: true write_timeout: description: The timeout in milliseconds between two successive write operations for transmitting a request to the upstream server. type: integer default: 60000 maximum: 2147483646 minimum: 1 nullable: true example: host: example.internal id: 49fd316e-c457-481c-9fc7-8079153e4f3c name: example-service path: / port: 80 protocol: http additionalProperties: false required: - host PaginationOffsetResponse: description: Offset is used to paginate through the API. Provide this value to the next list operation to fetch the next page type: string GatewayUnauthorizedError: type: object properties: message: type: string status: type: integer required: - message - status Service: x-speakeasy-entity: Service description: Service entities, as the name implies, are abstractions of each of your own upstream services. Examples of Services would be a data transformation microservice, a billing API, etc. The main attribute of a Service is its URL (where Kong should proxy traffic to), which can be set as a single string or by specifying its `protocol`, `host`, `port` and `path` individually. Services are associated to Routes (a Service can have many Routes associated with it). Routes are entry-points in Kong and define rules to match client requests. Once a Route is matched, Kong proxies the request to its associated Service. See the [Proxy Reference][proxy-reference] for a detailed explanation of how Kong proxies traffic. type: object properties: ca_certificates: description: Array of `CA Certificate` object UUIDs that are used to build the trust store while verifying upstream server's TLS certificate. If set to `null` when Nginx default is respected. If default CA list in Nginx are not specified and TLS verification is enabled, then handshake with upstream server will always fail (because no CA are trusted). type: array items: type: string nullable: true client_certificate: description: Certificate to be used as client certificate while TLS handshaking to the upstream server. type: object nullable: true properties: id: type: string x-foreign: true connect_timeout: description: The timeout in milliseconds for establishing a connection to the upstream server. type: integer default: 60000 maximum: 2147483646 minimum: 1 nullable: true created_at: description: Unix epoch when the resource was created. type: integer nullable: true enabled: description: 'Whether the Service is active. If set to `false`, the proxy behavior will be as if any routes attached to it do not exist (404). Default: `true`.' type: boolean default: true nullable: true host: description: The host of the upstream server. Note that the host value is case sensitive. type: string id: description: A string representing a UUID (universally unique identifier). type: string minLength: 1 nullable: true name: description: The Service name. type: string nullable: true path: description: The path to be used in requests to the upstream server. type: string nullable: true port: description: The upstream server port. type: integer default: 80 maximum: 65535 minimum: 0 nullable: true protocol: description: The protocol used to communicate with the upstream. type: string default: http enum: - grpc - grpcs - http - https - tcp - tls - tls_passthrough - udp - ws - wss nullable: true read_timeout: description: The timeout in milliseconds between two successive read operations for transmitting a request to the upstream server. type: integer default: 60000 maximum: 2147483646 minimum: 1 nullable: true retries: description: The number of retries to execute upon failure to proxy. type: integer default: 5 maximum: 32767 minimum: 0 nullable: true tags: description: An optional set of strings associated with the Service for grouping and filtering. type: array items: description: A string representing a tag. type: string nullable: true tls_sans: description: Additional Subject Alternative Names that can be matched on Upstream server's TLS certificate (in addition to `host`). type: object nullable: true properties: dnsnames: description: A dnsName for TLS verification. type: array items: description: A string representing an SNI (server name indication) value for TLS. type: string uris: description: An URI for TLS verification. type: array items: description: A string representing a URL, such as https://example.com/path/to/resource?q=search. type: string tls_verify: description: Whether to enable verification of upstream server TLS certificate. If set to `null`, then the Nginx default is respected. type: boolean nullable: true tls_verify_depth: description: Maximum depth of chain while verifying Upstream server's TLS certificate. If set to `null`, then the Nginx default is respected. type: integer maximum: 64 minimum: 0 nullable: true updated_at: description: Unix epoch when the resource was last updated. type: integer nullable: true url: description: Helper field to set `protocol`, `host`, `port` and `path` using a URL. This field is write-only and is not returned in responses. type: string writeOnly: true write_timeout: description: The timeout in milliseconds between two successive write operations for transmitting a request to the upstream server. type: integer default: 60000 maximum: 2147483646 minimum: 1 nullable: true example: host: example.internal id: 49fd316e-c457-481c-9fc7-8079153e4f3c name: example-service path: / port: 80 protocol: http additionalProperties: false required: - host PaginationNextResponse: description: URI to the next page (may be null) type: string responses: HTTP401Error_2: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/GatewayUnauthorizedError' HTTP401Error: description: Unauthorized content: application/json: examples: DuplicateApiKey: summary: Duplicate API key found value: message: Duplicate API key found status: 401 InvalidAuthCred: summary: Invalid authentication credentials value: message: Unauthorized status: 401 NoAPIKey: summary: No API key found value: message: No API key found in request status: 401 schema: $ref: '#/components/schemas/GatewayUnauthorizedError' parameters: PaginationSize: description: Number of resources to be returned. in: query name: size schema: type: integer default: 100 maximum: 1000 minimum: 1 ServiceIdOrName: description: ID or name of the Service to lookup example: 7fca84d6-7d37-4a74-a7b0-93e576089a41 in: path name: ServiceIdOrName required: true schema: type: string x-speakeasy-match: id Workspace: description: The name of the workspace in: path name: workspace required: true schema: type: string example: team-payments default: default ServiceId: description: ID of the Service to lookup example: 7fca84d6-7d37-4a74-a7b0-93e576089a41 in: path name: ServiceId required: true schema: type: string NameContainsFilter: description: Filter routes by a substring of the name. example: john in: query name: filter[name][contains] schema: type: string PaginationOffset: allowEmptyValue: true description: Offset from which to return the next set of resources. Use the value of the 'offset' field from the response of a list operation as input here to paginate through all the resources in: query name: offset schema: type: string controlPlaneId: name: controlPlaneId in: path required: true schema: type: string format: uuid example: 9524ec7d-36d9-465d-a8c5-83a3c9390458 description: The UUID of your control plane. This variable is available in the Konnect manager. x-speakeasy-param-force-new: true NameEqualsFilter: description: Filter routes by their name. example: john in: query name: filter[name][eq] schema: type: string PaginationTagsFilter: allowEmptyValue: true description: A list of tags to filter the list of resources on. Multiple tags can be concatenated using ',' to mean AND or using '/' to mean OR. example: tag1,tag2 in: query name: tags schema: type: string securitySchemes: adminToken: in: header name: Kong-Admin-Token type: apiKey externalDocs: description: Documentation for Kong Gateway and its APIs url: https://developer.konghq.com