RouteJson
Route entities define rules to match client requests. Each Route is associated with a Service, and a Service may have multiple Routes associated to it. Every request matching a given Route will be proxied to its associated Service. The combination of Routes and Services (and the separation of concerns between them) offers a powerful routing mechanism with which it is possible to define fine-grained entry-points in Kong leading to different upstream services of your infrastructure. You need at least one matching rule that applies to the protocol being matched by the Route.
Properties
| Name | Type | Description |
|---|---|---|
| created_at | integer | Unix epoch when the resource was created. |
| destinations | array | A list of IP destinations of incoming connections that match this Route when using stream routing. Each entry is an object with fields "ip" (optionally in CIDR range notation) and/or "port". |
| headers | object | One or more lists of values indexed by header name that will cause this Route to match if present in the request. The `Host` header cannot be used with this attribute: hosts should be specified using |
| hosts | array | A list of domain names that match this Route. Note that the hosts value is case sensitive. |
| https_redirect_status_code | integer | The status code Kong responds with when all properties of a Route match except the protocol i.e. if the protocol of the request is `HTTP` instead of `HTTPS`. `Location` header is injected by Kong if t |
| id | string | A string representing a UUID (universally unique identifier). |
| methods | array | A list of HTTP methods that match this Route. |
| name | string | The name of the Route. Route names must be unique, and they are case sensitive. For example, there can be two different Routes named "test" and "Test". |
| path_handling | string | Controls how the Service path, Route path and requested path are combined when sending a request to the upstream. See above for a detailed description of each behavior. |
| paths | array | A list of paths that match this Route. |
| preserve_host | boolean | When matching a Route via one of the `hosts` domain names, use the request `Host` header in the upstream request headers. If set to `false`, the upstream `Host` header will be that of the Service's `h |
| protocols | array | An array of the protocols this Route should allow. See the [Route Object](#route-object) section for a list of accepted protocols. When set to only `"https"`, HTTP requests are answered with an upgrad |
| regex_priority | integer | A number used to choose which route resolves a given request when several routes match it using regexes simultaneously. When two routes match the path and have the same `regex_priority`, the older one |
| request_buffering | boolean | Whether to enable request body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that receive data with chunked transfer encoding. |
| response_buffering | boolean | Whether to enable response body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that send data with chunked transfer encoding. |
| service | object | The Service this Route is associated to. This is where the Route proxies traffic to. |
| snis | array | A list of SNIs that match this Route when using stream routing. |
| sources | array | A list of IP sources of incoming connections that match this Route when using stream routing. Each entry is an object with fields "ip" (optionally in CIDR range notation) and/or "port". |
| strip_path | boolean | When matching a Route via one of the `paths`, strip the matching prefix from the upstream request URL. |
| tags | array | An optional set of strings associated with the Route for grouping and filtering. |
| updated_at | integer | Unix epoch when the resource was last updated. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "#/components/schemas/RouteJson",
"title": "RouteJson",
"x-speakeasy-entity": "Route",
"description": "Route entities define rules to match client requests. Each Route is associated with a Service, and a Service may have multiple Routes associated to it. Every request matching a given Route will be proxied to its associated Service. The combination of Routes and Services (and the separation of concerns between them) offers a powerful routing mechanism with which it is possible to define fine-grained entry-points in Kong leading to different upstream services of your infrastructure. You need at least one matching rule that applies to the protocol being matched by the Route.",
"type": "object",
"properties": {
"created_at": {
"description": "Unix epoch when the resource was created.",
"type": "integer",
"nullable": true
},
"destinations": {
"description": "A list of IP destinations of incoming connections that match this Route when using stream routing. Each entry is an object with fields \"ip\" (optionally in CIDR range notation) and/or \"port\".",
"type": "array",
"items": {
"properties": {
"ip": {
"description": "A string representing an IP address or CIDR block, such as 192.168.1.1 or 192.168.0.0/16.",
"type": "string"
},
"port": {
"description": "An integer representing a port number between 0 and 65535, inclusive.",
"type": "integer",
"maximum": 65535,
"minimum": 0
}
},
"type": "object"
},
"nullable": true
},
"headers": {
"description": "One or more lists of values indexed by header name that will cause this Route to match if present in the request. The `Host` header cannot be used with this attribute: hosts should be specified using the `hosts` attribute. When `headers` contains only one value and that value starts with the special prefix `~*`, the value is interpreted as a regular expression.",
"type": "object",
"additionalProperties": {
"items": {
"type": "string"
},
"type": "array"
},
"nullable": true
},
"hosts": {
"description": "A list of domain names that match this Route. Note that the hosts value is case sensitive.",
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"https_redirect_status_code": {
"description": "The status code Kong responds with when all properties of a Route match except the protocol i.e. if the protocol of the request is `HTTP` instead of `HTTPS`. `Location` header is injected by Kong if the field is set to 301, 302, 307 or 308. Note: This config applies only if the Route is configured to only accept the `https` protocol.",
"type": "integer",
"default": 426,
"enum": [
301,
302,
307,
308,
426
],
"nullable": true
},
"id": {
"description": "A string representing a UUID (universally unique identifier).",
"type": "string",
"nullable": true
},
"methods": {
"description": "A list of HTTP methods that match this Route.",
"type": "array",
"items": {
"description": "A string representing an HTTP method, such as GET, POST, PUT, or DELETE. The string must contain only uppercase letters.",
"type": "string"
},
"nullable": true
},
"name": {
"description": "The name of the Route. Route names must be unique, and they are case sensitive. For example, there can be two different Routes named \"test\" and \"Test\".",
"type": "string",
"nullable": true
},
"path_handling": {
"description": "Controls how the Service path, Route path and requested path are combined when sending a request to the upstream. See above for a detailed description of each behavior.",
"type": "string",
"default": "v0",
"enum": [
"v0",
"v1"
],
"nullable": true
},
"paths": {
"description": "A list of paths that match this Route.",
"type": "array",
"items": {
"description": "A string representing a router path. It must start with a forward slash ('/') for a fixed path, or the sequence '~/' for a regex path. It must not have empty segments.",
"type": "string"
},
"nullable": true
},
"preserve_host": {
"description": "When matching a Route via one of the `hosts` domain names, use the request `Host` header in the upstream request headers. If set to `false`, the upstream `Host` header will be that of the Service's `host`.",
"type": "boolean",
"default": false,
"nullable": true
},
"protocols": {
"description": "An array of the protocols this Route should allow. See the [Route Object](#route-object) section for a list of accepted protocols. When set to only `\"https\"`, HTTP requests are answered with an upgrade error. When set to only `\"http\"`, HTTPS requests are answered with an error.",
"type": "array",
"items": {
"description": "A string representing a protocol, such as HTTP or HTTPS.",
"enum": [
"grpc",
"grpcs",
"http",
"https",
"tcp",
"tls",
"tls_passthrough",
"udp",
"ws",
"wss"
],
"type": "string"
},
"default": [
"https"
],
"minLength": 1,
"nullable": true
},
"regex_priority": {
"description": "A number used to choose which route resolves a given request when several routes match it using regexes simultaneously. When two routes match the path and have the same `regex_priority`, the older one (lowest `created_at`) is used. Note that the priority for non-regex routes is different (longer non-regex routes are matched before shorter ones).",
"type": "integer",
"default": 0,
"nullable": true
},
"request_buffering": {
"description": "Whether to enable request body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that receive data with chunked transfer encoding.",
"type": "boolean",
"default": true,
"nullable": true
},
"response_buffering": {
"description": "Whether to enable response body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that send data with chunked transfer encoding.",
"type": "boolean",
"default": true,
"nullable": true
},
"service": {
"description": "The Service this Route is associated to. This is where the Route proxies traffic to.",
"type": "object",
"nullable": true,
"properties": {
"id": {
"type": "string"
}
},
"x-foreign": true
},
"snis": {
"description": "A list of SNIs that match this Route when using stream routing.",
"type": "array",
"items": {
"description": "A string representing a wildcard host name, such as *.example.com.",
"type": "string"
},
"nullable": true
},
"sources": {
"description": "A list of IP sources of incoming connections that match this Route when using stream routing. Each entry is an object with fields \"ip\" (optionally in CIDR range notation) and/or \"port\".",
"type": "array",
"items": {
"properties": {
"ip": {
"description": "A string representing an IP address or CIDR block, such as 192.168.1.1 or 192.168.0.0/16.",
"type": "string"
},
"port": {
"description": "An integer representing a port number between 0 and 65535, inclusive.",
"type": "integer",
"maximum": 65535,
"minimum": 0
}
},
"type": "object"
},
"nullable": true
},
"strip_path": {
"description": "When matching a Route via one of the `paths`, strip the matching prefix from the upstream request URL.",
"type": "boolean",
"default": true,
"nullable": true
},
"tags": {
"description": "An optional set of strings associated with the Route for grouping and filtering.",
"type": "array",
"items": {
"description": "A string representing a tag.",
"type": "string"
},
"nullable": true
},
"updated_at": {
"description": "Unix epoch when the resource was last updated.",
"type": "integer",
"nullable": true
}
},
"example": {
"hosts": [
"foo.example.com",
"foo.example.us"
],
"id": "56c4566c-14cc-4132-9011-4139fcbbe50a",
"name": "example-route",
"paths": [
"/v1",
"/v2"
],
"service": {
"id": "bd380f99-659d-415e-b0e7-72ea05df3218"
}
},
"additionalProperties": false
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/kong-routejson"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.