{"owner":"TykTechnologies","repo":"tyk","hasSpec":true,"specFile":"swagger.yml","branch":"HEAD","format":"yaml","version":"3.x (YAML)","title":"tyk API","description":"","endpoints":[],"spec":"openapi: 3.0.3\ninfo:\n  contact:\n    email: support@tyk.io\n    name: Tyk Technologies\n    url: https://tyk.io/contact\n  description: |+\n    <img src=\"https://tyk.io/docs/img/swagger_gateway_image.png\" width=\"963\" height=\"250\">\n    <img src=\"https://tyk.io/docs/img/swagger_gateway_direction_image.png\" width=\"946\" height=\"392\">\n    \n    The Tyk Gateway API is the primary means for integrating your application with the Tyk API Gateway system. This API is very small, and has no granular permissions system. It is intended to be used purely for internal automation and integration.\n\n    **Warning: Under no circumstances should outside parties be granted access to this API.**\n\n    The Tyk Gateway API is capable of:\n\n    * Managing session objects (key generation).\n    * Managing and listing policies.\n    * Managing and listing API Definitions (only when not using the Tyk Dashboard).\n    * Hot reloads / reloading a cluster configuration.\n    * OAuth client creation (only when not using the Tyk Dashboard).\n\n    In order to use the Gateway API, you'll need to set the **secret** parameter in your tyk.conf file.\n\n    The shared secret you set should then be sent along as a header with each Gateway API Request in order for it to be successful:\n\n    **x-tyk-authorization: <your-secret>***\n    <br/>\n\n    <b>The Tyk Gateway API is subsumed by the Tyk Dashboard API in Pro installations.</b>\n\n  license:\n    name: Mozilla Public License Version 2.0\n    url: https://github.com/TykTechnologies/tyk/blob/master/LICENSE.md\n  title: Tyk Gateway API\n  version: 5.14.0\nservers:\n- url: https://{tenant}\n  variables:\n    tenant:\n      default: localhost:8080\n      description: Your gateway host\nsecurity:\n- api_key: []\ntags:\n- description: |\n    **Note: Applies only to Tyk Gateway Community Edition** <br/>\n\n    API management is very simple using the Tyk Rest API: each update only affects the underlying file, and this endpoint will only work with disk based installations, not database-backed ones.<br/>\n\n    APIs that are added this way are flushed to to disk into the app_path folder using the format: *{api-id}.json*. Updating existing APIs that use a different naming convention will cause those APIs to be added, which could subsequently lead to a loading error and crash if they use the same listen_path. <br/>\n\n    These methods only work on a single API node. If updating a cluster, it is important to ensure that all nodes are updated before initiating a reload.<br/>\n  name: APIs\n- description: |+\n    **Note: Applies only to Tyk Gateway Community Edition** <br/>\n\n  name: Tyk OAS APIs\n- description: |\n    Manage MCP (Model Context Protocol) Proxies on Tyk Gateway. MCP Proxies are\n    defined as Tyk OAS documents that include MCP-specific configuration in the\n    Tyk Vendor Extension (`x-tyk-api-gateway`). All create/update requests are validated against\n    the MCP JSON schema; a Gateway reload is required for changes to take effect.\n  name: MCP Proxies\n- description: |\n    All keys that are used to access services via Tyk correspond to a session object that informs Tyk about the context of this particular token, like access rules and rate/quota allowance.\n  name: Keys\n- description: |\n    It is possible to force API quota and rate limit across all keys that belong to a specific organisation ID. Rate limiting at an organisation level is useful for creating tiered access levels and trial accounts.<br />\n\n    The Organisation rate limiting middleware works with both Quotas and Rate Limiters. In order to manage this functionality, a simple API has been put in place to manage these sessions. <br />\n\n    Although the Organisation session-limiter uses the same session object, all other security keys are optional as they are not used. <br />\n\n    <h3>Managing active status</h3> <br />\n\n    To disallow access to an entire group of keys without rate limiting the organisation, create a session object with the \"is_inactive\" key set to true. This will block access before any other middleware is executed. It is useful when managing subscriptions for an organisation group and access needs to be blocked because of non-payment. <br />\n  name: Organisation Quotas\n- description: |\n    Sometimes a cache might contain stale data, or it may just need to be cleared because of an invalid configuration. This call will purge all keys associated with a cache on an API-by-API basis.\n  name: Cache Invalidation\n- description: Use the endpoints under this tag to manage your certificates. You can\n    add, delete and list certificates using these endpoints.\n  name: Certs\n- description: |\n    Force restart of the Gateway or whole cluster.\n  name: Hot Reload\n- description: |\n    Check health status of the Tyk Gateway and loaded APIs.\n  name: Health Checking\n- description: |\n    A Tyk security policy incorporates several security options that can be applied to an API key. It acts as a template that can override individual sections of an API key (or identity) in Tyk.\n  name: Policies\n- description: |\n    Manage OAuth clients, and manage their tokens\n  name: OAuth\n- description: |\n    Tyk supports batch requests, so a client makes a single request to the API but gets a compound response object back.\n    \n    This is especially handy if clients have complex requests that have multiple synchronous dependencies and do not wish to have the entire request / response cycle running for each event.\n    \n    To enable batch request support, set the `enable_batch_request_support` value to `true`\n    \n    Batch requests that come into Tyk are *run through the whole Tyk machinery* and *use a relative path to prevent spamming*. This means that a batch request to Tyk for three resources with the same API key will have three requests applied to their session quota and request limiting could become active if they are being throttled.\n    \n    Tyk reconstructs the API request based on the data in the batch request. This is to ensure that Tyk is not being used to proxy requests to other hosts outside of the upstream API being accessed.\n    \n    Batch requests are created by POSTING to the `/{listen_path}/tyk/batch/` endpoint. These requests **do not require a valid key**, but their request list does.\n    \n    <h3>Sample Request</h3>\n    \n        ```{json}\n        {\n          \"requests\": [\n            {\n              \"method\": \"GET\",\n              \"headers\": {\n                \"x-tyk-test\": \"1\",\n                \"x-tyk-version\": \"1.2\",\n                \"authorization\": \"1dbc83b9c431649d7698faa9797e2900f\"\n              },\n              \"body\": \"\",\n              \"relative_url\": \"get\"\n          },\n          {\n            \"method\": \"GET\",\n            \"headers\": {\n              \"x-tyk-test\": \"2\",\n              \"x-tyk-version\": \"1.2\",\n              \"authorization\": \"1dbc83b9c431649d7698faa9797e2900f\"\n            },\n            \"body\": \"\",\n            \"relative_url\": \"get\"\n            }\n          ],\n          \"suppress_parallel_execution\": false\n        }\n        ```\n    \n    The response will be a structured reply that encapsulates the responses for each of the outbound requests. If `suppress_parallel_execution` is set to `true`, requests will be made synchronously. If set to `false` then they will run in parallel and the response order is not guaranteed.\n    \n    <h3>Sample Response</h3>\n    \n      ```\n      [\n        {\n          \"relative_url\": \"get\",\n          \"code\": 200,\n          \"headers\": {\n            \"Access-Control-Allow-Credentials\": [\n              \"true\"\n            ],\n            \"Access-Control-Allow-Origin\": [\n              \"*\"\n            ],\n            \"Content-Length\": [\n              \"497\"\n            ],\n            \"Content-Type\": [\n              \"application/json\"\n            ],\n            \"Date\": [\n              \"Wed, 12 Nov 2014 15:32:43 GMT\"\n            ],\n            \"Server\": [\n              \"gunicorn/18.0\"\n            ],\n            \"Via\": [\n              \"1.1 vegur\"\n            ]\n          },\n          \"body\": \"{\n        \"args\": {},\n        \"headers\": {\n          \"Accept-Encoding\": \"gzip\",\n          \"Authorization\": \"1dbc83b9c431649d7698faa9797e2900f\",\n          \"Connect-Time\": \"2\",\n          \"Connection\": \"close\",\n          \"Host\": \"httpbin.org\",\n          \"Total-Route-Time\": \"0\",\n          \"User-Agent\": \"Go 1.1 package http\",\n          \"Via\": \"1.1 vegur\",\n          \"X-Request-Id\": \"6a22499a-2776-4aa1-80c0-686581a8be4d\",\n          \"X-Tyk-Test\": \"2\",\n          \"X-Tyk-Version\": \"1.2\"\n        },\n        \"origin\": \"127.0.0.1, 62.232.114.250\",\n        \"url\": \"http://httpbin.org/get\"\n      }\"\n          },\n          {\n            \"relative_url\": \"get\",\n            \"code\": 200,\n            \"headers\": {\n              \"Access-Control-Allow-Credentials\": [\n                \"true\"\n              ],\n              \"Access-Control-Allow-Origin\": [\n                \"*\"\n              ],\n              \"Content-Length\": [\n                \"497\"\n              ],\n              \"Content-Type\": [\n                \"application/json\"\n              ],\n              \"Date\": [\n                \"Wed, 12 Nov 2014 15:32:43 GMT\"\n              ],\n              \"Server\": [\n                \"gunicorn/18.0\"\n              ],\n              \"Via\": [\n                \"1.1 vegur\"\n              ]\n            },\n            \"body\": \"{\n        \"args\": {},\n        \"headers\": {\n          \"Accept-Encoding\": \"gzip\",\n          \"Authorization\": \"1dbc83b9c431649d7698faa9797e2900f\",\n          \"Connect-Time\": \"7\",\n          \"Connection\": \"close\",\n          \"Host\": \"httpbin.org\",\n          \"Total-Route-Time\": \"0\",\n          \"User-Agent\": \"Go 1.1 package http\",\n          \"Via\": \"1.1 vegur\",\n          \"X-Request-Id\": \"1ab61f50-51ff-4828-a7e2-17240385a6d2\",\n          \"X-Tyk-Test\": \"1\",\n          \"X-Tyk-Version\": \"1.2\"\n        },\n        \"origin\": \"127.0.0.1, 62.232.114.250\",\n        \"url\": \"http://httpbin.org/get\"\n      }\"\n          }\n      ]\n      ```\n    With the body for each request string encoded in the `body` field.\n    \n    * `expire_analytics_after`: If you are running a busy API, you may want to ensure that your MongoDB database does not overflow with old data. Set the `expire_analytics_after` value to the number of seconds you would like the data to last for. Setting this flag to anything above `0` will set an `expireAt` field for each record that is written to the database.\n    \n    **Important:** Tyk will not create the expiry index for you. In order to implement data expiry for your analytics data, ensure that the index is created This is easily achieved using the [MongoDB command line interface](https://docs.mongodb.com/getting-started/shell/client/).\n    \n    * `dont_set_quota_on_create`: This setting defaults to `false`, but if set to `true`, when the API is used to edit, create or add keys, the quota cache in Redis will not be re-set. By default, all updates or creates to Keys that have Quotas set will re-set the quota (This has been the default behaviour since 1.0).\n    \n      This behaviour can be bypassed on a case-by-case basis by using the `suppress_reset` parameter when making a REST API request. This is the advised mode of operation as it allows for manual, granular control over key quotas and reset timings.\n    \n    * `cache_options`: This section enables you to configure the caching behaviour of Tyk and to enable or disable the caching middleware for your API.\n    \n    * `cache_options.enable_cache`: Set this value to `true` if the cache should be enabled for this endpoint, setting it to false will stop all caching behaviour.\n    \n    * `cache_options.cache_timeout`: The amount of time, in seconds, to keep cached objects, defaults to `60` seconds.\n    \n    * `cache_options.cache_all_safe_requests`: Set this to `true` if you want all *safe* requests (GET, HEAD, OPTIONS) to be cached. This is a blanket setting for APIs where caching is required but you don't want to set individual paths up in the definition.\n    \n    * `cache_options.enable_upstream_cache_control`: Set this to `true` if you want your application to control the cache options for Tyk (TTL and whether to cache or not). See [Caching](/docs/basic-config-and-security/reduce-latency/caching/) for more details.\n    \n    * `response_processors`: Response processors need to be specifically defined so they are loaded on API creation, otherwise the middleware will not fire. In order to have the two main response middleware components fire, the following configuration object should be supplied.\n    \n    ```{json}\n      \"response_processors\": [\n        {\n            \"name\": \"header_injector\",\n            \"options\": {\n                \"add_headers\": {\"name\": \"value\"},\n                \"remove_headers\": [\"name\"]\n            }\n        },\n        {\n          \"name\": \"response_body_transform\",\n          \"options\": {}\n        }\n      ]\n    ```\n    \n    The options for the `header_injector` are global, and will apply to all outbound requests.\n  name: \"Batch requests\"\npaths:\n  /hello:\n    get:\n      description: From v2.7.5 you can now rename the `/hello`  endpoint by using\n        the `health_check_endpoint_name` option.\n      operationId: hello\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                description: Tyk GW\n                details:\n                  redis:\n                    componentType: datastore\n                    status: pass\n                    time: \"2020-05-19T03:42:55+01:00\"\n                status: pass\n                version: v5.5.0-dev\n              schema:\n                $ref: '#/components/schemas/HealthCheckResponse'\n          description: Success.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"405\":\n          content:\n            application/json:\n              example:\n                message: Method Not Allowed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Method Not Allowed\n      summary: Check the health of the Tyk Gateway.\n      tags:\n      - Health Checking\n  /tyk/apis:\n    get:\n      description: List APIs from Tyk Gateway\n      operationId: listApis\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n              - api_id: b84fe1a04e5648927971c0557971565c\n                auth:\n                  auth_header_name: authorization\n                definition:\n                  key: version\n                  location: header\n                name: Tyk Test API\n                org_id: 664a14650619d40001f1f00f\n                proxy:\n                  listen_path: /tyk-api-test/\n                  strip_listen_path: true\n                  target_url: https://httpbin.org\n                use_oauth2: true\n                version_data:\n                  not_versioned: true\n                  versions:\n                    Default:\n                      name: Default\n              schema:\n                items:\n                  $ref: '#/components/schemas/APIDefinition'\n                type: array\n          description: List of API definitions.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n      summary: Get list of apis\n      tags:\n      - APIs\n    post:\n      description: Create API. A single Tyk node can have its API Definitions queried,\n        deleted and updated remotely. This functionality enables you to remotely update\n        your Tyk definitions without having to manage the files manually.\n      operationId: createApi\n      parameters:\n      - description: The base API which the new version will be linked to.\n        example: 663a4ed9b6be920001b191ae\n        in: query\n        name: base_api_id\n        required: false\n        schema:\n          type: string\n      - description: The version name of the base API while creating the first version.\n          This doesn't have to be sent for the next versions but if it is set, it\n          will override base API version name.\n        example: Default\n        in: query\n        name: base_api_version_name\n        required: false\n        schema:\n          type: string\n      - description: The version name of the created version.\n        example: v2\n        in: query\n        name: new_version_name\n        required: false\n        schema:\n          type: string\n      - description: If true, the new version is set as default version.\n        example: true\n        in: query\n        name: set_default\n        required: false\n        schema:\n          type: boolean\n      requestBody:\n        content:\n          application/json:\n            example:\n              api_id: b84fe1a04e5648927971c0557971565c\n              auth:\n                auth_header_name: authorization\n              definition:\n                key: version\n                location: header\n              name: Tyk Test API\n              org_id: 664a14650619d40001f1f00f\n              proxy:\n                listen_path: /tyk-api-test/\n                strip_listen_path: true\n                target_url: https://httpbin.org\n              use_oauth2: true\n              version_data:\n                not_versioned: true\n                versions:\n                  Default:\n                    name: Default\n            schema:\n              $ref: '#/components/schemas/APIDefinition'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: added\n                key: b84fe1a04e5648927971c0557971565c\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: API created.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Request malformed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: file object creation failed, write error\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Create an API\n      tags:\n      - APIs\n  /tyk/apis/{apiID}:\n    delete:\n      description: Deleting an API definition will remove the file from the file store,\n        the API definition will NOT be unloaded, a separate reload request will need\n        to be made to disable the API endpoint.\n      operationId: deleteApi\n      parameters:\n      - description: The API ID.\n        example: 1bd5c61b0e694082902cf15ddcc9e6a7\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: deleted\n                key: 1bd5c61b0e694082902cf15ddcc9e6a7\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: API deleted.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: API not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: API not found.\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Delete failed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Deleting an API definition with ID.\n      tags:\n      - APIs\n    get:\n      description: Get API definition from Tyk Gateway.\n      operationId: getApi\n      parameters:\n      - description: The API ID.\n        example: keyless\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                api_id: b84fe1a04e5648927971c0557971565c\n                auth:\n                  auth_header_name: authorization\n                definition:\n                  key: version\n                  location: header\n                name: Tyk Test API\n                org_id: 664a14650619d40001f1f00f\n                proxy:\n                  listen_path: /tyk-api-test/\n                  strip_listen_path: true\n                  target_url: https://httpbin.org\n                use_oauth2: true\n                version_data:\n                  not_versioned: true\n                  versions:\n                    Default:\n                      name: Default\n              schema:\n                $ref: '#/components/schemas/APIDefinition'\n          description: API definition.\n          headers:\n            x-tyk-base-api-id:\n              description: ID of the base API if the requested API is a version.\n              schema:\n                type: string\n              style: simple\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: API not found.\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: API not found.\n      summary: Get API definition with it's ID.\n      tags:\n      - APIs\n    put:\n      description: |-\n        Updating an API definition uses the same signature and object as a `POST`, however it will first ensure that the API ID that is being updated is the same as the one in the object being `PUT`.\n\n        Updating will completely replace the file descriptor and will not change an API Definition that has already been loaded, the hot-reload endpoint will need to be called to push the new definition to live.\n      operationId: updateApi\n      parameters:\n      - description: The API ID.\n        example: 1bd5c61b0e694082902cf15ddcc9e6a7\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      requestBody:\n        content:\n          application/json:\n            example:\n              api_id: b84fe1a04e5648927971c0557971565c\n              auth:\n                auth_header_name: authorization\n              definition:\n                key: version\n                location: header\n              name: Update the API name sample\n              org_id: 664a14650619d40001f1f00f\n              proxy:\n                listen_path: /update-listen-path\n                strip_listen_path: true\n                target_url: https://tyk.io/api\n              use_oauth2: true\n              version_data:\n                not_versioned: true\n                versions:\n                  Default:\n                    name: Default\n            schema:\n              $ref: '#/components/schemas/APIDefinition'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: modified\n                key: 1bd5c61b0e694082902cf15ddcc9e6a7\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: API updated.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Request malformed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: API not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: API not found.\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: File object creation failed, write error.\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Updating an API definition with its ID.\n      tags:\n      - APIs\n  /tyk/apis/{apiID}/versions:\n    get:\n      description: Listing versions of an API.\n      operationId: listApiVersions\n      parameters:\n      - description: The API ID.\n        example: keyless\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      - $ref: '#/components/parameters/SearchText'\n      - $ref: '#/components/parameters/AccessType'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                apis:\n                - expirationDate: \"\"\n                  id: keyless\n                  internal: false\n                  isDefaultVersion: false\n                  name: Tyk Test Keyless API\n                  versionName: \"\"\n                - expirationDate: \"\"\n                  id: 1f20d5d2731d47ac9c79fddf826eda00\n                  internal: false\n                  isDefaultVersion: true\n                  name: Version three Api\n                  versionName: v2\n                status: success\n              schema:\n                $ref: '#/components/schemas/VersionMetas'\n          description: API version metas.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: API not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: API not found.\n      summary: Listing versions of an API.\n      tags:\n      - APIs\n  /tyk/apis/oas:\n    get:\n      description: List all APIs in Tyk OAS API format, from Tyk Gateway.\n      operationId: listApisOAS\n      parameters:\n      - description: \"By default mode is empty which means it will return the Tyk\n          API OAS spec including the x-tyk-api-gateway part. \\n When mode=public,\n          the Tyk OAS API spec will exclude the x-tyk-api-gateway part in the response.\"\n        example: public\n        in: query\n        name: mode\n        required: false\n        schema:\n          enum:\n          - public\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              examples:\n                oasExampleList:\n                  $ref: '#/components/examples/oasExampleList'\n              schema:\n                items:\n                  allOf:\n                  - $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json\n                  - $ref: '#/components/schemas/TykVendorExtension'\n                type: array\n          description: List of API definitions in Tyk OAS format.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n      summary: List all APIs in Tyk OAS API format.\n      tags:\n      - Tyk OAS APIs\n    post:\n      description: Create an API with Tyk OAS API format on the Tyk Gateway.\n      operationId: createApiOAS\n      parameters:\n      - description: The base API which the new version will be linked to.\n        example: 663a4ed9b6be920001b191ae\n        in: query\n        name: base_api_id\n        required: false\n        schema:\n          type: string\n      - description: The version name of the base API while creating the first version.\n          This doesn't have to be sent for the next versions but if it is set, it\n          will override base API version name.\n        example: Default\n        in: query\n        name: base_api_version_name\n        required: false\n        schema:\n          type: string\n      - description: The version name of the created version.\n        example: v2\n        in: query\n        name: new_version_name\n        required: false\n        schema:\n          type: string\n      - description: If true, the new version is set as default version.\n        example: true\n        in: query\n        name: set_default\n        required: false\n        schema:\n          type: boolean\n      requestBody:\n        content:\n          application/json:\n            example:\n              components:\n                securitySchemes:\n                  bearerAuth:\n                    description: The API Access Credentials\n                    scheme: bearer\n                    type: http\n              info:\n                description: This is a sample OAS.\n                title: OAS Sample\n                version: 1.0.0\n              openapi: 3.0.3\n              paths:\n                /api/sample/users:\n                  get:\n                    operationId: getUsers\n                    responses:\n                      \"200\":\n                        content:\n                          application/json:\n                            schema:\n                              items:\n                                properties:\n                                  name:\n                                    type: string\n                                type: object\n                              type: array\n                        description: fetched users\n                    summary: Get users\n                    tags:\n                    - users\n              security:\n              - bearerAuth: []\n              servers:\n              - url: https://localhost:8080\n              x-tyk-api-gateway:\n                info:\n                  name: user\n                  state:\n                    active: true\n                server:\n                  listenPath:\n                    strip: true\n                    value: /user-test/\n                upstream:\n                  url: https://localhost:8080\n            schema:\n              allOf:\n              - $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json\n              - $ref: '#/components/schemas/TykVendorExtension'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: added\n                key: e30bee13ad4248c3b529a4c58bb7be4e\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: API created.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: the payload should contain x-tyk-api-gateway\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: file object creation failed, write error\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Create an API with Tyk OAS format.\n      tags:\n      - Tyk OAS APIs\n  /tyk/apis/oas/{apiID}:\n    delete:\n      description: Deleting an API definition will remove the file from the file store,\n        the API definition will not be unloaded, a separate reload request will need\n        to be made to disable the API endpoint.\n      operationId: deleteOASApi\n      parameters:\n      - description: The API ID.\n        example: 1bd5c61b0e694082902cf15ddcc9e6a7\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: deleted\n                key: 1bd5c61b0e694082902cf15ddcc9e6a7\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: API deleted\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Must specify an apiID to delete\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: API not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: API not found.\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Delete failed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Deleting a Tyk OAS API.\n      tags:\n      - Tyk OAS APIs\n    get:\n      description: Get Tyk OAS API definition using an API ID.\n      operationId: getOASApi\n      parameters:\n      - description: \"By default mode is empty which means it will return the Tyk\n          API OAS spec including the x-tyk-api-gateway part. \\n When mode=public,\n          the Tyk OAS API spec will exclude the x-tyk-api-gateway part in the response.\"\n        example: public\n        in: query\n        name: mode\n        required: false\n        schema:\n          enum:\n          - public\n          type: string\n      - description: ID of the API you want to fetch\n        example: 4c1c0d8fc885401053ddac4e39ef676b\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              examples:\n                oasExample:\n                  $ref: '#/components/examples/oasExample'\n              schema:\n                allOf:\n                - $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json\n                - $ref: '#/components/schemas/TykVendorExtension'\n          description: OK\n          headers:\n            x-tyk-base-api-id:\n              description: ID of the base API if the requested API is a version.\n              schema:\n                type: string\n              style: simple\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: the requested API definition is in Tyk classic format, please\n                  use old API endpoint\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: API not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: API not found.\n      summary: Get a Tyk OAS API definition.\n      tags:\n      - Tyk OAS APIs\n    patch:\n      description: |-\n        You can use this endpoint to update Tyk OAS part of the Tyk API definition.\n        This endpoint allows you to configure Tyk OAS extension based on query params provided(similar to import).\n      operationId: patchApiOAS\n      parameters:\n      - description: ID of the API you want to fetch.\n        example: 4c1c0d8fc885401053ddac4e39ef676b\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      - $ref: '#/components/parameters/UpstreamURL'\n      - $ref: '#/components/parameters/ListenPath'\n      - $ref: '#/components/parameters/CustomDomain'\n      - $ref: '#/components/parameters/AllowList'\n      - $ref: '#/components/parameters/ValidateRequest'\n      - $ref: '#/components/parameters/MockResponse'\n      - $ref: '#/components/parameters/Authentication'\n      requestBody:\n        content:\n          application/json:\n            example:\n              components:\n                securitySchemes:\n                  bearerAuth:\n                    description: The API Access Credentials\n                    scheme: bearer\n                    type: http\n              info:\n                description: This is a sample OAS.\n                title: OAS Sample\n                version: 1.0.0\n              openapi: 3.0.3\n              paths:\n                /api/sample/users:\n                  get:\n                    operationId: getUsers\n                    responses:\n                      \"200\":\n                        content:\n                          application/json:\n                            schema:\n                              items:\n                                properties:\n                                  name:\n                                    type: string\n                                type: object\n                              type: array\n                        description: fetched users\n                    summary: Get users\n                    tags:\n                    - users\n              security:\n              - bearerAuth: []\n              servers:\n              - url: https://localhost:8080\n              x-tyk-api-gateway:\n                info:\n                  name: user\n                  state:\n                    active: true\n                server:\n                  listenPath:\n                    strip: true\n                    value: /user-test/\n                upstream:\n                  url: https://localhost:8080\n            schema:\n              $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json\n      responses:\n        \"200\":\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: API patched.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Must specify an apiID to patch\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: API not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: API not found.\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: file object creation failed, write error\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Patch API in Tyk OAS format.\n      tags:\n      - Tyk OAS APIs\n    put:\n      description: |-\n        Updating an API definition uses the same signature an object as a `POST`, however it will first ensure that the API ID that is being updated is the same as the one in the object being `PUT`.\n\n\n              Updating will completely replace the file descriptor and will not change an API Definition that has already been loaded, the hot-reload endpoint will need to be called to push the new definition to live.\n      operationId: updateApiOAS\n      parameters:\n      - description: ID of the API you want to fetch\n        example: 4c1c0d8fc885401053ddac4e39ef676b\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      requestBody:\n        content:\n          application/json:\n            example:\n              components:\n                securitySchemes:\n                  bearerAuth:\n                    description: The API Access Credentials\n                    scheme: bearer\n                    type: http\n              info:\n                description: This is a sample OAS.\n                title: OAS Sample\n                version: 1.0.0\n              openapi: 3.0.3\n              paths:\n                /api/sample/users:\n                  get:\n                    operationId: getUsers\n                    responses:\n                      \"200\":\n                        content:\n                          application/json:\n                            schema:\n                              items:\n                                properties:\n                                  name:\n                                    type: string\n                                type: object\n                              type: array\n                        description: fetched users\n                    summary: Get users\n                    tags:\n                    - users\n              security:\n              - bearerAuth: []\n              servers:\n              - url: https://localhost:8080\n              x-tyk-api-gateway:\n                info:\n                  name: user\n                  state:\n                    active: true\n                server:\n                  listenPath:\n                    strip: true\n                    value: /user-test/\n                upstream:\n                  url: https://localhost:8080\n            schema:\n              allOf:\n              - $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json\n              - $ref: '#/components/schemas/TykVendorExtension'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: modified\n                key: e30bee13ad4248c3b529a4c58bb7be4e\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: API updated\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Request APIID does not match that in Definition! For Update\n                  operations these must match.\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: API not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: API not found\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: file object creation failed, write error\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Update a Tyk OAS API definition.\n      tags:\n      - Tyk OAS APIs\n  /tyk/apis/oas/{apiID}/export:\n    get:\n      description: Use the mode query parameter to specify if you want the x-tyk-api-gateway\n        stripped out.\n      operationId: downloadApiOASPublic\n      parameters:\n      - description: ID of the API you want to fetch.\n        example: 4c1c0d8fc885401053ddac4e39ef676b\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      - description: \"By default mode is empty which means it will return the Tyk\n          API OAS spec including the x-tyk-api-gateway part. \\n When mode=public,\n          the Tyk OAS API spec will exclude the x-tyk-api-gateway part in the response.\"\n        example: public\n        in: query\n        name: mode\n        required: false\n        schema:\n          enum:\n          - public\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/octet-stream:\n              schema:\n                format: binary\n                type: string\n          description: Exported API definition file\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: requesting API definition that is in Tyk classic format\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: API not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Not Found\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Unexpected error\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Download a Tyk OAS format API.\n      tags:\n      - Tyk OAS APIs\n  /tyk/apis/oas/{apiID}/versions:\n    get:\n      description: Listing versions of a Tyk OAS API.\n      operationId: listOASApiVersions\n      parameters:\n      - description: ID of the API you want to fetch.\n        example: 4c1c0d8fc885401053ddac4e39ef676b\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      - $ref: '#/components/parameters/SearchText'\n      - $ref: '#/components/parameters/AccessType'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                apis:\n                - expirationDate: \"\"\n                  id: keyless\n                  internal: false\n                  isDefaultVersion: false\n                  name: Tyk Test Keyless API\n                  versionName: \"\"\n                - expirationDate: \"\"\n                  id: 1f20d5d2731d47ac9c79fddf826eda00\n                  internal: false\n                  isDefaultVersion: true\n                  name: Version three Api\n                  versionName: v2\n                status: success\n              schema:\n                $ref: '#/components/schemas/VersionMetas'\n          description: API version metas.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: API not found.\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: API not found\n      summary: Listing versions of a Tyk OAS API.\n      tags:\n      - Tyk OAS APIs\n  /tyk/apis/oas/export:\n    get:\n      description: Download all Tyk OAS format APIs, from the Gateway.\n      operationId: downloadApisOASPublic\n      parameters:\n      - description: \"By default mode is empty which means it will return the Tyk\n          API OAS spec including the x-tyk-api-gateway part. \\n When mode=public,\n          the Tyk OAS API spec will exclude the x-tyk-api-gateway part in the response.\"\n        example: public\n        in: query\n        name: mode\n        required: false\n        schema:\n          enum:\n          - public\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/octet-stream:\n              schema:\n                format: binary\n                type: string\n          description: Get a list of Tyk OAS APIs definitions.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Unexpected error\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Download all Tyk OAS format APIs.\n      tags:\n      - Tyk OAS APIs\n  /tyk/apis/oas/import:\n    post:\n      description: |-\n        Import an Tyk OAS format API without x-tyk-gateway.\n         For use with an existing Tyk OAS API that you want to expose via your Tyk Gateway.\n      operationId: importOAS\n      parameters:\n      - $ref: '#/components/parameters/UpstreamURL'\n      - $ref: '#/components/parameters/ListenPath'\n      - $ref: '#/components/parameters/CustomDomain'\n      - $ref: '#/components/parameters/AllowList'\n      - $ref: '#/components/parameters/ValidateRequest'\n      - $ref: '#/components/parameters/MockResponse'\n      - $ref: '#/components/parameters/Authentication'\n      - description: The base API which the new version will be linked to.\n        example: 663a4ed9b6be920001b191ae\n        in: query\n        name: base_api_id\n        required: false\n        schema:\n          type: string\n      - description: The version name of the base API while creating the first version.\n          This doesn't have to be sent for the next versions but if it is set, it\n          will override base API version name.\n        example: Default\n        in: query\n        name: base_api_version_name\n        required: false\n        schema:\n          type: string\n      - description: The version name of the created version.\n        example: v2\n        in: query\n        name: new_version_name\n        required: false\n        schema:\n          type: string\n      - description: If true, the new version is set as default version.\n        example: true\n        in: query\n        name: set_default\n        required: false\n        schema:\n          type: boolean\n      requestBody:\n        content:\n          application/json:\n            example:\n              components:\n                securitySchemes:\n                  bearerAuth:\n                    description: The API Access Credentials\n                    scheme: bearer\n                    type: http\n              info:\n                description: This is a sample OAS.\n                title: OAS Sample\n                version: 1.0.0\n              openapi: 3.0.3\n              paths:\n                /api/sample/users:\n                  get:\n                    operationId: getUsers\n                    responses:\n                      \"200\":\n                        content:\n                          application/json:\n                            schema:\n                              items:\n                                properties:\n                                  name:\n                                    type: string\n                                type: object\n                              type: array\n                        description: fetched users\n                    summary: Get users\n                    tags:\n                    - users\n              security:\n              - bearerAuth: []\n              servers:\n              - url: https://localhost:8080\n            schema:\n              $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: added\n                key: e30bee13ad4248c3b529a4c58bb7be4e\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: API imported.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: the import payload should not contain x-tyk-api-gateway\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: file object creation failed, write error\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Import an API in Tyk OAS format.\n      tags:\n      - Tyk OAS APIs\n  /tyk/mcps:\n    get:\n      description: List all MCP Proxy definitions on this Tyk Gateway. Each entry\n        is a Tyk OAS document whose Tyk Vendor Extension extension marks it as an\n        MCP Proxy definition.\n      operationId: listMCPs\n      responses:\n        \"200\":\n          content:\n            application/json:\n              schema:\n                items:\n                  allOf:\n                  - $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json\n                  - $ref: '#/components/schemas/TykVendorExtension'\n                type: array\n          description: List of MCP Proxy definitions.\n        \"403\":\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n      summary: List MCP Proxy definitions.\n      tags:\n      - MCP Proxies\n    post:\n      description: |\n        Create an MCP Proxy definition from a Tyk OAS document. The payload must\n        contain the Tyk Vendor Extension (`x-tyk-api-gateway`) extension with MCP configuration and is\n        validated against the MCP JSON schema (`/tyk/schema?type=mcp`) before being\n        stored. The Gateway must be reloaded (`POST /tyk/reload`) for the new MCP\n        Proxy definition to take effect.\n\n        When `dryRun=true`, the definition is validated and returned without being\n        persisted, written to disk, versioned, or reloaded. When `expand=true` is\n        also supplied for an internal REST-as-MCP proxy target such as\n        `tyk://orders-rest/mcp`, the response includes the full derived\n        `x-tyk-mcp-server.primitives` catalogue with selected tools marked\n        `allow: true` and unselected tools marked `allow: false`. `expand=true`\n        has no effect for remote MCP proxy upstreams.\n      operationId: createMCP\n      parameters:\n      - description: Validate and render the MCP Proxy definition without persisting it.\n        in: query\n        name: dryRun\n        required: false\n        schema:\n          default: false\n          type: boolean\n      - description: Expand an internal REST-as-MCP proxy response with the full configurable tool catalogue.\n        in: query\n        name: expand\n        required: false\n        schema:\n          default: false\n          type: boolean\n      requestBody:\n        content:\n          application/json:\n            example:\n              openapi: 3.0.3\n              info: { title: MCP Proxy Sample, version: 1.0.0 }\n              paths: {}\n              components: {}\n              servers: [{ url: /mcp-sample/ }]\n              x-tyk-api-gateway:\n                info:\n                  name: mcp-sample\n                  state: { active: true }\n                server:\n                  listenPath: { strip: true, value: /mcp-sample/ }\n                  authentication:\n                    enabled: true\n                    securitySchemes:\n                      authToken: { enabled: true }\n                upstream:\n                  url: http://localhost:7878/mcp\n                middleware:\n                  global:\n                    contextVariables: { enabled: true }\n                    trafficLogs: { enabled: true }\n                  mcpTools: {}\n                  operations: {}\n            schema:\n              allOf:\n              - $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json\n              - $ref: '#/components/schemas/TykVendorExtension'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: added\n                key: e30bee13ad4248c3b529a4c58bb7be4e\n                status: ok\n              schema:\n                oneOf:\n                - $ref: '#/components/schemas/ApiModifyKeySuccess'\n                - allOf:\n                  - $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json\n                  - $ref: '#/components/schemas/TykVendorExtension'\n          description: MCP Proxy definition created, or validated dry-run OAS returned.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: the payload should contain x-tyk-api-gateway\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Validation failed (invalid OAS, missing `x-tyk-api-gateway`, or schema violation).\n        \"403\":\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n      summary: Create an MCP Proxy definition.\n      tags:\n      - MCP Proxies\n  /tyk/mcps/{apiID}:\n    parameters:\n    - description: The MCP Proxy definition ID.\n      in: path\n      name: apiID\n      required: true\n      schema:\n        type: string\n    get:\n      description: Retrieve a single MCP Proxy definition by its ID. When\n        `expand=true` is supplied for an internal REST-as-MCP proxy target, the\n        response includes the full derived `x-tyk-mcp-server.primitives`\n        catalogue with selected and unselected tools marked by `allow`. Normal\n        reads return the stored definition exactly. `expand=true` has no effect\n        for remote MCP proxy upstreams.\n      operationId: getMCP\n      parameters:\n      - description: Expand an internal REST-as-MCP proxy response with the full configurable tool catalogue.\n        in: query\n        name: expand\n        required: false\n        schema:\n          default: false\n          type: boolean\n      responses:\n        \"200\":\n          content:\n            application/json:\n              schema:\n                allOf:\n                - $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json\n                - $ref: '#/components/schemas/TykVendorExtension'\n          description: The MCP Proxy definition.\n        \"404\":\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: MCP Proxy definition not found.\n      summary: Get an MCP Proxy definition.\n      tags:\n      - MCP Proxies\n    put:\n      description: Update an existing MCP Proxy definition. Body is validated against\n        the MCP JSON schema. A Gateway reload is required for changes to take effect.\n      operationId: updateMCP\n      requestBody:\n        content:\n          application/json:\n            example:\n              openapi: 3.0.3\n              info: { title: MCP Proxy Sample, version: 1.0.0 }\n              paths: {}\n              components: {}\n              servers: [{ url: /mcp-sample/ }]\n              x-tyk-api-gateway:\n                info:\n                  name: mcp-sample\n                  state: { active: true }\n                server:\n                  listenPath: { strip: true, value: /mcp-sample/ }\n                  authentication:\n                    enabled: true\n                    securitySchemes:\n                      authToken: { enabled: true }\n                upstream:\n                  url: http://localhost:7878/mcp\n                middleware:\n                  global:\n                    contextVariables: { enabled: true }\n                    trafficLogs: { enabled: true }\n                  mcpTools: {}\n                  operations: {}\n            schema:\n              allOf:\n              - $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json\n              - $ref: '#/components/schemas/TykVendorExtension'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: modified\n                key: e30bee13ad4248c3b529a4c58bb7be4e\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: MCP Proxy definition updated.\n        \"400\":\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Validation failed.\n        \"404\":\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: MCP Proxy definition not found.\n      summary: Update an MCP Proxy definition.\n      tags:\n      - MCP Proxies\n    delete:\n      description: Delete an MCP Proxy definition. A Gateway reload is required to\n        unload the proxy from the running Gateway.\n      operationId: deleteMCP\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: deleted\n                key: e30bee13ad4248c3b529a4c58bb7be4e\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: MCP Proxy definition deleted.\n        \"404\":\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: MCP Proxy definition not found.\n        \"500\":\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Delete failed.\n      summary: Delete an MCP Proxy definition.\n      tags:\n      - MCP Proxies\n  /tyk/cache/{apiID}:\n    delete:\n      description: Invalidate cache for the given API.\n      operationId: invalidateCache\n      parameters:\n      - description: The API ID.\n        example: ae67bb862a3241a49117508e0f9ee839\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                message: cache invalidated\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Cache invalidated.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Cache invalidation failed.\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Invalidate cache.\n      tags:\n      - Cache Invalidation\n  /tyk/cache/jwks/{apiID}:\n    delete:\n      description: Invalidate JWK cache for the given API.\n      operationId: invalidateJWKCache\n      parameters:\n        - description: The API ID.\n          example: ae67bb862a3241a49117508e0f9ee839\n          in: path\n          name: apiID\n          required: true\n          schema:\n            type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                message: cache invalidated\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Cache invalidated.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n      summary: Invalidate cache for given API ID.\n      tags:\n        - JWK cache invalidation\n  /tyk/cache/jwks:\n    delete:\n      description: Invalidate JWK cache for all APIs.\n      operationId: invalidateJWKCacheForAllAPIs\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                message: cache invalidated\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Cache invalidated.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n      summary: Invalidate JWK cache for all APIs\n      tags:\n        - JWK cache invalidation\n  /tyk/certs:\n    get:\n      description: List all certificates in the Tyk Gateway.\n      operationId: listCerts\n      parameters:\n      - description: Organisation ID to list the certificates.\n        example: 5e9d9544a1dcd60001d0ed20\n        in: query\n        name: org_id\n        required: false\n        schema:\n          type: string\n      - description: Mode to list the certificate details.\n        example: detailed\n        in: query\n        name: mode\n        required: false\n        schema:\n          enum:\n          - detailed\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              examples:\n                certIdList:\n                  $ref: '#/components/examples/certIdList'\n                certificateBasicList:\n                  $ref: '#/components/examples/certificateBasicList'\n              schema:\n                oneOf:\n                - $ref: '#/components/schemas/APIAllCertificateBasics'\n                - $ref: '#/components/schemas/APIAllCertificates'\n          description: OK\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n      summary: List certificates.\n      tags:\n      - Certs\n    post:\n      description: Add a certificate to the Tyk Gateway.\n      operationId: addCert\n      parameters:\n      - description: Organisation ID to add the certificate to.\n        example: 5e9d9544a1dcd60001d0ed20\n        in: query\n        name: org_id\n        required: false\n        schema:\n          type: string\n      requestBody:\n        content:\n          text/plain:\n            schema:\n              type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                id: 5e9d9544a1dcd60001d0ed207c440d66ebb0a4629d21329808dce9091acf5f2fde328067a6e60e5347271d90\n                message: Certificate added\n                status: ok\n              schema:\n                $ref: '#/components/schemas/APICertificateStatusMessage'\n          description: New certificate added.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Certificate with  ID already exists.\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: When certificates you send already exist in the gateway.\n        \"405\":\n          content:\n            application/json:\n              example:\n                message: Malformed request body\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Malformed request body.\n      summary: Add a certificate.\n      tags:\n      - Certs\n  /tyk/certs/{certID}:\n    delete:\n      description: Delete certificate by ID.\n      operationId: deleteCerts\n      parameters:\n      - description: Certificate ID to be deleted.\n        example: 5e9d9544a1dcd60001d0ed20a6ab77653d5da938f452bb8cc9b55b0630a6743dabd8dc92bfb025abb09ce035\n        in: path\n        name: certID\n        required: true\n        schema:\n          type: string\n      - description: Organisation ID to delete the certificates from.\n        example: 5e9d9544a1dcd60001d0ed20\n        in: query\n        name: org_id\n        required: false\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                message: removed\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Deleted certificate.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n      summary: Delete certificate.\n      tags:\n      - Certs\n    get:\n      description: |-\n        Note that the certID path parameter can take a list of certIDs separated with commas (e.g /tyk/certs/certIDOne,certIDTwo).\n         If you send a single certID it will return a single CertificateMeta object otherwise if you send more than two certIDs is will return an array of certificateMeta objects.\n      operationId: listCertsWithIDs\n      parameters:\n      - description: Comma separated list of certificates to list.\n        example: e6ce2b49-3e31-44de-95a7-12f054724283,5e9d9544a1dcd60001d0ed20a6ab77653d5da938f452bb8cc9b55b0630a6743dabd8dc92bfb025abb09ce035\n        in: path\n        name: certID\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              examples:\n                certificateMetaExample:\n                  $ref: '#/components/examples/certificateMetaExample'\n                certificateMetaListExample:\n                  $ref: '#/components/examples/certificateMetaListExample'\n              schema:\n                oneOf:\n                - $ref: '#/components/schemas/CertsCertificateMeta'\n                - items:\n                    $ref: '#/components/schemas/CertsCertificateMeta'\n                  nullable: true\n                  type: array\n          description: OK\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: Certificate with given SHA256 fingerprint not found.\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Not Found\n      summary: Return one certificate or list multiple certificates in the Tyk Gateway\n        given a comma separated list of cert IDs.\n      tags:\n      - Certs\n  /tyk/debug:\n    post:\n      description: Used to test API definition by sending sample request and analysing\n        output of both response and logs.\n      operationId: debugApiDefinition\n      requestBody:\n        content:\n          application/json:\n            examples:\n              apiDefinition:\n                summary: Calling debug endpoint with classic API definition.\n                value:\n                  request:\n                    method: GET\n                    path: /update-listen-path\n                  spec:\n                    api_id: b84fe1a04e5648927971c0557971565c\n                    auth:\n                      auth_header_name: authorization\n                    definition:\n                      key: version\n                      location: header\n                    name: Tyk Test API\n                    org_id: 664a14650619d40001f1f00f\n                    proxy:\n                      listen_path: /tyk-api-test/\n                      strip_listen_path: true\n                      target_url: https://httpbin.org\n                    use_oauth2: true\n                    version_data:\n                      not_versioned: true\n                      versions:\n                        Default:\n                          name: Default\n              oasApiDefinition:\n                summary: Calling debug endpoint with Tyk OAS API definition.\n                value:\n                  request:\n                    method: GET\n                    path: /get\n                  oas:\n                      info:\n                        title: testdebug\n                        version: 1.0.0\n                      openapi: 3.0.3\n                      servers:\n                      - url: http://localhost:8181/testdebug/\n                      security: []\n                      paths: {}\n                      components:\n                        securitySchemes: {}\n                      x-tyk-api-gateway:\n                        info:\n                          dbId: 67a25ff65b60081c8731464f\n                          id: d37ea0e360c245cf406d640f1dbf788d\n                          orgId: 645b3db586341f751f4258aa\n                          name: testdebug\n                          state:\n                            active: true\n                            internal: false\n                        middleware:\n                          global:\n                            contextVariables:\n                              enabled: true\n                            trafficLogs:\n                              enabled: true\n                        server:\n                          listenPath:\n                            strip: true\n                            value: \"/testdebug/\"\n                        upstream:\n                          url: http://httpbin.org/\n                \n            schema:\n              $ref: '#/components/schemas/TraceRequest'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                logs: '{\"level\":\"warning\",\"msg\":\"Legacy path detected! Upgrade to\n                  extended....'\n                message: ok\n                response: \"====== Request ======\\nGET / HTTP/1.1\\r\\nHost: httpbin.org\\r\\n\\r\\n\\n======\n                  Response...\"\n              schema:\n                $ref: '#/components/schemas/TraceResponse'\n          description: Success tracing request.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Request malformed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: 'Unexpected failure:'\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Test a Tyk Classic or Tyk OAS API definition.\n      tags:\n      - Debug\n  /tyk/keys:\n    get:\n      description: List all the API keys.\n      operationId: listKeys\n      responses:\n        \"200\":\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/ApiAllKeys'\n          description: List of all API keys.\n        \"403\":\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Disabled hashed key listing.\n      summary: List keys.\n      tags:\n      - Keys\n    post:\n      description: |-\n        Tyk will generate the access token based on the OrgID specified in the API Definition and a random UUID. This ensures that keys can be owned by different API Owners should segmentation be needed at an organisational level.\n         <br/><br/>\n          API keys without access_rights data will be written to all APIs on the system (this also means that they will be created across all SessionHandlers and StorageHandlers, it is recommended to always embed access_rights data in a key to ensure that only targeted APIs and their back-ends are written to.\n      operationId: addKey\n      parameters:\n      - description: When set to true the key_hash returned will be similar to the\n          un-hashed key name.\n        example: true\n        in: query\n        name: hashed\n        required: false\n        schema:\n          type: boolean\n      requestBody:\n        content:\n          application/json:\n            example:\n              access_rights:\n                itachi-api:\n                  allowed_urls:\n                  - methods:\n                    - GET\n                    url: /users\n                  api_id: 8ddd91f3cda9453442c477b06c4e2da4\n                  api_name: Itachi api\n                  limit:\n                    per: 60\n                    quota_max: 10000\n                    quota_remaining: 10000\n                    quota_renewal_rate: 3600\n                    rate: 1000\n                    throttle_interval: 10\n                    throttle_retry_limit: 10\n                  versions:\n                  - Default\n              alias: portal-key\n              allowance: 1000\n              apply_policies:\n              - 5ead7120575961000181867e\n              date_created: \"2024-08-09T14:40:34.87614+03:00\"\n              enable_detailed_recording: true\n              last_updated: \"1723203634\"\n              meta_data:\n                new-update-key-sample: update-key-sample\n                tyk_developer_id: 62b3fb9a1d5e4f00017226f5\n                update: sample policy update\n                user_type: mobile_user\n              org_id: 5e9d9544a1dcd60001d0ed20\n              per: 60\n              quota_max: 10000\n              quota_renewal_rate: 3600\n              quota_renews: 1.723207234e+09\n              rate: 1000\n              tags:\n              - security\n              - edge\n              - edge-eu\n              throttle_interval: 10\n              throttle_retry_limit: 10\n            schema:\n              $ref: '#/components/schemas/SessionState'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: added\n                key: 5e9d9544a1dcd60001d0ed20a2290376f89846b798b7e5197584ef6d\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: New key added.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Request malformed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Failed to create key, ensure security settings are correct.\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Create a key.\n      tags:\n      - Keys\n  /tyk/keys/{keyID}:\n    delete:\n      description: Deleting a key will remove it permanently from the system, however\n        analytics relating to that key will still be available.\n      operationId: deleteKey\n      parameters:\n      - description: Use the hash of the key as input instead of the full key.\n        example: false\n        in: query\n        name: hashed\n        required: false\n        schema:\n          type: boolean\n      - description: The key ID.\n        example: 5e9d9544a1dcd60001d0ed20e7f75f9e03534825b7aef9df749582e5\n        in: path\n        name: keyID\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: deleted\n                key: 5e9d9544a1dcd60001d0ed20e7f75f9e03534825b7aef9df749582e5\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: Key deleted.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Failed to remove the key\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: There is no such key found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Key not found.\n      summary: Delete a key.\n      tags:\n      - Keys\n    get:\n      description: Get session info about the specified key. Should return up to date\n        rate limit and quota usage numbers.\n      operationId: getKey\n      parameters:\n      - description: Use the hash of the key as input instead of the full key.\n        example: true\n        in: query\n        name: hashed\n        required: false\n        schema:\n          type: boolean\n      - description: The key ID.\n        example: 5e9d9544a1dcd60001d0ed20e7f75f9e03534825b7aef9df749582e5\n        in: path\n        name: keyID\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                access_rights:\n                  itachi-api:\n                    allowed_urls:\n                    - methods:\n                      - GET\n                      url: /users\n                    api_id: 8ddd91f3cda9453442c477b06c4e2da4\n                    api_name: Itachi api\n                    limit:\n                      per: 60\n                      quota_max: 10000\n                      quota_remaining: 10000\n                      quota_renewal_rate: 3600\n                      rate: 1000\n                      throttle_interval: 10\n                      throttle_retry_limit: 10\n                    versions:\n                    - Default\n                alias: portal-key\n                allowance: 1000\n                apply_policies:\n                - 5ead7120575961000181867e\n                date_created: \"2024-08-09T14:40:34.87614+03:00\"\n                enable_detailed_recording: true\n                last_updated: \"1723203634\"\n                meta_data:\n                  new-update-key-sample: update-key-sample\n                  tyk_developer_id: 62b3fb9a1d5e4f00017226f5\n                  update: sample policy update\n                  user_type: mobile_user\n                org_id: 5e9d9544a1dcd60001d0ed20\n                per: 60\n                quota_max: 10000\n                quota_renewal_rate: 3600\n                quota_renews: 1.723207234e+09\n                rate: 1000\n                tags:\n                - security\n                - edge\n                - edge-eu\n                throttle_interval: 10\n                throttle_retry_limit: 10\n              schema:\n                $ref: '#/components/schemas/SessionState'\n          description: Key fetched.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Key requested by hash but key hashing is not enabled.\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: Key not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Key not found.\n      summary: Get a key with ID.\n      tags:\n      - Keys\n    post:\n      description: You can use this endpoint to import existing keys into Tyk or to\n        create a new custom key.\n      operationId: createCustomKey\n      parameters:\n      - description: Adding the suppress_reset parameter and setting it to 1, will\n          cause Tyk not to reset the quota limit that is in the current live quota\n          manager. By default Tyk will reset the quota in the live quota manager (initialising\n          it) when adding a key. Adding the `suppress_reset` flag to the URL parameters\n          will avoid this behaviour.\n        example: \"1\"\n        in: query\n        name: suppress_reset\n        required: false\n        schema:\n          enum:\n          - \"1\"\n          type: string\n      - description: When set to true the key_hash returned will be similar to the\n          un-hashed key name.\n        example: true\n        in: query\n        name: hashed\n        required: false\n        schema:\n          type: boolean\n      - description: Name to give the custom key.\n        example: customKey\n        in: path\n        name: keyID\n        required: true\n        schema:\n          type: string\n      requestBody:\n        content:\n          application/json:\n            example:\n              access_rights:\n                itachi-api:\n                  allowed_urls:\n                  - methods:\n                    - GET\n                    url: /users\n                  api_id: 8ddd91f3cda9453442c477b06c4e2da4\n                  api_name: Itachi api\n                  limit:\n                    per: 60\n                    quota_max: 10000\n                    quota_remaining: 10000\n                    quota_renewal_rate: 3600\n                    rate: 1000\n                    throttle_interval: 10\n                    throttle_retry_limit: 10\n                  versions:\n                  - Default\n              alias: portal-key\n              allowance: 1000\n              apply_policies:\n              - 5ead7120575961000181867e\n              date_created: \"2024-08-09T14:40:34.87614+03:00\"\n              enable_detailed_recording: true\n              last_updated: \"1723203634\"\n              meta_data:\n                new-update-key-sample: update-key-sample\n                tyk_developer_id: 62b3fb9a1d5e4f00017226f5\n                update: sample policy update\n                user_type: mobile_user\n              org_id: 5e9d9544a1dcd60001d0ed20\n              per: 60\n              quota_max: 10000\n              quota_renewal_rate: 3600\n              quota_renews: 1.723207234e+09\n              rate: 1000\n              tags:\n              - security\n              - edge\n              - edge-eu\n              throttle_interval: 10\n              throttle_retry_limit: 10\n            schema:\n              $ref: '#/components/schemas/SessionState'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: added\n                key: 5e9d9544a1dcd60001d0ed20customKey\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: New custom key added.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Request malformed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Failed to create key, ensure security settings are correct.\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Create custom key / Import key\n      tags:\n      - Keys\n    put:\n      description: ' You can also manually add keys to Tyk using your own key-generation\n        algorithm. It is recommended that when using this approach to ensure that\n        the OrgID being used in the API Definition and the key data is blank so that\n        Tyk does not try to prepend or manage the key in any way.'\n      operationId: updateKey\n      parameters:\n      - description: Adding the suppress_reset parameter and setting it to 1 will\n          cause Tyk not to reset the quota limit that is in the current live quota\n          manager. By default Tyk will reset the quota in the live quota manager (initialising\n          it) when adding a key. Adding the `suppress_reset` flag to the URL parameters\n          will avoid this behaviour.\n        example: \"1\"\n        in: query\n        name: suppress_reset\n        required: false\n        schema:\n          enum:\n          - \"1\"\n          type: string\n      - description: When set to true the key_hash returned will be similar to the\n          un-hashed key name.\n        example: true\n        in: query\n        name: hashed\n        required: false\n        schema:\n          type: boolean\n      - description: ID of the key you want to update.\n        example: 5e9d9544a1dcd60001d0ed20766d9a6ec6b4403b93a554feefef4708\n        in: path\n        name: keyID\n        required: true\n        schema:\n          type: string\n      requestBody:\n        content:\n          application/json:\n            example:\n              access_rights:\n                itachi-api:\n                  allowed_urls:\n                  - methods:\n                    - GET\n                    url: /users\n                  api_id: 8ddd91f3cda9453442c477b06c4e2da4\n                  api_name: Itachi api\n                  limit:\n                    per: 60\n                    quota_max: 10000\n                    quota_remaining: 10000\n                    quota_renewal_rate: 3600\n                    rate: 1000\n                    throttle_interval: 10\n                    throttle_retry_limit: 10\n                  versions:\n                  - Default\n              alias: portal-key\n              allowance: 1000\n              apply_policies:\n              - 5ead7120575961000181867e\n              date_created: \"2024-08-09T14:40:34.87614+03:00\"\n              enable_detailed_recording: true\n              last_updated: \"1723203634\"\n              meta_data:\n                new-update-key-sample: update-key-sample\n                tyk_developer_id: 62b3fb9a1d5e4f00017226f5\n                update: sample policy update\n                user_type: mobile_user\n              org_id: 5e9d9544a1dcd60001d0ed20\n              per: 60\n              quota_max: 10000\n              quota_renewal_rate: 3600\n              quota_renews: 1.723207234e+09\n              rate: 1000\n              tags:\n              - security\n              - edge\n              - edge-eu\n              - update-sample-tag\n              throttle_interval: 10\n              throttle_retry_limit: 10\n            schema:\n              $ref: '#/components/schemas/SessionState'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: modified\n                key: 5e9d9544a1dcd60001d0ed20766d9a6ec6b4403b93a554feefef4708\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: Key updated.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Request malformed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: Key is not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Key not found.\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Failed to create key, ensure security settings are correct.\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Update key.\n      tags:\n      - Keys\n  /tyk/keys/create:\n    post:\n      description: Create a key.\n      operationId: createKey\n      requestBody:\n        content:\n          application/json:\n            example:\n              access_rights:\n                itachi-api:\n                  allowed_urls:\n                  - methods:\n                    - GET\n                    url: /users\n                  api_id: 8ddd91f3cda9453442c477b06c4e2da4\n                  api_name: Itachi api\n                  limit:\n                    per: 60\n                    quota_max: 10000\n                    quota_remaining: 10000\n                    quota_renewal_rate: 3600\n                    rate: 1000\n                    throttle_interval: 10\n                    throttle_retry_limit: 10\n                  versions:\n                  - Default\n              alias: portal-key\n              allowance: 1000\n              apply_policies:\n              - 5ead7120575961000181867e\n              date_created: \"2024-08-09T14:40:34.87614+03:00\"\n              enable_detailed_recording: true\n              last_updated: \"1723203634\"\n              meta_data:\n                new-update-key-sample: update-key-sample\n                tyk_developer_id: 62b3fb9a1d5e4f00017226f5\n                update: sample policy update\n                user_type: mobile_user\n              org_id: 5e9d9544a1dcd60001d0ed20\n              per: 60\n              quota_max: 10000\n              quota_renewal_rate: 3600\n              quota_renews: 1.723207234e+09\n              rate: 1000\n              tags:\n              - security\n              - edge\n              - edge-eu\n              throttle_interval: 10\n              throttle_retry_limit: 10\n            schema:\n              $ref: '#/components/schemas/SessionState'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: added\n                key: 5e9d9544a1dcd60001d0ed207eb558517c3c48fb826c62cc6f6161eb\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: Key created.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Failed to create key, keys must have at least one Access\n                  Rights record set.\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: No access right.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Unmarshalling failed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Malformed body.\n      summary: Create a key.\n      tags:\n      - Keys\n  /tyk/keys/policy/{keyID}:\n    post:\n      description: This will set policies to a hashed key.\n      operationId: setPoliciesToHashedKey\n      parameters:\n      - description: Name to give the custom key.\n        example: 5e9d9544a1dcd60001d0ed207eb558517c3c48fb826c62cc6f6161eb\n        in: path\n        name: keyID\n        required: true\n        schema:\n          type: string\n      requestBody:\n        content:\n          application/json:\n            example:\n              apply_policies:\n              - 5ead7120575961000181867e\n              policy: \"\"\n            schema:\n              $ref: '#/components/schemas/PolicyUpdateObj'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: updated\n                key: 5e9d9544a1dcd60001d0ed207eb558517c3c48fb826c62cc6f6161eb\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: Updated hashed key.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Couldn't decode instruction\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Malformed request body.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: Key not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Key not found.\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Could not write key data.\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Set policies for a hashed key.\n      tags:\n      - Keys\n  /tyk/keys/preview:\n    post:\n      description: This will check if the body of a key definition is valid. And return\n        a response with how the key would look like if you were to create it.\n      operationId: validateAKeyDefinition\n      requestBody:\n        content:\n          application/json:\n            example:\n              access_rights:\n                itachi-api:\n                  allowed_urls:\n                  - methods:\n                    - GET\n                    url: /users\n                  api_id: 8ddd91f3cda9453442c477b06c4e2da4\n                  api_name: Itachi api\n                  limit:\n                    per: 60\n                    quota_max: 10000\n                    quota_remaining: 10000\n                    quota_renewal_rate: 3600\n                    rate: 1000\n                    throttle_interval: 10\n                    throttle_retry_limit: 10\n                  versions:\n                  - Default\n              alias: portal-key\n              allowance: 1000\n              apply_policies:\n              - 5ead7120575961000181867e\n              date_created: \"2024-08-09T14:40:34.87614+03:00\"\n              enable_detailed_recording: true\n              last_updated: \"1723203634\"\n              meta_data:\n                new-update-key-sample: update-key-sample\n                tyk_developer_id: 62b3fb9a1d5e4f00017226f5\n                update: sample policy update\n                user_type: mobile_user\n              org_id: 5e9d9544a1dcd60001d0ed20\n              per: 60\n              quota_max: 10000\n              quota_renewal_rate: 3600\n              quota_renews: 1.723207234e+09\n              rate: 1000\n              tags:\n              - security\n              - edge\n              - edge-eu\n              throttle_interval: 10\n              throttle_retry_limit: 10\n            schema:\n              $ref: '#/components/schemas/SessionState'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                access_rights:\n                  itachi-api:\n                    allowed_urls:\n                    - methods:\n                      - GET\n                      url: /users\n                    api_id: 8ddd91f3cda9453442c477b06c4e2da4\n                    api_name: Itachi api\n                    limit:\n                      per: 60\n                      quota_max: 10000\n                      quota_remaining: 10000\n                      quota_renewal_rate: 3600\n                      rate: 1000\n                      throttle_interval: 10\n                      throttle_retry_limit: 10\n                    versions:\n                    - Default\n                alias: portal-key\n                allowance: 1000\n                apply_policies:\n                - 5ead7120575961000181867e\n                date_created: \"2024-08-09T14:40:34.87614+03:00\"\n                enable_detailed_recording: true\n                last_updated: \"1723203634\"\n                meta_data:\n                  new-update-key-sample: update-key-sample\n                  tyk_developer_id: 62b3fb9a1d5e4f00017226f5\n                  update: sample policy update\n                  user_type: mobile_user\n                org_id: 5e9d9544a1dcd60001d0ed20\n                per: 60\n                quota_max: 10000\n                quota_renewal_rate: 3600\n                quota_renews: 1.723207234e+09\n                rate: 1000\n                tags:\n                - security\n                - edge\n                - edge-eu\n                throttle_interval: 10\n                throttle_retry_limit: 10\n              schema:\n                $ref: '#/components/schemas/SessionState'\n          description: Key definition is valid.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Unmarshalling failed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: This will validate a key definition.\n      tags:\n      - Keys\n  /tyk/oauth/clients/{apiID}:\n    get:\n      description: OAuth Clients are organised by API ID, and therefore are queried\n        as such.\n      operationId: listOAuthClients\n      parameters:\n      - description: The API ID\n        example: 1bd5c61b0e694082902cf15ddcc9e6a7\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n              - api_id: b84fe1a04e5648927971c0557971565c\n                client_id: 2a06b398c17f46908de3dffcb71ef87df\n                description: google client\n                meta_data:\n                  user_id: 362b3fb9a1d5e4f00017226f5\n                redirect_uri: https://httpbin.org/ip\n                secret: MmQwNTI5NGQtYjU0YS00NjMyLWIwZjktNTZjY2M1ZjhjYWY0\n              schema:\n                items:\n                  $ref: '#/components/schemas/NewClientRequest'\n                type: array\n          description: Get OAuth client details or a list of OAuth clients\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          description: Api no found\n      summary: List oAuth clients\n      tags:\n      - OAuth\n  /tyk/oauth/clients/{apiID}/{keyName}:\n    delete:\n      description: Please note that tokens issued with the client ID will still be\n        valid until they expire.\n      operationId: deleteOAuthClient\n      parameters:\n      - description: The API id\n        example: b84fe1a04e5648927971c0557971565c\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      - description: The Client ID\n        example: 2a06b398c17f46908de3dffcb71ef87df\n        in: path\n        name: keyName\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: deleted\n                key: 2a06b398c17f46908de3dffcb71ef87df\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: OAuth client deleted\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: OAuth Client ID not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Not found\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Delete failed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Delete OAuth client\n      tags:\n      - OAuth\n    get:\n      description: Get OAuth client details tied to an api\n      operationId: getOAuthClient\n      parameters:\n      - description: The API id\n        example: b84fe1a04e5648927971c0557971565c\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      - description: The Client ID\n        example: 2a06b398c17f46908de3dffcb71ef87df\n        in: path\n        name: keyName\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                client_id: 2a06b398c17f46908de3dffcb71ef87df\n                description: changed description sample\n                meta_data:\n                  user_id: 362b3fb9a1d5e4f00017226f5\n                redirect_uri: https://httpbin.org/ip\n                secret: MmQwNTI5NGQtYjU0YS00NjMyLWIwZjktNTZjY2M1ZjhjYWY0\n              schema:\n                $ref: '#/components/schemas/NewClientRequest'\n          description: OAuth client details\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: OAuth Client ID not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: OAuth Client not found\n      summary: Get OAuth client\n      tags:\n      - OAuth\n    put:\n      description: Allows you to update the metadata,redirecturi,description and Policy\n        ID for an OAuth client.\n      operationId: updateOAuthClient\n      parameters:\n      - description: The API id\n        example: b84fe1a04e5648927971c0557971565c\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      - description: The Client ID\n        example: 2a06b398c17f46908de3dffcb71ef87df\n        in: path\n        name: keyName\n        required: true\n        schema:\n          type: string\n      requestBody:\n        content:\n          application/json:\n            example:\n              api_id: b84fe1a04e5648927971c0557971565c\n              client_id: 2a06b398c17f46908de3dffcb71ef87df\n              description: changed description sample\n              meta_data:\n                user_id: 362b3fb9a1d5e4f00017226f5\n              redirect_uri: https://httpbin.org/ip\n              secret: MmQwNTI5NGQtYjU0YS00NjMyLWIwZjktNTZjY2M1ZjhjYWY0\n            schema:\n              $ref: '#/components/schemas/NewClientRequest'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                client_id: 2a06b398c17f46908de3dffcb71ef87df\n                description: changed description sample\n                meta_data:\n                  user_id: 362b3fb9a1d5e4f00017226f5\n                redirect_uri: https://httpbin.org/ip\n                secret: MmQwNTI5NGQtYjU0YS00NjMyLWIwZjktNTZjY2M1ZjhjYWY0\n              schema:\n                $ref: '#/components/schemas/NewClientRequest'\n          description: OAuth client updated\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Policy access rights doesn't contain API this OAuth client\n                  belongs to\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: API doesn't exist\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Not Found\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Unmarshalling failed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: malformed request body\n      summary: Update OAuth metadata,redirecturi,description and Policy ID\n      tags:\n      - OAuth\n  /tyk/oauth/clients/{apiID}/{keyName}/rotate:\n    put:\n      description: Generate a new secret\n      operationId: rotateOauthClient\n      parameters:\n      - description: The API id\n        example: b84fe1a04e5648927971c0557971565c\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      - description: The Client ID\n        example: 2a06b398c17f46908de3dffcb71ef87df\n        in: path\n        name: keyName\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                client_id: 2a06b398c17f46908de3dffcb71ef87df\n                description: google client\n                meta_data:\n                  user_id: 362b3fb9a1d5e4f00017226f5\n                redirect_uri: https://httpbin.org/ip\n                secret: MmQwNTI5NGQtYjU0YS00NjMyLWIwZjktNTZjY2M1ZjhjYWY0\n              schema:\n                $ref: '#/components/schemas/NewClientRequest'\n          description: New secret has been created\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: API doesn't exist\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Not Found\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Failure in storing client data\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Rotate the oath client secret\n      tags:\n      - OAuth\n  /tyk/oauth/clients/{apiID}/{keyName}/tokens:\n    get:\n      description: |-\n        This endpoint allows you to retrieve a list of all current tokens and their expiry date for a provided API ID and OAuth-client ID .If page query parameter is sent the tokens will be paginated. This endpoint will work only for newly created tokens.\n                <br/>\n                <br/>\n                You can control how long you want to store expired tokens in this list using `oauth_token_expired_retain_period` gateway option, which specifies retain period for expired tokens stored in Redis. By default expired token not get removed. See <a href=\"https://tyk.io/docs/configure/tyk-gateway-configuration-options/#a-name-oauth-token-expired-retain-period-a-oauth-token-expired-retain-period\" target=\"_blank\">here</a> for more details.\n      operationId: getOAuthClientTokens\n      parameters:\n      - description: The API id\n        example: b84fe1a04e5648927971c0557971565c\n        in: path\n        name: apiID\n        required: true\n        schema:\n          type: string\n      - description: The Client ID\n        example: 2a06b398c17f46908de3dffcb71ef87df\n        in: path\n        name: keyName\n        required: true\n        schema:\n          type: string\n      - description: Use page query parameter to say which page number you want returned.\n        example: 1\n        in: query\n        name: page\n        required: false\n        schema:\n          default: 1\n          type: integer\n      responses:\n        \"200\":\n          content:\n            application/json:\n              examples:\n                paginatedTokenExample:\n                  $ref: '#/components/examples/paginatedTokenExample'\n                tokenListExample:\n                  $ref: '#/components/examples/tokenListExample'\n              schema:\n                oneOf:\n                - $ref: '#/components/schemas/PaginatedOAuthClientTokens'\n                - items:\n                    $ref: '#/components/schemas/OAuthClientToken'\n                  nullable: true\n                  type: array\n          description: Tokens returned successfully.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: OAuth Client ID not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: OAuth Client ID not found\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Get client tokens failed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: List tokens for a provided API ID and OAuth-client ID\n      tags:\n      - OAuth\n  /tyk/oauth/clients/apis/{appID}:\n    get:\n      description: Get all API IDs for APIs that have use_oauth2 enabled and use the\n        client_id (appID) specified in the path parameter for OAuth2. You can use\n        the org_id query parameter to specify from which organization you want the\n        API IDs to be returned. To return APIs from all organizations, send org_id\n        as an empty string.\n      operationId: getApisForOauthApp\n      parameters:\n      - description: The Client ID\n        example: 2a06b398c17f46908de3dffcb71ef87df\n        in: path\n        name: appID\n        required: true\n        schema:\n          type: string\n      - description: The Org Id\n        in: query\n        name: orgID\n        required: false\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n              - b84fe1a04e5648927971c0557971565c\n              schema:\n                items:\n                  type: string\n                type: array\n          description: Return an array of apis ids\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n      summary: Get API IDs for APIS that use the specified client_id(appID) for OAuth\n      tags:\n      - OAuth\n  /tyk/oauth/clients/create:\n    post:\n      description: |\n        Any OAuth keys must be generated with the help of a client ID. These need to be pre-registered with Tyk before they can be used (in a similar vein to how you would register your app with Twitter before attempting to ask user permissions using their API).\n                <br/><br/>\n                <h3>Creating OAuth clients with Access to Multiple APIs</h3>\n                New from Tyk Gateway 2.6.0 is the ability to create OAuth clients with access to more than one API. If you provide the api_id it works the same as in previous releases. If you don't provide the api_id the request uses policy access rights and enumerates APIs from their setting in the newly created OAuth-client.\n      operationId: createOAuthClient\n      requestBody:\n        content:\n          application/json:\n            example:\n              api_id: b84fe1a04e5648927971c0557971565c\n              client_id: 2a06b398c17f46908de3dffcb71ef87df\n              description: google client\n              meta_data:\n                user_id: 362b3fb9a1d5e4f00017226f5\n              redirect_uri: https://httpbin.org/ip\n              secret: MmQwNTI5NGQtYjU0YS00NjMyLWIwZjktNTZjY2M1ZjhjYWY0\n            schema:\n              $ref: '#/components/schemas/NewClientRequest'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                client_id: 2a06b398c17f46908de3dffcb71ef87df\n                description: google client\n                meta_data:\n                  user_id: 362b3fb9a1d5e4f00017226f5\n                redirect_uri: https://httpbin.org/ip\n                secret: MmQwNTI5NGQtYjU0YS00NjMyLWIwZjktNTZjY2M1ZjhjYWY0\n              schema:\n                $ref: '#/components/schemas/NewClientRequest'\n          description: Client created\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: API doesn't exist\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Api Not found\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Unmarshalling failed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Unmarshalling failed\n      summary: Create new OAuth client\n      tags:\n      - OAuth\n  /tyk/oauth/refresh/{keyName}:\n    delete:\n      description: It is possible to invalidate refresh tokens in order to manage\n        OAuth client access more robustly.\n      operationId: invalidateOAuthRefresh\n      parameters:\n      - description: The Client ID\n        example: 2a06b398c17f46908de3dffcb71ef87df\n        in: path\n        name: keyName\n        required: true\n        schema:\n          type: string\n      - description: The API id\n        example: b84fe1a04e5648927971c0557971565c\n        in: query\n        name: api_id\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: deleted\n                key: 2a06b398c17f46908de3dffcb71ef87df\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: Deleted\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Missing parameter api_id\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: missing api_Id query parameter\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: API for this refresh token not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Not Found\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Failed to invalidate refresh token\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Invalidate OAuth refresh token\n      tags:\n      - OAuth\n  /tyk/oauth/revoke:\n    post:\n      description: revoke a single token\n      operationId: revokeSingleToken\n      requestBody:\n        content:\n          application/x-www-form-urlencoded:\n            schema:\n              properties:\n                client_id:\n                  description: id of oauth client\n                  example: 2a06b398c17f46908de3dffcb71ef87df\n                  type: string\n                org_id:\n                  example: 6492f66e6ebbc56c6a6bf022\n                  type: string\n                token:\n                  description: token to be revoked\n                  example: eyJvcmciOiI1ZTIwOTFjNGQ0YWVmY2U2MGMwNGZiOTIiLCJpZCI6IjIyODQ1NmFjNmJlMjRiMzI5MTIyOTdlODQ5NTc4NjJhIiwiaCI6Im11cm11cjY0In0=\n                  type: string\n                token_type_hint:\n                  description: type of token to be revoked, if sent then the accepted\n                    values are access_token and refresh_token. String value and optional,\n                    of not provided then it will attempt to remove access and refresh\n                    tokens that matches\n                  example: access_token\n                  type: string\n              required:\n              - token\n              - client_id\n              type: object\n        description: token revoked successfully\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                message: token revoked successfully\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: token revoked\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: cannot parse form. Form malformed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: malformed form data\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n      summary: revoke token\n      tags:\n      - OAuth\n  /tyk/oauth/revoke_all:\n    post:\n      description: Revoke all the tokens for a given oauth client\n      operationId: revokeAllTokens\n      requestBody:\n        content:\n          application/x-www-form-urlencoded:\n            schema:\n              properties:\n                client_id:\n                  description: id of oauth client\n                  example: 2a06b398c17f46908de3dffcb71ef87df\n                  type: string\n                client_secret:\n                  description: OAuth client secret to ensure that its a valid operation\n                  example: MmQwNTI5NGQtYjU0YS00NjMyLWIwZjktNTZjY2M1ZjhjYWY0\n                  type: string\n                org_id:\n                  example: 6492f66e6ebbc56c6a6bf022\n                  type: string\n              required:\n              - client_secret\n              - client_id\n              type: object\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                message: tokens revoked successfully\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: tokens revoked\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: cannot parse form. Form malformed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"401\":\n          content:\n            application/json:\n              example:\n                message: client_id is required\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: missing client id\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: oauth client doesn't exist\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: not found\n      summary: Revoke all client's tokens\n      tags:\n      - OAuth\n  /tyk/oauth/tokens:\n    delete:\n      description: Purge all lapsed OAuth token\n      operationId: purgeLapsedOAuthTokens\n      parameters:\n      - description: purge lapsed tokens\n        example: lapsed\n        in: query\n        name: scope\n        required: true\n        schema:\n          enum:\n          - lapsed\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                message: lapsed tokens purged\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: lapsed tokens purged successfully\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: unknown scope\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Sending a value other than lapsed in scope query\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"422\":\n          content:\n            application/json:\n              example:\n                message: scope parameter is required\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Missing lapsed query parameter\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: error purging lapsed tokens\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Purge lapsed OAuth tokens\n      tags:\n      - OAuth\n  /tyk/org/keys:\n    get:\n      description: You can now set rate limits at the organisation level by using\n        the following fields - allowance and rate. These are the number of allowed\n        requests for the specified per value, and need to be set to the same value.\n        If you don't want to have organisation level rate limiting, set 'rate' or\n        'per' to zero, or don't add them to your request.\n      operationId: listOrgKeys\n      parameters:\n      - description: Retrieves all keys starting with the specified filter(filter\n          is a prefix - e.g. default* or default will return all keys starting with\n          default  like defaultbd,defaulttwo etc).We don't use filter for hashed keys\n        example: default*\n        in: query\n        name: filter\n        required: false\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                keys:\n                - 5e9d9544a1dcd60001d0ed2008500e44fa644f939b640a4b8b4ea58c\n              schema:\n                $ref: '#/components/schemas/ApiAllKeys'\n          description: List of all org keys\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: ORG not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: ORG not found\n      summary: List Organisation Keys\n      tags:\n      - Organisation Quotas\n  /tyk/org/keys/{keyID}:\n    delete:\n      description: Deleting a key will remove all limits from organisation. It does\n        not affects regular keys created within organisation.\n      operationId: deleteOrgKey\n      parameters:\n      - description: The Key ID\n        example: e389ae00a2b145feaf28d6cc11f0f86d\n        in: path\n        name: keyID\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: deleted\n                key: e389ae00a2b145feaf28d6cc11f0f86d\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: OK\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Failed to remove the key\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: Org not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Org not found\n      summary: Delete Key\n      tags:\n      - Organisation Quotas\n    get:\n      description: Get session info about specified organisation key. Should return\n        up to date rate limit and quota usage numbers.\n      operationId: getOrgKey\n      parameters:\n      - description: The Org ID\n        example: 664a14650619d40001f1f00f\n        in: query\n        name: orgID\n        required: false\n        schema:\n          type: string\n      - description: The Key ID\n        example: e389ae00a2b145feaf28d6cc11f0f86d\n        in: path\n        name: keyID\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                access_rights:\n                  itachi-api:\n                    allowed_urls:\n                    - methods:\n                      - GET\n                      url: /users\n                    api_id: 8ddd91f3cda9453442c477b06c4e2da4\n                    api_name: Itachi api\n                    limit:\n                      per: 60\n                      quota_max: 10000\n                      quota_remaining: 10000\n                      quota_renewal_rate: 3600\n                      rate: 1000\n                      throttle_interval: 10\n                      throttle_retry_limit: 10\n                    versions:\n                    - Default\n                alias: portal-key\n                allowance: 1000\n                apply_policies:\n                - 5ead7120575961000181867e\n                date_created: \"2024-08-09T14:40:34.87614+03:00\"\n                enable_detailed_recording: true\n                last_updated: \"1723203634\"\n                meta_data:\n                  new-update-key-sample: update-key-sample\n                  tyk_developer_id: 62b3fb9a1d5e4f00017226f5\n                  update: sample policy update\n                  user_type: mobile_user\n                org_id: 5e9d9544a1dcd60001d0ed20\n                per: 60\n                quota_max: 10000\n                quota_renewal_rate: 3600\n                quota_renews: 1.723207234e+09\n                rate: 1000\n                tags:\n                - security\n                - edge\n                - edge-eu\n                throttle_interval: 10\n                throttle_retry_limit: 10\n              schema:\n                properties:\n                  access_rights:\n                    additionalProperties:\n                      properties:\n                        allowed_urls:\n                          items:\n                            properties:\n                              methods:\n                                items:\n                                  type: string\n                                nullable: true\n                                type: array\n                              url:\n                                type: string\n                            type: object\n                          nullable: true\n                          type: array\n                        api_id:\n                          type: string\n                        api_name:\n                          type: string\n                        limit:\n                          properties:\n                            per:\n                              type: integer\n                            quota_max:\n                              type: integer\n                            quota_remaining:\n                              type: integer\n                            quota_renewal_rate:\n                              type: integer\n                            rate:\n                              type: integer\n                            throttle_interval:\n                              type: integer\n                            throttle_retry_limit:\n                              type: integer\n                          type: object\n                        versions:\n                          items:\n                            type: string\n                          nullable: true\n                          type: array\n                      type: object\n                    nullable: true\n                    type: object\n                  alias:\n                    type: string\n                  allowance:\n                    type: integer\n                  apply_policies:\n                    items:\n                      type: string\n                    nullable: true\n                    type: array\n                  date_created:\n                    format: date-time\n                    type: string\n                  enable_detailed_recording:\n                    type: boolean\n                  last_updated:\n                    type: string\n                  meta_data:\n                    additionalProperties:\n                      type: string\n                    nullable: true\n                    type: object\n                  org_id:\n                    type: string\n                  per:\n                    type: integer\n                  quota_max:\n                    type: integer\n                  quota_renewal_rate:\n                    type: integer\n                  quota_renews:\n                    type: integer\n                  rate:\n                    type: integer\n                  tags:\n                    items:\n                      type: string\n                    nullable: true\n                    type: array\n                  throttle_interval:\n                    type: integer\n                  throttle_retry_limit:\n                    type: integer\n                type: object\n          description: OK\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: Org not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Org not found\n      summary: Get an Organisation Key\n      tags:\n      - Organisation Quotas\n    post:\n      description: This work similar to Keys API except that Key ID is always equals\n        Organisation ID\n      operationId: addOrgKey\n      parameters:\n      - description: The Key ID\n        example: e389ae00a2b145feaf28d6cc11f0f86d\n        in: path\n        name: keyID\n        required: true\n        schema:\n          type: string\n      - description: Adding the reset_quota parameter and setting it to 1, will cause\n          Tyk reset the organisations quota in the live quota manager, it is recommended\n          to use this mechanism to reset organisation-level access if a monthly subscription\n          is in place.\n        example: \"1\"\n        in: query\n        name: reset_quota\n        required: false\n        schema:\n          enum:\n          - \"1\"\n          type: string\n      requestBody:\n        content:\n          application/json:\n            example:\n              access_rights:\n                itachi-api:\n                  allowed_urls:\n                  - methods:\n                    - GET\n                    url: /users\n                  api_id: 8ddd91f3cda9453442c477b06c4e2da4\n                  api_name: Itachi api\n                  limit:\n                    per: 60\n                    quota_max: 10000\n                    quota_remaining: 10000\n                    quota_renewal_rate: 3600\n                    rate: 1000\n                    throttle_interval: 10\n                    throttle_retry_limit: 10\n                  versions:\n                  - Default\n              alias: portal-key\n              allowance: 1000\n              apply_policies:\n              - 5ead7120575961000181867e\n              date_created: \"2024-08-09T14:40:34.87614+03:00\"\n              enable_detailed_recording: true\n              last_updated: \"1723203634\"\n              meta_data:\n                new-update-key-sample: update-key-sample\n                tyk_developer_id: 62b3fb9a1d5e4f00017226f5\n                update: sample policy update\n                user_type: mobile_user\n              org_id: 5e9d9544a1dcd60001d0ed20\n              per: 60\n              quota_max: 10000\n              quota_renewal_rate: 3600\n              quota_renews: 1.723207234e+09\n              rate: 1000\n              tags:\n              - security\n              - edge\n              - edge-eu\n              throttle_interval: 10\n              throttle_retry_limit: 10\n            schema:\n              $ref: '#/components/schemas/SessionState'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: added\n                key: e389ae00a2b145feaf28d6cc11f0f86d\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: OK\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Request malformed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: No such organisation found in Active API list\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Not Found\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: 'Error writing to key store '\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Create an organisation key\n      tags:\n      - Organisation Quotas\n    put:\n      description: |-\n        This work similar to Keys API except that Key ID is always equals Organisation ID\n\n        For Gateway v2.6.0 onwards, you can now set rate limits at the organisation level by using the following fields - allowance and rate. These are the number of allowed requests for the specified per value, and need to be set to the same value. If you don't want to have organisation level rate limiting, set `rate` or `per` to zero, or don't add them to your request.\n      operationId: updateOrgKey\n      parameters:\n      - description: Adding the reset_quota parameter and setting it to 1, will cause\n          Tyk reset the organisations quota in the live quota manager, it is recommended\n          to use this mechanism to reset organisation-level access if a monthly subscription\n          is in place.\n        example: \"1\"\n        in: query\n        name: reset_quota\n        required: false\n        schema:\n          enum:\n          - \"1\"\n          type: string\n      - description: The Key ID\n        example: e389ae00a2b145feaf28d6cc11f0f86d\n        in: path\n        name: keyID\n        required: true\n        schema:\n          type: string\n      requestBody:\n        content:\n          application/json:\n            example:\n              access_rights:\n                itachi-api:\n                  allowed_urls:\n                  - methods:\n                    - GET\n                    url: /users\n                  api_id: 8ddd91f3cda9453442c477b06c4e2da4\n                  api_name: Itachi api\n                  limit:\n                    per: 60\n                    quota_max: 10000\n                    quota_remaining: 10000\n                    quota_renewal_rate: 3600\n                    rate: 1000\n                    throttle_interval: 10\n                    throttle_retry_limit: 10\n                  versions:\n                  - Default\n              alias: portal-key\n              allowance: 1000\n              apply_policies:\n              - 5ead7120575961000181867e\n              date_created: \"2024-08-09T14:40:34.87614+03:00\"\n              enable_detailed_recording: true\n              last_updated: \"1723203634\"\n              meta_data:\n                new-update-key-sample: update-key-sample\n                tyk_developer_id: 62b3fb9a1d5e4f00017226f5\n                update: sample policy update\n                user_type: mobile_user\n              org_id: 5e9d9544a1dcd60001d0ed20\n              per: 60\n              quota_max: 10000\n              quota_renewal_rate: 3600\n              quota_renews: 1.723207234e+09\n              rate: 1000\n              tags:\n              - security\n              - edge\n              - edge-eu\n              - update-sample-tag\n              throttle_interval: 10\n              throttle_retry_limit: 10\n            schema:\n              $ref: '#/components/schemas/SessionState'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: OK\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Request malformed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: No such organisation found in Active API list\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Not Found\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: 'Error writing to key store '\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Update Organisation Key\n      tags:\n      - Organisation Quotas\n  /tyk/policies:\n    get:\n      description: Retrieve all the policies in your Tyk instance. Returns an array\n        policies.\n      operationId: listPolicies\n      responses:\n        \"200\":\n          content:\n            application/json:\n              examples:\n                policiesExample:\n                  $ref: '#/components/examples/policiesExample'\n              schema:\n                items:\n                  $ref: '#/components/schemas/Policy'\n                type: array\n          description: List of all policies.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n      summary: List policies.\n      tags:\n      - Policies\n    post:\n      description: Create a policy in your Tyk Instance.\n      operationId: addPolicy\n      requestBody:\n        content:\n          application/json:\n            example:\n              access_rights:\n                8ddd91f3cda9453442c477b06c4e2da4:\n                  allowed_urls:\n                  - methods:\n                    - GET\n                    url: /users\n                  api_id: 8ddd91f3cda9453442c477b06c4e2da4\n                  api_name: Itachi api\n                  disable_introspection: false\n                  versions:\n                  - Default\n              active: true\n              hmac_enabled: false\n              id: 5ead7120575961000181867e\n              is_inactive: false\n              key_expires_in: 2.592e+06\n              max_query_depth: -1\n              meta_data:\n                update: sample policy update\n                user_type: mobile_user\n              name: Sample policy\n              partitions:\n                acl: true\n                complexity: false\n                per_api: false\n                quota: true\n                rate_limit: true\n              per: 60\n              quota_max: 10000\n              quota_renewal_rate: 3600\n              rate: 1000\n              tags:\n              - security\n              throttle_interval: 10\n              throttle_retry_limit: 10\n            schema:\n              $ref: '#/components/schemas/Policy'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: added\n                key: 5ead7120575961000181867e\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: Policy created.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Request malformed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Malformed request.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Due to enabled service policy source, please use the Dashboard\n                  API.\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Create a policy.\n      tags:\n      - Policies\n  /tyk/policies/{polID}:\n    delete:\n      description: Delete a policy by ID in your Tyk instance.\n      operationId: deletePolicy\n      parameters:\n      - description: You can retrieve details of a single policy by ID in your Tyk\n          instance.\n        example: 5ead7120575961000181867e\n        in: path\n        name: polID\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: deleted\n                key: 5ead7120575961000181867e\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: Deleted policy by ID\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Must specify an apiID to update\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Policy Id not provided\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Delete failed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Delete a policy.\n      tags:\n      - Policies\n    get:\n      description: You can retrieve details of a single policy by ID in your Tyk instance.\n      operationId: getPolicy\n      parameters:\n      - description: You can retrieve details of a single policy by ID in your Tyk\n          instance.\n        example: 5ead7120575961000181867e\n        in: path\n        name: polID\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                access_rights:\n                  8ddd91f3cda9453442c477b06c4e2da4:\n                    allowed_urls:\n                    - methods:\n                      - GET\n                      url: /users\n                    api_id: 8ddd91f3cda9453442c477b06c4e2da4\n                    api_name: Itachi api\n                    disable_introspection: false\n                    versions:\n                    - Default\n                active: true\n                hmac_enabled: false\n                id: 5ead7120575961000181867e\n                is_inactive: false\n                key_expires_in: 2.592e+06\n                max_query_depth: -1\n                meta_data:\n                  update: sample policy update\n                  user_type: mobile_user\n                name: Sample policy\n                partitions:\n                  acl: true\n                  complexity: false\n                  per_api: false\n                  quota: true\n                  rate_limit: true\n                per: 60\n                quota_max: 10000\n                quota_renewal_rate: 3600\n                rate: 1000\n                tags:\n                - security\n                throttle_interval: 10\n                throttle_retry_limit: 10\n              schema:\n                $ref: '#/components/schemas/Policy'\n          description: Get details of a single policy.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: Policy not found\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Policy not found\n      summary: Get a policy.\n      tags:\n      - Policies\n    put:\n      description: You can update a Policy in your Tyk Instance by ID.\n      operationId: updatePolicy\n      parameters:\n      - description: You can retrieve details of a single policy by ID in your Tyk\n          instance.\n        example: 5ead7120575961000181867e\n        in: path\n        name: polID\n        required: true\n        schema:\n          type: string\n      requestBody:\n        content:\n          application/json:\n            example:\n              access_rights:\n                8ddd91f3cda9453442c477b06c4e2da4:\n                  allowed_urls:\n                  - methods:\n                    - GET\n                    url: /users\n                  api_id: 8ddd91f3cda9453442c477b06c4e2da4\n                  api_name: Itachi api\n                  disable_introspection: false\n                  versions:\n                  - Default\n              active: true\n              hmac_enabled: false\n              id: 5ead7120575961000181867e\n              is_inactive: false\n              key_expires_in: 2.592e+06\n              max_query_depth: -1\n              meta_data:\n                update: sample policy update\n                user_type: mobile_user\n              name: update policy sample\n              partitions:\n                acl: true\n                complexity: false\n                per_api: false\n                quota: true\n                rate_limit: true\n              per: 60\n              quota_max: 10000\n              quota_renewal_rate: 3600\n              rate: 1000\n              tags:\n              - security\n              throttle_interval: 10\n              throttle_retry_limit: 10\n            schema:\n              $ref: '#/components/schemas/Policy'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                action: modified\n                key: 5ead7120575961000181867e\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiModifyKeySuccess'\n          description: Policy updated\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Request malformed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: malformed request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"500\":\n          content:\n            application/json:\n              example:\n                message: Failed to create file!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Internal server error.\n      summary: Update a policy.\n      tags:\n      - Policies\n  /tyk/reload:\n    get:\n      description: Tyk is capable of reloading configurations without having to stop\n        serving requests. This means that API configurations can be added at runtime,\n        or even modified at runtime and those rules applied immediately without any\n        downtime.\n      operationId: hotReload\n      parameters:\n      - description: Block a response until the reload is performed. This can be useful\n          in scripting environments like CI/CD workflows.\n        example: false\n        in: query\n        name: block\n        required: false\n        schema:\n          type: boolean\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                message: \"\"\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Reload gateway.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n      summary: Hot-reload a single node.\n      tags:\n      - Hot Reload\n  /tyk/reload/group:\n    get:\n      description: To reload a whole group of Tyk nodes (without using the Dashboard\n        or host manager). You can send an API request to a single node, this node\n        will then send a notification through the pub/sub infrastructure to all other\n        listening nodes (including the host manager if it is being used to manage\n        Nginx) which will then trigger a global reload.\n      operationId: hotReloadGroup\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                message: \"\"\n                status: ok\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Reload the Tyk Gateway.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n      summary: Hot-reload a group of Tyk nodes.\n      tags:\n      - Hot Reload\n  /{listen_path}/tyk/batch:\n    post:\n      description: Endpoint to run batch request.\n      operationId: batch\n      parameters:\n        - description: API listen path\n          example: get\n          in: path\n          name: listen_path\n          required: true\n          schema:\n            type: string\n      requestBody:\n        content:\n          application/json:\n            example:\n              requests:\n                - body: \"\"\n                  headers:\n                    authorization: 1dbc83b9c431649d7698faa9797e2900f\n                    x-tyk-test: \"1\"\n                    x-tyk-version: \"1.2\"\n                  method: GET\n                  relative_url: get\n                - body: \"\"\n                  headers:\n                    authorization: 1dbc83b9c431649d7698faa9797e2900f\n                    x-tyk-test: \"2\"\n                    x-tyk-version: \"1.2\"\n                  method: GET\n                  relative_url: get\n              suppress_parallel_execution: false\n            schema:\n              $ref: '#/components/schemas/BatchRequestStructure'\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                - body: '{\"message\": \"success\"}'\n                  code: 200\n                  headers:\n                    Access-Control-Allow-Credentials:\n                      - \"true\"\n                    Content-Type:\n                      - application/json\n                  relative_url: get\n              schema:\n                items:\n                  $ref: '#/components/schemas/BatchReplyUnit'\n                type: array\n          description: Success.\n        \"400\":\n          content:\n            application/json:\n              example:\n                message: Batch request malformed\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Bad Request\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n      summary: Run batch request.\n      tags:\n        - Batch requests\n  /tyk/schema:\n    get:\n      description: Get OAS schema definition using a version.\n      operationId: getSchema\n      parameters:\n      - description: The OAS version to fetch.\n        example: 3.0.3\n        in: query\n        name: oasVersion\n        required: false\n        schema:\n          type: string\n      responses:\n        \"200\":\n          content:\n            application/json:\n              example:\n                message: \"\"\n                status: Success\n              schema:\n                $ref: '#/components/schemas/OASSchemaResponse'\n          description: OAS schema response.\n        \"403\":\n          content:\n            application/json:\n              example:\n                message: Attempted administrative access with invalid or missing key!\n                status: error\n              schema:\n                $ref: '#/components/schemas/ApiStatusMessage'\n          description: Forbidden\n        \"404\":\n          content:\n            application/json:\n              example:\n                message: Schema not found for version \"4\"\n                status: Failed\n              schema:\n                $ref: '#/components/schemas/OASSchemaResponse'\n          description: Version not found\n      summary: Get OAS schema.\n      tags:\n      - Schema\ncomponents:\n  examples:\n    certIdList:\n      value:\n        certs:\n        - 5e9d9544a1dcd60001d0ed20a6ab77653d5da938f452bb8cc9b55b0630a6743dabd8dc92bfb025abb09ce035\n        - 5e9d9544a1dcd60001d0ed207c440d66ebb0a4629d21329808dce9091acf5f2fde328067a6e60e5347271d90\n    certificateBasicList:\n      value:\n        certs:\n        - dns_names:\n          - example.com\n          - www.example.com\n          has_private: true\n          id: 5e9d9544a1dcd60001d0ed20a6ab77653d5da938f452bb8cc9b55b0630a6743dabd8dc92bfb025abb09ce035\n          is_ca: false\n          issuer_cn: Issuer 1\n          not_after: \"2024-01-01T00:00:00Z\"\n          not_before: \"2023-01-01T00:00:00Z\"\n          subject_cn: Subject 1\n        - dns_names:\n          - example.org\n          - www.example.org\n          has_private: false\n          id: 5e9d9544a1dcd60001d0ed207c440d66ebb0a4629d21329808dce9091acf5f2fde328067a6e60e5347271d90\n          is_ca: true\n          issuer_cn: Issuer 2\n          not_after: \"2024-02-01T00:00:00Z\"\n          not_before: \"2023-02-01T00:00:00Z\"\n          subject_cn: Subject 2\n    certificateMetaExample:\n      value:\n        dns_names:\n        - .*tyk.io\n        fingerprint: 7c440d66ebb0a4629d21329808dce9091acf5f2fde328067a6e60e5347271d90\n        has_private: false\n        id: 5e9d9544a1dcd60001d0ed207c440d66ebb0a4629d21329808dce9091acf5f2fde328067a6e60e5347271d90\n        is_ca: false\n        issuer:\n          CommonName: tyk.io\n          Country:\n          - Peachtree\n          ExtraNames: null\n          Locality: null\n          Names:\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 6\n            Value: Peachtree\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 10\n            Value: tyk\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 11\n            Value: tyk\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 3\n            Value: tyk.io\n          - Type:\n            - 1\n            - 2\n            - 840\n            - 113549\n            - 1\n            - 9\n            - 1\n            Value: support@tyk.io\n          Organization:\n          - tyk\n          OrganizationalUnit:\n          - tyk\n          PostalCode: null\n          Province: null\n          SerialNumber: \"\"\n          StreetAddress: null\n        not_after: \"2034-03-26T08:46:37Z\"\n        not_before: \"2024-03-25T08:46:37Z\"\n        subject:\n          CommonName: tyk.io\n          Country:\n          - Peachtree\n          ExtraNames: null\n          Locality: null\n          Names:\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 6\n            Value: Peachtree\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 10\n            Value: tyk\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 11\n            Value: tyk\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 3\n            Value: tyk.io\n          - Type:\n            - 1\n            - 2\n            - 840\n            - 113549\n            - 1\n            - 9\n            - 1\n            Value: support@tyk.io\n          Organization:\n          - tyk\n          OrganizationalUnit:\n          - tyk\n          PostalCode: null\n          Province: null\n          SerialNumber: \"\"\n          StreetAddress: null\n    certificateMetaListExample:\n      value:\n      - dns_names:\n        - .*tyk.io\n        fingerprint: 7c440d66ebb0a4629d21329808dce9091acf5f2fde328067a6e60e5347271d90\n        has_private: false\n        id: 5e9d9544a1dcd60001d0ed207c440d66ebb0a4629d21329808dce9091acf5f2fde328067a6e60e5347271d90\n        is_ca: false\n        issuer:\n          CommonName: tyk.io\n          Country:\n          - Peachtree\n          ExtraNames: null\n          Locality: null\n          Names:\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 6\n            Value: Peachtree\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 10\n            Value: tyk\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 11\n            Value: tyk\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 3\n            Value: tyk.io\n          - Type:\n            - 1\n            - 2\n            - 840\n            - 113549\n            - 1\n            - 9\n            - 1\n            Value: support@tyk.io\n          Organization:\n          - tyk\n          OrganizationalUnit:\n          - tyk\n          PostalCode: null\n          Province: null\n          SerialNumber: \"\"\n          StreetAddress: null\n        not_after: \"2034-03-26T08:46:37Z\"\n        not_before: \"2024-03-25T08:46:37Z\"\n        subject:\n          CommonName: tyk.io\n          Country:\n          - Peachtree\n          ExtraNames: null\n          Locality: null\n          Names:\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 6\n            Value: Peachtree\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 10\n            Value: tyk\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 11\n            Value: tyk\n          - Type:\n            - 2\n            - 5\n            - 4\n            - 3\n            Value: tyk.io\n          - Type:\n            - 1\n            - 2\n            - 840\n            - 113549\n            - 1\n            - 9\n            - 1\n            Value: support@tyk.io\n          Organization:\n          - tyk\n          OrganizationalUnit:\n          - tyk\n          PostalCode: null\n          Province: null\n          SerialNumber: \"\"\n          StreetAddress: null\n    oasExample:\n      value:\n        components:\n          securitySchemes:\n            bearerAuth:\n              description: The API Access Credentials\n              scheme: bearer\n              type: http\n        info:\n          description: This is a sample OAS.\n          title: OAS Sample\n          version: 1.0.0\n        openapi: 3.0.3\n        paths:\n          /api/sample/users:\n            get:\n              operationId: getUsers\n              responses:\n                \"200\":\n                  content:\n                    application/json:\n                      schema:\n                        items:\n                          properties:\n                            name:\n                              type: string\n                          type: object\n                        type: array\n                  description: fetched users\n              summary: Get users\n              tags:\n              - users\n        security:\n        - bearerAuth: []\n        servers:\n        - url: https://localhost:8080\n        x-tyk-api-gateway:\n          info:\n            name: user\n            state:\n              active: true\n          server:\n            listenPath:\n              strip: true\n              value: /user-test/\n          upstream:\n            url: https://localhost:8080\n    oasExampleList:\n      value:\n      - components:\n          securitySchemes:\n            bearerAuth:\n              description: The API Access Credentials\n              scheme: bearer\n              type: http\n        info:\n          description: This is a sample OAS.\n          title: OAS Sample\n          version: 1.0.0\n        openapi: 3.0.3\n        paths:\n          /api/sample/users:\n            get:\n              operationId: getUsers\n              responses:\n                \"200\":\n                  content:\n                    application/json:\n                      schema:\n                        items:\n                          properties:\n                            name:\n                              type: string\n                          type: object\n                        type: array\n                  description: fetched users\n              summary: Get users\n              tags:\n              - users\n        security:\n        - bearerAuth: []\n        servers:\n        - url: https://localhost:8080\n        x-tyk-api-gateway:\n          info:\n            name: user\n            state:\n              active: true\n          server:\n            listenPath:\n              strip: true\n              value: /user-test/\n          upstream:\n            url: https://localhost:8080\n    paginatedTokenExample:\n      value:\n        Pagination:\n          page_num: 1\n          page_size: 100\n          page_total: 0\n        Tokens:\n        - code: 5a7d110be6355b0c071cc339327563cb45174ae387f52f87a80d2496\n          expires: 1.518158407e+09\n        - code: 5a7d110be6355b0c071cc33988884222b0cf436eba7979c6c51d6dbd\n          expires: 1.518158594e+09\n        - code: 5a7d110be6355b0c071cc33990bac8b5261041c5a7d585bff291fec4\n          expires: 1.518158638e+09\n        - code: 5a7d110be6355b0c071cc339a66afe75521f49388065a106ef45af54\n          expires: 1.518159792e+09\n    policiesExample:\n      value:\n      - _id: \"\"\n        access_rights:\n          8ddd91f3cda9453442c477b06c4e2da4:\n            allowance_scope: \"\"\n            allowed_types: []\n            allowed_urls:\n            - methods:\n              - GET\n              url: /users\n            api_id: 8ddd91f3cda9453442c477b06c4e2da4\n            api_name: Itachi api\n            disable_introspection: false\n            field_access_rights: []\n            limit:\n              max_query_depth: 0\n              per: 0\n              quota_max: 0\n              quota_remaining: 0\n              quota_renewal_rate: 0\n              quota_renews: 0\n              rate: 0\n              smoothing:\n                delay: 30\n                enabled: false\n                step: 100\n                threshold: 500\n                trigger: 0.8\n              throttle_interval: 0\n              throttle_retry_limit: 0\n            restricted_types: []\n            versions:\n            - Default\n        active: true\n        enable_http_signature_validation: false\n        graphql_access_rights: null\n        hmac_enabled: false\n        id: 5ead7120575961000181867e\n        is_inactive: false\n        key_expires_in: 2.592e+06\n        last_updated: \"1716980105\"\n        max_query_depth: -1\n        meta_data:\n          user_type: mobile_user\n        name: Sample policy\n        org_id: 664a14650619d40001f1f00f\n        partitions:\n          acl: true\n          complexity: false\n          per_api: false\n          quota: true\n          rate_limit: true\n        per: 60\n        quota_max: 10000\n        quota_renewal_rate: 3600\n        rate: 1000\n        smoothing:\n          delay: 30\n          enabled: false\n          step: 100\n          threshold: 500\n          trigger: 0.8\n        tags:\n        - security\n        throttle_interval: 10\n        throttle_retry_limit: 10\n    tokenListExample:\n      value:\n      - code: 5a7d110be6355b0c071cc339327563cb45174ae387f52f87a80d2496\n        expires: 1.518158407e+09\n      - code: 5a7d110be6355b0c071cc33988884222b0cf436eba7979c6c51d6dbd\n        expires: 1.518158594e+09\n      - code: 5a7d110be6355b0c071cc33990bac8b5261041c5a7d585bff291fec4\n        expires: 1.518158638e+09\n      - code: 5a7d110be6355b0c071cc339a66afe75521f49388065a106ef45af54\n        expires: 1.518159792e+09\n  parameters:\n    AccessType:\n      description: Filter for internal or external API versions\n      example: internal\n      in: query\n      name: accessType\n      required: false\n      schema:\n        enum:\n        - internal\n        - external\n        type: string\n    AllowList:\n      description: Enable allowList middleware for all endpoints\n      in: query\n      name: allowList\n      required: false\n      schema:\n        $ref: '#/components/schemas/BooleanQueryParam'\n    Authentication:\n      description: Enable/disable the authentication mechanism in your Tyk Gateway\n        for your OAS API\n      in: query\n      name: authentication\n      schema:\n        $ref: '#/components/schemas/BooleanQueryParam'\n    CustomDomain:\n      description: Custom domain for the API\n      example: tyk.io\n      in: query\n      name: customDomain\n      required: false\n      schema:\n        type: string\n    ListenPath:\n      description: Listen path for the API\n      example: /user-test/\n      in: query\n      name: listenPath\n      required: false\n      schema:\n        type: string\n    MockResponse:\n      description: Enable mockResponse middleware for all endpoints having responses\n        configured.\n      in: query\n      name: mockResponse\n      required: false\n      schema:\n        $ref: '#/components/schemas/BooleanQueryParam'\n    SearchText:\n      description: Search for API version name\n      example: Sample oas\n      in: query\n      name: searchText\n      required: false\n      schema:\n        type: string\n    UpstreamURL:\n      description: Upstream URL for the API\n      example: https://localhost:8080\n      in: query\n      name: upstreamURL\n      required: false\n      schema:\n        type: string\n    ValidateRequest:\n      description: Enable validateRequest middleware for all endpoints having a request\n        body with media type application/json\n      in: query\n      name: validateRequest\n      required: false\n      schema:\n        $ref: '#/components/schemas/BooleanQueryParam'\n  schemas:\n    APIAllCertificateBasics:\n      properties:\n        certs:\n          items:\n            $ref: '#/components/schemas/CertsCertificateBasics'\n          nullable: true\n          type: array\n      type: object\n    APIAllCertificates:\n      properties:\n        certs:\n          items:\n            type: string\n          nullable: true\n          type: array\n      type: object\n    APICertificateStatusMessage:\n      properties:\n        id:\n          example: 5e9d9544a1dcd60001d0ed207c440d66ebb0a4629d21329808dce9091acf5f2fde328067a6e60e5347271d90\n          type: string\n        message:\n          example: Certificate added\n          type: string\n        status:\n          example: ok\n          type: string\n      type: object\n    APIDefinition:\n      properties:\n        CORS:\n          $ref: '#/components/schemas/CORSConfig'\n        active:\n          type: boolean\n        allowed_ips:\n          items:\n            type: string\n          nullable: true\n          type: array\n        analytics_plugin:\n          $ref: '#/components/schemas/AnalyticsPluginConfig'\n        api_id:\n          type: string\n        auth:\n          $ref: '#/components/schemas/AuthConfig'\n        auth_configs:\n          additionalProperties:\n            $ref: '#/components/schemas/AuthConfig'\n          nullable: true\n          type: object\n        auth_provider:\n          $ref: '#/components/schemas/AuthProviderMeta'\n        base_identity_provided_by:\n          type: string\n        basic_auth:\n          properties:\n            body_password_regexp:\n              type: string\n            body_user_regexp:\n              type: string\n            cache_ttl:\n              type: integer\n            disable_caching:\n              type: boolean\n            extract_from_body:\n              type: boolean\n          type: object\n        blacklisted_ips:\n          items:\n            type: string\n          nullable: true\n          type: array\n        cache_options:\n          $ref: '#/components/schemas/CacheOptions'\n        certificate_pinning_disabled:\n          type: boolean\n        certificates:\n          items:\n            type: string\n          nullable: true\n          type: array\n        client_certificates:\n          items:\n            type: string\n          nullable: true\n          type: array\n        config_data:\n          additionalProperties: {}\n          nullable: true\n          type: object\n        config_data_disabled:\n          type: boolean\n        custom_middleware:\n          $ref: '#/components/schemas/MiddlewareSection'\n        custom_middleware_bundle:\n          type: string\n        custom_middleware_bundle_disabled:\n          type: boolean\n        custom_plugin_auth_enabled:\n          type: boolean\n        definition:\n          $ref: '#/components/schemas/VersionDefinition'\n        detailed_tracing:\n          type: boolean\n        disable_quota:\n          type: boolean\n        disable_rate_limit:\n          type: boolean\n        do_not_track:\n          type: boolean\n        domain:\n          type: string\n        domain_disabled:\n          type: boolean\n        dont_set_quota_on_create:\n          type: boolean\n        enable_batch_request_support:\n          type: boolean\n        enable_context_vars:\n          type: boolean\n        enable_coprocess_auth:\n          type: boolean\n        enable_detailed_recording:\n          type: boolean\n        enable_ip_blacklisting:\n          type: boolean\n        enable_ip_whitelisting:\n          type: boolean\n        enable_jwt:\n          type: boolean\n        enable_proxy_protocol:\n          type: boolean\n        enable_signature_checking:\n          type: boolean\n        event_handlers:\n          $ref: '#/components/schemas/EventHandlerMetaConfig'\n        expiration:\n          type: string\n        expire_analytics_after:\n          type: integer\n        external_oauth:\n          $ref: '#/components/schemas/ExternalOAuth'\n        global_rate_limit:\n          $ref: '#/components/schemas/GlobalRateLimit'\n        graphql:\n          $ref: '#/components/schemas/GraphQLConfig'\n        hmac_allowed_algorithms:\n          items:\n            type: string\n          nullable: true\n          type: array\n        hmac_allowed_clock_skew:\n          type: number\n        id:\n          type: string\n        idp_client_id_mapping_disabled:\n          type: boolean\n        internal:\n          type: boolean\n        is_oas:\n          type: boolean\n        jwt_client_base_field:\n          type: string\n        jwt_default_policies:\n          items:\n            type: string\n          nullable: true\n          type: array\n        jwt_expires_at_validation_skew:\n          minimum: 0\n          type: integer\n        jwt_identity_base_field:\n          type: string\n        jwt_issued_at_validation_skew:\n          minimum: 0\n          type: integer\n        jwt_not_before_validation_skew:\n          minimum: 0\n          type: integer\n        jwt_policy_field_name:\n          type: string\n        jwt_scope_claim_name:\n          type: string\n        jwt_scope_to_policy_mapping:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        jwt_signing_method:\n          type: string\n        jwt_skip_kid:\n          type: boolean\n        jwt_source:\n          type: string\n        listen_port:\n          type: integer\n        name:\n          type: string\n        notifications:\n          $ref: '#/components/schemas/NotificationsManager'\n        oauth_meta:\n          properties:\n            allowed_access_types:\n              items:\n                type: string\n              nullable: true\n              type: array\n            allowed_authorize_types:\n              items:\n                type: string\n              nullable: true\n              type: array\n            auth_login_redirect:\n              type: string\n          type: object\n        openid_options:\n          $ref: '#/components/schemas/OpenIDOptions'\n        org_id:\n          type: string\n        pinned_public_keys:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        protocol:\n          type: string\n        proxy:\n          $ref: '#/components/schemas/ProxyConfig'\n        request_signing:\n          $ref: '#/components/schemas/RequestSigningMeta'\n        response_processors:\n          items:\n            $ref: '#/components/schemas/ResponseProcessor'\n          nullable: true\n          type: array\n        scopes:\n          $ref: '#/components/schemas/Scopes'\n        session_lifetime:\n          type: integer\n        session_lifetime_respects_key_expiration:\n          type: boolean\n        session_provider:\n          $ref: '#/components/schemas/SessionProviderMeta'\n        slug:\n          type: string\n        strip_auth_data:\n          type: boolean\n        tag_headers:\n          items:\n            type: string\n          nullable: true\n          type: array\n        tags:\n          example:\n          - Default\n          - v1\n          items:\n            type: string\n          nullable: true\n          type: array\n        tags_disabled:\n          type: boolean\n        upstream_certificates:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        upstream_certificates_disabled:\n          type: boolean\n        uptime_tests:\n          $ref: '#/components/schemas/UptimeTests'\n        use_basic_auth:\n          type: boolean\n        use_go_plugin_auth:\n          type: boolean\n        use_keyless:\n          type: boolean\n        use_mutual_tls_auth:\n          type: boolean\n        use_oauth2:\n          type: boolean\n        use_openid:\n          type: boolean\n        use_standard_auth:\n          type: boolean\n        version_data:\n          $ref: \"#/components/schemas/VersionData\"\n        error_overrides:\n          additionalProperties:\n            items:\n              $ref: \"#/components/schemas/ErrorOverride\"\n            type: array\n          nullable: true\n          type: object\n        error_overrides_disabled:\n          type: boolean\n      type: object\n    APILimit:\n      properties:\n        max_query_depth:\n          type: integer\n        per:\n          type: number\n        quota_max:\n          type: integer\n        quota_remaining:\n          type: integer\n        quota_renewal_rate:\n          type: integer\n        quota_renews:\n          type: integer\n        rate:\n          type: number\n        smoothing:\n          $ref: '#/components/schemas/RateLimitSmoothing'\n        throttle_interval:\n          type: number\n        throttle_retry_limit:\n          type: integer\n      type: object\n    AccessDefinition:\n      properties:\n        allowance_scope:\n          example: d371b83b249845a2497ab9a947fd6210\n          type: string\n        allowed_types:\n          items:\n            $ref: '#/components/schemas/GraphqlType'\n          nullable: true\n          type: array\n        allowed_urls:\n          items:\n            $ref: '#/components/schemas/AccessSpec'\n          nullable: true\n          type: array\n        api_id:\n          example: d1dfc6a927a046c54c0ed470f19757cc\n          type: string\n        api_name:\n          example: Rate Limit Proxy API\n          type: string\n        disable_introspection:\n          example: false\n          type: boolean\n        endpoints:\n          $ref: '#/components/schemas/Endpoints'\n        field_access_rights:\n          items:\n            $ref: '#/components/schemas/FieldAccessDefinition'\n          nullable: true\n          type: array\n        limit:\n          $ref: '#/components/schemas/APILimit'\n        restricted_types:\n          items:\n            $ref: '#/components/schemas/GraphqlType'\n          nullable: true\n          type: array\n        versions:\n          example:\n          - Default\n          - v2\n          items:\n            type: string\n          nullable: true\n          type: array\n      type: object\n    AccessSpec:\n      properties:\n        methods:\n          example:\n          - GET\n          - POST\n          - DELETE\n          - PUT\n          items:\n            type: string\n          nullable: true\n          type: array\n        url:\n          example: anything/rate-limit-1-per-5\n          type: string\n      type: object\n    Allowance:\n      properties:\n        enabled:\n          type: boolean\n        ignoreCase:\n          type: boolean\n      type: object\n    AnalyticsPluginConfig:\n      properties:\n        enable:\n          type: boolean\n        func_name:\n          type: string\n        plugin_path:\n          type: string\n      type: object\n    ApiAllKeys:\n      properties:\n        keys:\n          items:\n            type: string\n          nullable: true\n          type: array\n      type: object\n    ApiModifyKeySuccess:\n      properties:\n        action:\n          example: modified\n          type: string\n        key:\n          example: b13d928b9972bd18\n          type: string\n        key_hash:\n          type: string\n        status:\n          example: ok\n          type: string\n      type: object\n    ApiStatusMessage:\n      properties:\n        message:\n          type: string\n        status:\n          type: string\n      type: object\n    AuthConfig:\n      properties:\n        auth_header_name:\n          example: Authorization\n          type: string\n        cookie_name:\n          type: string\n        disable_header:\n          type: boolean\n        name:\n          type: string\n        param_name:\n          type: string\n        signature:\n          $ref: '#/components/schemas/SignatureConfig'\n        use_certificate:\n          type: boolean\n        use_cookie:\n          type: boolean\n        use_param:\n          type: boolean\n        validate_signature:\n          type: boolean\n      type: object\n    AuthProviderMeta:\n      properties:\n        meta:\n          additionalProperties: {}\n          nullable: true\n          type: object\n        name:\n          type: string\n        storage_engine:\n          type: string\n      type: object\n    AuthSource:\n      properties:\n        enabled:\n          type: boolean\n        name:\n          type: string\n      type: object\n    AuthSources:\n      properties:\n        cookie:\n          $ref: '#/components/schemas/AuthSource'\n        header:\n          $ref: '#/components/schemas/AuthSource'\n        query:\n          $ref: '#/components/schemas/AuthSource'\n      type: object\n    Authentication:\n      properties:\n        baseIdentityProvider:\n          type: string\n        custom:\n          $ref: '#/components/schemas/CustomPluginAuthentication'\n        enabled:\n          type: boolean\n        hmac:\n          $ref: '#/components/schemas/HMAC'\n        oidc:\n          $ref: '#/components/schemas/OIDC'\n        securitySchemes:\n          $ref: '#/components/schemas/SecuritySchemes'\n        stripAuthorizationData:\n          type: boolean\n      type: object\n    AuthenticationPlugin:\n      properties:\n        enabled:\n          type: boolean\n        functionName:\n          type: string\n        idExtractor:\n          $ref: '#/components/schemas/IDExtractor'\n        path:\n          type: string\n        rawBodyOnly:\n          type: boolean\n      type: object\n    BasicAuthData:\n      properties:\n        hash_type:\n          type: string\n        password:\n          type: string\n      type: object\n    BatchReplyUnit:\n      properties:\n        body:\n          type: string\n        code:\n          type: integer\n        headers:\n          $ref: '#/components/schemas/HttpHeader'\n        relative_url:\n          type: string\n      type: object\n    BatchRequestStructure:\n      properties:\n        requests:\n          items:\n            $ref: '#/components/schemas/RequestDefinition'\n          nullable: true\n          type: array\n        suppress_parallel_execution:\n          type: boolean\n      type: object\n    RequestDefinition:\n      properties:\n        body:\n          type: string\n        headers:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        method:\n          type: string\n        relative_url:\n          type: string\n      type: object\n    BooleanQueryParam:\n      example: true\n      type: boolean\n    CORS:\n      properties:\n        allowCredentials:\n          type: boolean\n        allowedHeaders:\n          items:\n            type: string\n          type: array\n        allowedMethods:\n          items:\n            type: string\n          type: array\n        allowedOrigins:\n          items:\n            type: string\n          type: array\n        debug:\n          type: boolean\n        enabled:\n          type: boolean\n        exposedHeaders:\n          items:\n            type: string\n          type: array\n        maxAge:\n          type: integer\n        optionsPassthrough:\n          type: boolean\n      type: object\n    CORSConfig:\n      properties:\n        allow_credentials:\n          example: false\n          type: boolean\n        allowed_headers:\n          example:\n          - Origin\n          - Accept\n          - Content-Type\n          - Authorization\n          items:\n            type: string\n          nullable: true\n          type: array\n        allowed_methods:\n          example:\n          - GET\n          - HEAD\n          - POST\n          items:\n            type: string\n          nullable: true\n          type: array\n        allowed_origins:\n          example:\n          - https://*.foo.com\n          items:\n            type: string\n          nullable: true\n          type: array\n        debug:\n          example: true\n          type: boolean\n        enable:\n          example: false\n          type: boolean\n        exposed_headers:\n          example:\n          - Accept\n          - Content-Type\n          items:\n            type: string\n          nullable: true\n          type: array\n        max_age:\n          example: 24\n          type: integer\n        options_passthrough:\n          example: false\n          type: boolean\n      type: object\n    Cache:\n      properties:\n        cacheAllSafeRequests:\n          type: boolean\n        cacheByHeaders:\n          items:\n            type: string\n          type: array\n        cacheResponseCodes:\n          items:\n            type: integer\n          type: array\n        controlTTLHeaderName:\n          type: string\n        enableUpstreamCacheControl:\n          type: boolean\n        enabled:\n          type: boolean\n        timeout:\n          type: integer\n      type: object\n    CacheMeta:\n      properties:\n        cache_key_regex:\n          type: string\n        cache_response_codes:\n          items:\n            type: integer\n          nullable: true\n          type: array\n        disabled:\n          type: boolean\n        method:\n          type: string\n        path:\n          type: string\n        timeout:\n          format: int64\n          type: integer\n      type: object\n    CacheOptions:\n      properties:\n        cache_all_safe_requests:\n          example: false\n          type: boolean\n        cache_by_headers:\n          items:\n            type: string\n          nullable: true\n          type: array\n        cache_control_ttl_header:\n          type: string\n        cache_response_codes:\n          items:\n            type: integer\n          nullable: true\n          type: array\n        cache_timeout:\n          example: 60\n          format: int64\n          type: integer\n        enable_cache:\n          example: true\n          type: boolean\n        enable_upstream_cache_control:\n          example: false\n          type: boolean\n      type: object\n    CachePlugin:\n      properties:\n        cacheByRegex:\n          type: string\n        cacheResponseCodes:\n          items:\n            type: integer\n          type: array\n        enabled:\n          type: boolean\n        timeout:\n          type: integer\n      type: object\n    CertificatePinning:\n      properties:\n        domainToPublicKeysMapping:\n          $ref: '#/components/schemas/PinnedPublicKeys'\n        enabled:\n          type: boolean\n      type: object\n    CertsCertificateBasics:\n      properties:\n        dns_names:\n          items:\n            type: string\n          nullable: true\n          type: array\n        has_private:\n          type: boolean\n        id:\n          type: string\n        is_ca:\n          type: boolean\n        issuer_cn:\n          type: string\n        not_after:\n          format: date-time\n          type: string\n        not_before:\n          format: date-time\n          type: string\n        subject_cn:\n          type: string\n      type: object\n    CertsCertificateMeta:\n      properties:\n        dns_names:\n          example:\n          - .*tyk.io\n          items:\n            type: string\n          type: array\n        fingerprint:\n          example: 7c440d66ebb0a4629d21329808dce9091acf5f2fde328067a6e60e5347271d90\n          type: string\n        has_private:\n          example: false\n          type: boolean\n        id:\n          example: 5e9d9544a1dcd60001d0ed207c440d66ebb0a4629d21329808dce9091acf5f2fde328067a6e60e5347271d90\n          type: string\n        is_ca:\n          type: boolean\n        issuer:\n          $ref: '#/components/schemas/PkixName'\n        not_after:\n          example: \"2034-03-26T08:46:37Z\"\n          format: date-time\n          type: string\n        not_before:\n          example: \"2024-03-25T08:46:37Z\"\n          format: date-time\n          type: string\n        subject:\n          $ref: '#/components/schemas/PkixName'\n      type: object\n    CheckCommand:\n      properties:\n        message:\n          type: string\n        name:\n          type: string\n      type: object\n    CircuitBreaker:\n      properties:\n        coolDownPeriod:\n          type: integer\n        enabled:\n          type: boolean\n        halfOpenStateEnabled:\n          type: boolean\n        sampleSize:\n          type: integer\n        threshold:\n          type: number\n      type: object\n    CircuitBreakerMeta:\n      properties:\n        disable_half_open_state:\n          type: boolean\n        disabled:\n          type: boolean\n        method:\n          type: string\n        path:\n          type: string\n        return_to_service_after:\n          type: integer\n        samples:\n          format: int64\n          type: integer\n        threshold_percent:\n          type: number\n      type: object\n    ClientCertificates:\n      properties:\n        allowlist:\n          items:\n            type: string\n          nullable: true\n          type: array\n        enabled:\n          type: boolean\n      type: object\n    ClientToPolicy:\n      properties:\n        clientId:\n          type: string\n        policyId:\n          type: string\n      type: object\n    ContextVariables:\n      properties:\n        enabled:\n          type: boolean\n      type: object\n    CustomPlugin:\n      properties:\n        enabled:\n          type: boolean\n        functionName:\n          type: string\n        path:\n          type: string\n        rawBodyOnly:\n          type: boolean\n        requireSession:\n          type: boolean\n      type: object\n    CustomPluginAuthentication:\n      properties:\n        AuthSources:\n          $ref: '#/components/schemas/AuthSources'\n        config:\n          $ref: '#/components/schemas/AuthenticationPlugin'\n        enabled:\n          type: boolean\n      type: object\n    CustomPlugins:\n      items:\n        $ref: '#/components/schemas/CustomPlugin'\n      type: array\n    DatasourceMappingConfiguration:\n      properties:\n        disabled:\n          type: boolean\n        path:\n          type: string\n      type: object\n    DatasourceSourceConfig:\n      properties:\n        data_source_config: {}\n        kind:\n          type: string\n      type: object\n    DatasourceTypeFieldConfiguration:\n      properties:\n        data_source:\n          $ref: '#/components/schemas/DatasourceSourceConfig'\n        field_name:\n          type: string\n        mapping:\n          $ref: '#/components/schemas/DatasourceMappingConfiguration'\n        type_name:\n          type: string\n      type: object\n    DetailedActivityLogs:\n      properties:\n        enabled:\n          type: boolean\n      type: object\n    DetailedTracing:\n      properties:\n        enabled:\n          type: boolean\n      type: object\n    Domain:\n      properties:\n        certificates:\n          items:\n            type: string\n          type: array\n        enabled:\n          type: boolean\n        name:\n          type: string\n      type: object\n    DomainToCertificate:\n      properties:\n        certificate:\n          type: string\n        domain:\n          type: string\n      type: object\n    ErrorMatcher:\n      properties:\n        body_field:\n          type: string\n        body_value:\n          type: string\n        flag:\n          type: string\n        message_pattern:\n          type: string\n      type: object\n    ErrorOverride:\n      properties:\n        match:\n          $ref: '#/components/schemas/ErrorMatcher'\n        response:\n          $ref: '#/components/schemas/ErrorResponse'\n      type: object\n    ErrorResponse:\n      properties:\n        body:\n          type: string\n        headers:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        message:\n          type: string\n        status_code:\n          type: integer\n        template:\n          type: string\n      type: object\n    EndPointMeta:\n      properties:\n        disabled:\n          type: boolean\n        ignore_case:\n          type: boolean\n        method:\n          type: string\n        method_actions:\n          additionalProperties:\n            $ref: '#/components/schemas/EndpointMethodMeta'\n          type: object\n        path:\n          type: string\n      type: object\n    Endpoint:\n      properties:\n        methods:\n          $ref: '#/components/schemas/EndpointMethods'\n        path:\n          type: string\n      type: object\n    EndpointMethod:\n      properties:\n        limit:\n          $ref: '#/components/schemas/RateLimitType2'\n        name:\n          type: string\n      type: object\n    EndpointMethodMeta:\n      properties:\n        action:\n          enum:\n          - no_action\n          - reply\n          type: string\n        code:\n          type: integer\n        data:\n          type: string\n        headers:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n      type: object\n    EndpointMethods:\n      items:\n        $ref: '#/components/schemas/EndpointMethod'\n      type: array\n    EndpointPostPlugin:\n      properties:\n        enabled:\n          type: boolean\n        functionName:\n          type: string\n        name:\n          type: string\n        path:\n          type: string\n      type: object\n    EndpointPostPlugins:\n      items:\n        $ref: '#/components/schemas/EndpointPostPlugin'\n      type: array\n    Endpoints:\n      items:\n        $ref: '#/components/schemas/Endpoint'\n      type: array\n    EnforceTimeout:\n      properties:\n        enabled:\n          type: boolean\n        value:\n          type: integer\n      type: object\n    EventHandler:\n      properties:\n        enabled:\n          type: boolean\n        id:\n          type: string\n        name:\n          type: string\n        trigger:\n          type: string\n        type:\n          type: string\n      type: object\n    EventHandlerMetaConfig:\n      properties:\n        events:\n          additionalProperties:\n            items:\n              $ref: '#/components/schemas/EventHandlerTriggerConfig'\n            type: array\n          nullable: true\n          type: object\n      type: object\n    EventHandlerTriggerConfig:\n      properties:\n        handler_meta:\n          additionalProperties: {}\n          nullable: true\n          type: object\n        handler_name:\n          type: string\n      type: object\n    EventHandlers:\n      items:\n        $ref: '#/components/schemas/EventHandler'\n      type: array\n    ExtendedPathsSet:\n      properties:\n        advance_cache_config:\n          items:\n            $ref: '#/components/schemas/CacheMeta'\n          type: array\n        black_list:\n          items:\n            $ref: '#/components/schemas/EndPointMeta'\n          type: array\n        cache:\n          items:\n            type: string\n          type: array\n        circuit_breakers:\n          items:\n            $ref: '#/components/schemas/CircuitBreakerMeta'\n          type: array\n        do_not_track_endpoints:\n          items:\n            $ref: '#/components/schemas/TrackEndpointMeta'\n          type: array\n        go_plugin:\n          items:\n            $ref: '#/components/schemas/GoPluginMeta'\n          type: array\n        hard_timeouts:\n          items:\n            $ref: '#/components/schemas/HardTimeoutMeta'\n          type: array\n        ignored:\n          items:\n            $ref: '#/components/schemas/EndPointMeta'\n          type: array\n        internal:\n          items:\n            $ref: '#/components/schemas/InternalMeta'\n          type: array\n        method_transforms:\n          items:\n            $ref: '#/components/schemas/MethodTransformMeta'\n          type: array\n        mock_response:\n          items:\n            $ref: '#/components/schemas/MockResponseMeta'\n          type: array\n        persist_graphql:\n          items:\n            $ref: '#/components/schemas/PersistGraphQLMeta'\n          nullable: true\n          type: array\n        rate_limit:\n          items:\n            $ref: '#/components/schemas/RateLimitMeta'\n          nullable: true\n          type: array\n        size_limits:\n          items:\n            $ref: '#/components/schemas/RequestSizeMeta'\n          type: array\n        track_endpoints:\n          items:\n            $ref: '#/components/schemas/TrackEndpointMeta'\n          type: array\n        transform:\n          items:\n            $ref: '#/components/schemas/TemplateMeta'\n          type: array\n        transform_headers:\n          items:\n            $ref: '#/components/schemas/HeaderInjectionMeta'\n          type: array\n        transform_jq:\n          items:\n            $ref: '#/components/schemas/TransformJQMeta'\n          type: array\n        transform_jq_response:\n          items:\n            $ref: '#/components/schemas/TransformJQMeta'\n          type: array\n        transform_response:\n          items:\n            $ref: '#/components/schemas/TemplateMeta'\n          type: array\n        transform_response_headers:\n          items:\n            $ref: '#/components/schemas/HeaderInjectionMeta'\n          type: array\n        url_rewrites:\n          items:\n            $ref: '#/components/schemas/URLRewriteMeta'\n          type: array\n        validate_json:\n          items:\n            $ref: '#/components/schemas/ValidatePathMeta'\n          type: array\n        validate_request:\n          items:\n            $ref: '#/components/schemas/ValidateRequestMeta'\n          type: array\n        virtual:\n          items:\n            $ref: '#/components/schemas/VirtualMeta'\n          type: array\n        white_list:\n          items:\n            $ref: '#/components/schemas/EndPointMeta'\n          type: array\n      type: object\n    ExternalOAuth:\n      properties:\n        enabled:\n          type: boolean\n        providers:\n          items:\n            $ref: '#/components/schemas/Provider'\n          nullable: true\n          type: array\n      type: object\n    FieldAccessDefinition:\n      properties:\n        field_name:\n          type: string\n        limits:\n          $ref: '#/components/schemas/FieldLimits'\n        type_name:\n          type: string\n      type: object\n    FieldLimits:\n      properties:\n        max_query_depth:\n          type: integer\n      type: object\n    FromOASExamples:\n      properties:\n        code:\n          type: integer\n        contentType:\n          type: string\n        enabled:\n          type: boolean\n        exampleName:\n          type: string\n      type: object\n    GatewayTags:\n      properties:\n        enabled:\n          type: boolean\n        tags:\n          items:\n            type: string\n          nullable: true\n          type: array\n      type: object\n    Global:\n      properties:\n        cache:\n          $ref: '#/components/schemas/Cache'\n        contextVariables:\n          $ref: '#/components/schemas/ContextVariables'\n        cors:\n          $ref: '#/components/schemas/CORS'\n        pluginConfig:\n          $ref: '#/components/schemas/PluginConfig'\n        postAuthenticationPlugin:\n          $ref: '#/components/schemas/PostAuthenticationPlugin'\n        postAuthenticationPlugins:\n          $ref: '#/components/schemas/CustomPlugins'\n        postPlugin:\n          $ref: '#/components/schemas/PostPlugin'\n        postPlugins:\n          $ref: '#/components/schemas/CustomPlugins'\n        prePlugin:\n          $ref: '#/components/schemas/PrePlugin'\n        prePlugins:\n          $ref: '#/components/schemas/CustomPlugins'\n        responsePlugin:\n          $ref: '#/components/schemas/ResponsePlugin'\n        responsePlugins:\n          $ref: '#/components/schemas/CustomPlugins'\n        trafficLogs:\n          $ref: '#/components/schemas/TrafficLogs'\n        transformRequestHeaders:\n          $ref: '#/components/schemas/TransformHeaders'\n        transformResponseHeaders:\n          $ref: '#/components/schemas/TransformHeaders'\n      type: object\n    GlobalRateLimit:\n      properties:\n        disabled:\n          type: boolean\n        per:\n          type: number\n        rate:\n          type: number\n      type: object\n    GoPluginMeta:\n      properties:\n        disabled:\n          type: boolean\n        func_name:\n          type: string\n        method:\n          type: string\n        path:\n          type: string\n        plugin_path:\n          type: string\n      type: object\n    GraphAccessDefinition:\n      type: object\n    GraphQLConfig:\n      properties:\n        enabled:\n          type: boolean\n        engine:\n          $ref: '#/components/schemas/GraphQLEngineConfig'\n        execution_mode:\n          enum:\n          - proxyOnly\n          - executionEngine\n          - subgraph\n          - supergraph\n          - \"\"  # Allow empty string\n          type: string\n        introspection:\n          $ref: '#/components/schemas/GraphQLIntrospectionConfig'\n        last_schema_update:\n          format: date-time\n          nullable: true\n          type: string\n        playground:\n          $ref: '#/components/schemas/GraphQLPlayground'\n        proxy:\n          $ref: '#/components/schemas/GraphQLProxyConfig'\n        schema:\n          type: string\n        subgraph:\n          $ref: '#/components/schemas/GraphQLSubgraphConfig'\n        supergraph:\n          $ref: '#/components/schemas/GraphQLSupergraphConfig'\n        type_field_configurations:\n          items:\n            $ref: '#/components/schemas/DatasourceTypeFieldConfiguration'\n          nullable: true\n          type: array\n        version:\n          enum:\n          - \"1\"\n          - \"2\"\n          - \"\"  # Allow empty string\n          type: string\n      type: object\n    GraphQLEngineConfig:\n      properties:\n        data_sources:\n          items:\n            $ref: '#/components/schemas/GraphQLEngineDataSource'\n          nullable: true\n          type: array\n        field_configs:\n          items:\n            $ref: '#/components/schemas/GraphQLFieldConfig'\n          nullable: true\n          type: array\n        global_headers:\n          items:\n            $ref: '#/components/schemas/UDGGlobalHeader'\n          nullable: true\n          type: array\n      type: object\n    GraphQLEngineDataSource:\n      properties:\n        config: {}\n        internal:\n          type: boolean\n        kind:\n          type: string\n        name:\n          type: string\n        root_fields:\n          items:\n            $ref: '#/components/schemas/GraphQLTypeFields'\n          nullable: true\n          type: array\n      type: object\n    GraphQLFieldConfig:\n      properties:\n        disable_default_mapping:\n          type: boolean\n        field_name:\n          type: string\n        path:\n          items:\n            type: string\n          nullable: true\n          type: array\n        type_name:\n          type: string\n      type: object\n    GraphQLIntrospectionConfig:\n      properties:\n        disabled:\n          type: boolean\n      type: object\n    GraphQLPlayground:\n      properties:\n        enabled:\n          type: boolean\n        path:\n          type: string\n      type: object\n    GraphQLProxyConfig:\n      properties:\n        auth_headers:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        features:\n          $ref: '#/components/schemas/GraphQLProxyFeaturesConfig'\n        request_headers:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        request_headers_rewrite:\n          additionalProperties:\n            $ref: '#/components/schemas/RequestHeadersRewriteConfig'\n          nullable: true\n          type: object\n        subscription_type:\n          type: string\n        use_response_extensions:\n          $ref: '#/components/schemas/GraphQLResponseExtensions'\n      type: object\n    GraphQLProxyFeaturesConfig:\n      properties:\n        use_immutable_headers:\n          type: boolean\n      type: object\n    GraphQLResponseExtensions:\n      properties:\n        on_error_forwarding:\n          type: boolean\n      type: object\n    GraphQLSubgraphConfig:\n      properties:\n        sdl:\n          type: string\n      type: object\n    GraphQLSubgraphEntity:\n      properties:\n        api_id:\n          type: string\n        headers:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        name:\n          type: string\n        sdl:\n          type: string\n        subscription_type:\n          type: string\n        url:\n          type: string\n      type: object\n    GraphQLSupergraphConfig:\n      properties:\n        disable_query_batching:\n          type: boolean\n        global_headers:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        merged_sdl:\n          type: string\n        subgraphs:\n          items:\n            $ref: '#/components/schemas/GraphQLSubgraphEntity'\n          nullable: true\n          type: array\n        updated_at:\n          format: date-time\n          nullable: true\n          type: string\n      type: object\n    GraphQLTypeFields:\n      properties:\n        fields:\n          items:\n            type: string\n          nullable: true\n          type: array\n        type:\n          type: string\n      type: object\n    GraphqlType:\n      properties:\n        fields:\n          items:\n            type: string\n          nullable: true\n          type: array\n        name:\n          type: string\n      type: object\n    HMAC:\n      properties:\n        AuthSources:\n          $ref: '#/components/schemas/AuthSources'\n        allowedAlgorithms:\n          items:\n            type: string\n          type: array\n        allowedClockSkew:\n          type: number\n        enabled:\n          type: boolean\n      type: object\n    HardTimeoutMeta:\n      properties:\n        disabled:\n          type: boolean\n        method:\n          type: string\n        path:\n          type: string\n        timeout:\n          type: integer\n      type: object\n    Header:\n      properties:\n        name:\n          type: string\n        value:\n          type: string\n      type: object\n    HeaderInjectionMeta:\n      properties:\n        act_on:\n          type: boolean\n        add_headers:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        delete_headers:\n          items:\n            type: string\n          nullable: true\n          type: array\n        disabled:\n          type: boolean\n        method:\n          type: string\n        path:\n          type: string\n      type: object\n    Headers:\n      items:\n        $ref: '#/components/schemas/Header'\n      type: array\n    HealthCheckItem:\n      properties:\n        componentId:\n          type: string\n        componentType:\n          type: string\n        output:\n          type: string\n        status:\n          enum:\n          - pass\n          - fail\n          - warn\n          type: string\n        time:\n          type: string\n      type: object\n    HealthCheckResponse:\n      properties:\n        description:\n          type: string\n        details:\n          additionalProperties:\n            $ref: '#/components/schemas/HealthCheckItem'\n          type: object\n        output:\n          type: string\n        status:\n          enum:\n          - pass\n          - fail\n          - warn\n          type: string\n        version:\n          type: string\n      type: object\n    HostCheckObject:\n      properties:\n        body:\n          type: string\n        commands:\n          items:\n            $ref: '#/components/schemas/CheckCommand'\n          nullable: true\n          type: array\n        enable_proxy_protocol:\n          type: boolean\n        headers:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        method:\n          type: string\n        protocol:\n          type: string\n        timeout:\n          type: integer\n        url:\n          type: string\n      type: object\n    HttpHeader:\n      additionalProperties:\n        items:\n          type: string\n        type: array\n      type: object\n    IDExtractor:\n      properties:\n        config:\n          $ref: '#/components/schemas/IDExtractorConfig'\n        enabled:\n          type: boolean\n        source:\n          type: string\n        with:\n          type: string\n      type: object\n    IDExtractorConfig:\n      properties:\n        formParamName:\n          type: string\n        headerName:\n          type: string\n        regexp:\n          type: string\n        regexpMatchIndex:\n          type: integer\n        xPathExp:\n          type: string\n      type: object\n    Info:\n      properties:\n        dbId:\n          type: string\n        expiration:\n          type: string\n        id:\n          type: string\n        name:\n          type: string\n        orgId:\n          type: string\n        state:\n          $ref: '#/components/schemas/State'\n        versioning:\n          $ref: '#/components/schemas/Versioning'\n      type: object\n    Internal:\n      properties:\n        enabled:\n          type: boolean\n      type: object\n    InternalMeta:\n      properties:\n        disabled:\n          type: boolean\n        method:\n          type: string\n        path:\n          type: string\n      type: object\n    Introspection:\n      properties:\n        cache:\n          $ref: '#/components/schemas/IntrospectionCache'\n        client_id:\n          type: string\n        client_secret:\n          type: string\n        enabled:\n          type: boolean\n        identity_base_field:\n          type: string\n        url:\n          type: string\n      type: object\n    IntrospectionCache:\n      properties:\n        enabled:\n          type: boolean\n        timeout:\n          format: int64\n          type: integer\n      type: object\n    JWTData:\n      properties:\n        secret:\n          type: string\n      type: object\n    JWTValidation:\n      properties:\n        enabled:\n          type: boolean\n        expires_at_validation_skew:\n          minimum: 0\n          type: integer\n        identity_base_field:\n          type: string\n        issued_at_validation_skew:\n          minimum: 0\n          type: integer\n        not_before_validation_skew:\n          minimum: 0\n          type: integer\n        signing_method:\n          type: string\n        source:\n          type: string\n      type: object\n    ListenPath:\n      properties:\n        strip:\n          type: boolean\n        value:\n          type: string\n      type: object\n    MethodTransformMeta:\n      properties:\n        disabled:\n          type: boolean\n        method:\n          type: string\n        path:\n          type: string\n        to_method:\n          type: string\n      type: object\n    Middleware:\n      properties:\n        global:\n          $ref: '#/components/schemas/Global'\n        operations:\n          $ref: '#/components/schemas/Operations'\n      type: object\n    MiddlewareDefinition:\n      properties:\n        disabled:\n          type: boolean\n        name:\n          example: PreMiddlewareFunction\n          type: string\n        path:\n          type: string\n        raw_body_only:\n          example: false\n          type: boolean\n        require_session:\n          example: false\n          type: boolean\n      type: object\n    MiddlewareIdExtractor:\n      properties:\n        disabled:\n          type: boolean\n        extract_from:\n          type: string\n        extract_with:\n          type: string\n        extractor_config:\n          additionalProperties: {}\n          nullable: true\n          type: object\n      type: object\n    MiddlewareSection:\n      properties:\n        auth_check:\n          $ref: '#/components/schemas/MiddlewareDefinition'\n        driver:\n          type: string\n        id_extractor:\n          $ref: '#/components/schemas/MiddlewareIdExtractor'\n        post:\n          items:\n            $ref: '#/components/schemas/MiddlewareDefinition'\n          nullable: true\n          type: array\n        post_key_auth:\n          items:\n            $ref: '#/components/schemas/MiddlewareDefinition'\n          nullable: true\n          type: array\n        pre:\n          items:\n            $ref: '#/components/schemas/MiddlewareDefinition'\n          nullable: true\n          type: array\n        response:\n          items:\n            $ref: '#/components/schemas/MiddlewareDefinition'\n          nullable: true\n          type: array\n      type: object\n    MockResponse:\n      properties:\n        body:\n          type: string\n        code:\n          type: integer\n        enabled:\n          type: boolean\n        fromOASExamples:\n          $ref: '#/components/schemas/FromOASExamples'\n        headers:\n          $ref: '#/components/schemas/Headers'\n      type: object\n    MockResponseMeta:\n      properties:\n        body:\n          type: string\n        code:\n          type: integer\n        disabled:\n          type: boolean\n        headers:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        ignore_case:\n          type: boolean\n        method:\n          type: string\n        path:\n          type: string\n      type: object\n    Monitor:\n      properties:\n        trigger_limits:\n          example:\n          - 80\n          - 60\n          - 50\n          items:\n            type: number\n          nullable: true\n          type: array\n      type: object\n    MutualTLS:\n      properties:\n        domainToCertificateMapping:\n          items:\n            $ref: '#/components/schemas/DomainToCertificate'\n          nullable: true\n          type: array\n        enabled:\n          type: boolean\n      type: object\n    NewClientRequest:\n      properties:\n        api_id:\n          example: keyless\n          type: string\n        client_id:\n          example: 2a06b398c17f46908de3dffcb71ef87b\n          type: string\n        description:\n          example: google client login\n          type: string\n        meta_data:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        policy_id:\n          type: string\n        redirect_uri:\n          example: https://httpbin.org/ip\n          type: string\n        secret:\n          example: MmQwNTI5NGQtYjU0YS00NjMyLWIwZjktNTZjY2M1ZjhjYWY0\n          type: string\n      type: object\n    NotificationsManager:\n      properties:\n        oauth_on_keychange_url:\n          type: string\n        shared_secret:\n          type: string\n      type: object\n    OASSchemaResponse:\n      properties:\n        message:\n          type: string\n        schema: {}\n        status:\n          type: string\n      type: object\n    OAuthClientToken:\n      properties:\n        code:\n          type: string\n        expires:\n          type: integer\n      type: object\n    OIDC:\n      properties:\n        AuthSources:\n          $ref: '#/components/schemas/AuthSources'\n        enabled:\n          type: boolean\n        providers:\n          items:\n            $ref: '#/components/schemas/ProviderType2'\n          type: array\n        scopes:\n          $ref: '#/components/schemas/ScopesType2'\n        segregateByClientId:\n          type: boolean\n      type: object\n    OIDProviderConfig:\n      properties:\n        client_ids:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        issuer:\n          type: string\n      type: object\n    OpenIDOptions:\n      properties:\n        providers:\n          items:\n            $ref: '#/components/schemas/OIDProviderConfig'\n          nullable: true\n          type: array\n        segregate_by_client:\n          type: boolean\n      type: object\n    Operation:\n      properties:\n        allow:\n          $ref: '#/components/schemas/Allowance'\n        block:\n          $ref: '#/components/schemas/Allowance'\n        cache:\n          $ref: '#/components/schemas/CachePlugin'\n        circuitBreaker:\n          $ref: '#/components/schemas/CircuitBreaker'\n        doNotTrackEndpoint:\n          $ref: '#/components/schemas/TrackEndpoint'\n        enforceTimeout:\n          $ref: '#/components/schemas/EnforceTimeout'\n        ignoreAuthentication:\n          $ref: '#/components/schemas/Allowance'\n        internal:\n          $ref: '#/components/schemas/Internal'\n        mockResponse:\n          $ref: '#/components/schemas/MockResponse'\n        postPlugins:\n          $ref: '#/components/schemas/EndpointPostPlugins'\n        rateLimit:\n          $ref: '#/components/schemas/RateLimitEndpoint'\n        requestSizeLimit:\n          $ref: '#/components/schemas/RequestSizeLimit'\n        trackEndpoint:\n          $ref: '#/components/schemas/TrackEndpoint'\n        transformRequestBody:\n          $ref: '#/components/schemas/TransformBody'\n        transformRequestHeaders:\n          $ref: '#/components/schemas/TransformHeaders'\n        transformRequestMethod:\n          $ref: '#/components/schemas/TransformRequestMethod'\n        transformResponseBody:\n          $ref: '#/components/schemas/TransformBody'\n        transformResponseHeaders:\n          $ref: '#/components/schemas/TransformHeaders'\n        urlRewrite:\n          $ref: '#/components/schemas/URLRewrite'\n        validateRequest:\n          $ref: '#/components/schemas/ValidateRequest'\n        virtualEndpoint:\n          $ref: '#/components/schemas/VirtualEndpoint'\n      type: object\n    Operations:\n      additionalProperties:\n        $ref: '#/components/schemas/Operation'\n      type: object\n    PaginatedOAuthClientTokens:\n      properties:\n        Pagination:\n          $ref: '#/components/schemas/PaginationStatus'\n        Tokens:\n          items:\n            $ref: '#/components/schemas/OAuthClientToken'\n          nullable: true\n          type: array\n      type: object\n    PaginationStatus:\n      properties:\n        page_num:\n          type: integer\n        page_size:\n          type: integer\n        page_total:\n          type: integer\n      type: object\n    PersistGraphQLMeta:\n      properties:\n        method:\n          type: string\n        operation:\n          type: string\n        path:\n          type: string\n        variables:\n          additionalProperties: {}\n          nullable: true\n          type: object\n      type: object\n    PinnedPublicKey:\n      properties:\n        domain:\n          type: string\n        publicKeys:\n          items:\n            type: string\n          nullable: true\n          type: array\n      type: object\n    PinnedPublicKeys:\n      items:\n        $ref: '#/components/schemas/PinnedPublicKey'\n      nullable: true\n      type: array\n    PkixName:\n      type: object\n    PluginBundle:\n      properties:\n        enabled:\n          type: boolean\n        path:\n          type: string\n      type: object\n    PluginConfig:\n      properties:\n        bundle:\n          $ref: '#/components/schemas/PluginBundle'\n        data:\n          $ref: '#/components/schemas/PluginConfigData'\n        driver:\n          type: string\n      type: object\n    PluginConfigData:\n      properties:\n        enabled:\n          type: boolean\n        value:\n          additionalProperties: {}\n          nullable: true\n          type: object\n      type: object\n    Policy:\n      properties:\n        _id:\n          example: 5ead7120575961000181867e\n          type: string\n        access_rights:\n          additionalProperties:\n            $ref: '#/components/schemas/AccessDefinition'\n          nullable: true\n          type: object\n        active:\n          example: true\n          type: boolean\n        enable_http_signature_validation:\n          example: false\n          type: boolean\n        graphql_access_rights:\n          additionalProperties:\n            $ref: '#/components/schemas/GraphAccessDefinition'\n          nullable: true\n          type: object\n        hmac_enabled:\n          example: false\n          type: boolean\n        id:\n          example: 5ead7120575961000181867e\n          type: string\n        is_inactive:\n          example: false\n          type: boolean\n        key_expires_in:\n          example: 0\n          format: int64\n          type: integer\n        last_updated:\n          example: \"1655965189\"\n          type: string\n        max_query_depth:\n          example: -1\n          type: integer\n        meta_data:\n          additionalProperties: {}\n          nullable: true\n          type: object\n        name:\n          example: Swagger Petstore Policy\n          type: string\n        org_id:\n          example: 5e9d9544a1dcd60001d0ed20\n          type: string\n        partitions:\n          $ref: '#/components/schemas/PolicyPartitions'\n        per:\n          example: 60\n          format: double\n          type: number\n        post_expiry_action:\n          description: Defines the action to take on a Session in Redis after it expires. Valid values are \"retain\" and \"delete\".\n          example: delete\n          type: string\n          enum:\n            - retain\n            - delete\n        post_expiry_grace_period:\n          description: Duration in seconds to retain a Session in Redis after it expires. Used with post_expiry_action \"retain\". Set to -1 to retain indefinitely.\n          example: 0\n          format: int64\n          type: integer\n        quota_max:\n          example: -1\n          format: int64\n          type: integer\n        quota_renewal_rate:\n          example: 3600\n          format: int64\n          type: integer\n        rate:\n          example: 1000\n          format: double\n          type: number\n        smoothing:\n          $ref: '#/components/schemas/RateLimitSmoothing'\n        tags:\n          items:\n            type: string\n          nullable: true\n          type: array\n        throttle_interval:\n          example: -1\n          format: double\n          type: number\n        throttle_retry_limit:\n          example: -1\n          type: integer\n      type: object\n    PolicyPartitions:\n      properties:\n        acl:\n          example: true\n          type: boolean\n        complexity:\n          example: false\n          type: boolean\n        per_api:\n          example: false\n          type: boolean\n        quota:\n          example: true\n          type: boolean\n        rate_limit:\n          example: true\n          type: boolean\n      type: object\n    PolicyUpdateObj:\n      properties:\n        apply_policies:\n          items:\n            type: string\n          nullable: true\n          type: array\n        policy:\n          type: string\n      type: object\n    PostAuthenticationPlugin:\n      properties:\n        plugins:\n          $ref: '#/components/schemas/CustomPlugins'\n      type: object\n    PostPlugin:\n      properties:\n        plugins:\n          $ref: '#/components/schemas/CustomPlugins'\n      type: object\n    PrePlugin:\n      properties:\n        plugins:\n          $ref: '#/components/schemas/CustomPlugins'\n      type: object\n    Provider:\n      properties:\n        introspection:\n          $ref: '#/components/schemas/Introspection'\n        jwt:\n          $ref: '#/components/schemas/JWTValidation'\n      type: object\n    ProviderType2:\n      properties:\n        clientToPolicyMapping:\n          items:\n            $ref: '#/components/schemas/ClientToPolicy'\n          type: array\n        issuer:\n          type: string\n      type: object\n    ProxyConfig:\n      properties:\n        check_host_against_uptime_tests:\n          type: boolean\n        disable_strip_slash:\n          type: boolean\n        enable_load_balancing:\n          type: boolean\n        listen_path:\n          example: /relative-path-examples/\n          type: string\n        preserve_host_header:\n          type: boolean\n        service_discovery:\n          $ref: '#/components/schemas/ServiceDiscoveryConfiguration'\n        strip_listen_path:\n          example: true\n          type: boolean\n        target_list:\n          items:\n            type: string\n          nullable: true\n          type: array\n        target_url:\n          example: https://httpbin.org/\n          type: string\n        transport:\n          properties:\n            proxy_url:\n              type: string\n            ssl_ciphers:\n              items:\n                type: string\n              nullable: true\n              type: array\n            ssl_force_common_name_check:\n              type: boolean\n            ssl_insecure_skip_verify:\n              type: boolean\n            ssl_max_version:\n              minimum: 0\n              type: integer\n            ssl_min_version:\n              minimum: 0\n              type: integer\n          type: object\n      type: object\n    RateLimit:\n      properties:\n        enabled:\n          type: boolean\n        per:\n          type: integer\n        rate:\n          type: integer\n      type: object\n    RateLimitEndpoint:\n      properties:\n        enabled:\n          type: boolean\n        per:\n          type: integer\n        rate:\n          type: integer\n      type: object\n    RateLimitMeta:\n      properties:\n        disabled:\n          type: boolean\n        method:\n          type: string\n        path:\n          type: string\n        per:\n          type: number\n        rate:\n          type: number\n      type: object\n    RateLimitSmoothing:\n      properties:\n        delay:\n          type: integer\n        enabled:\n          type: boolean\n        step:\n          type: integer\n        threshold:\n          type: integer\n        trigger:\n          type: number\n      type: object\n      nullable: true\n    RateLimitType2:\n      properties:\n        per:\n          type: number\n        rate:\n          type: number\n        smoothing:\n          $ref: '#/components/schemas/RateLimitSmoothing'\n      type: object\n    RequestHeadersRewriteConfig:\n      properties:\n        remove:\n          type: boolean\n        value:\n          type: string\n      type: object\n    RequestSigningMeta:\n      properties:\n        algorithm:\n          type: string\n        certificate_id:\n          type: string\n        header_list:\n          items:\n            type: string\n          nullable: true\n          type: array\n        is_enabled:\n          type: boolean\n        key_id:\n          type: string\n        secret:\n          type: string\n        signature_header:\n          type: string\n      type: object\n    RequestSizeLimit:\n      properties:\n        enabled:\n          type: boolean\n        value:\n          type: integer\n      type: object\n    RequestSizeMeta:\n      properties:\n        disabled:\n          type: boolean\n        method:\n          type: string\n        path:\n          type: string\n        size_limit:\n          format: int64\n          type: integer\n      type: object\n    ResponsePlugin:\n      properties:\n        plugins:\n          $ref: '#/components/schemas/CustomPlugins'\n      type: object\n    ResponseProcessor:\n      properties:\n        name:\n          type: string\n        options: {}\n      type: object\n    RoutingTrigger:\n      properties:\n        \"on\":\n          enum:\n          - all\n          - any\n          type: string\n        options:\n          $ref: '#/components/schemas/RoutingTriggerOptions'\n        rewrite_to:\n          type: string\n      type: object\n    RoutingTriggerOptions:\n      properties:\n        header_matches:\n          additionalProperties:\n            $ref: '#/components/schemas/StringRegexMap'\n          nullable: true\n          type: object\n        path_part_matches:\n          additionalProperties:\n            $ref: '#/components/schemas/StringRegexMap'\n          nullable: true\n          type: object\n        payload_matches:\n          $ref: '#/components/schemas/StringRegexMap'\n        query_val_matches:\n          additionalProperties:\n            $ref: '#/components/schemas/StringRegexMap'\n          nullable: true\n          type: object\n        request_context_matches:\n          additionalProperties:\n            $ref: '#/components/schemas/StringRegexMap'\n          nullable: true\n          type: object\n        session_meta_matches:\n          additionalProperties:\n            $ref: '#/components/schemas/StringRegexMap'\n          nullable: true\n          type: object\n      type: object\n    ScopeClaim:\n      properties:\n        scope_claim_name:\n          type: string\n        scope_to_policy:\n          additionalProperties:\n            type: string\n          type: object\n      type: object\n    ScopeToPolicy:\n      properties:\n        policyId:\n          type: string\n        scope:\n          type: string\n      type: object\n    Scopes:\n      properties:\n        jwt:\n          $ref: '#/components/schemas/ScopeClaim'\n        oidc:\n          $ref: '#/components/schemas/ScopeClaim'\n      type: object\n    ScopesType2:\n      properties:\n        claimName:\n          type: string\n        scopeToPolicyMapping:\n          items:\n            $ref: '#/components/schemas/ScopeToPolicy'\n          type: array\n      type: object\n    SecuritySchemes:\n      additionalProperties: {}\n      type: object\n    Server:\n      properties:\n        authentication:\n          $ref: '#/components/schemas/Authentication'\n        clientCertificates:\n          $ref: '#/components/schemas/ClientCertificates'\n        customDomain:\n          $ref: '#/components/schemas/Domain'\n        detailedActivityLogs:\n          $ref: '#/components/schemas/DetailedActivityLogs'\n        detailedTracing:\n          $ref: '#/components/schemas/DetailedTracing'\n        eventHandlers:\n          $ref: '#/components/schemas/EventHandlers'\n        gatewayTags:\n          $ref: '#/components/schemas/GatewayTags'\n        listenPath:\n          $ref: '#/components/schemas/ListenPath'\n      type: object\n    ServiceDiscovery:\n      properties:\n        cache:\n          $ref: '#/components/schemas/ServiceDiscoveryCache'\n        cacheTimeout:\n          type: integer\n        dataPath:\n          type: string\n        enabled:\n          type: boolean\n        endpointReturnsList:\n          type: boolean\n        parentDataPath:\n          type: string\n        portDataPath:\n          type: string\n        queryEndpoint:\n          type: string\n        targetPath:\n          type: string\n        useNestedQuery:\n          type: boolean\n        useTargetList:\n          type: boolean\n      type: object\n    ServiceDiscoveryCache:\n      properties:\n        enabled:\n          type: boolean\n        timeout:\n          type: integer\n      type: object\n    ServiceDiscoveryConfiguration:\n      properties:\n        cache_disabled:\n          type: boolean\n        cache_timeout:\n          type: integer\n        data_path:\n          type: string\n        endpoint_returns_list:\n          type: boolean\n        parent_data_path:\n          type: string\n        port_data_path:\n          type: string\n        query_endpoint:\n          type: string\n        target_path:\n          type: string\n        use_discovery_service:\n          type: boolean\n        use_nested_query:\n          type: boolean\n        use_target_list:\n          type: boolean\n      type: object\n    SessionProviderMeta:\n      properties:\n        meta:\n          additionalProperties: {}\n          nullable: true\n          type: object\n        name:\n          type: string\n        storage_engine:\n          type: string\n      type: object\n    SessionState:\n      properties:\n        access_rights:\n          additionalProperties:\n            $ref: '#/components/schemas/AccessDefinition'\n          nullable: true\n          type: object\n        alias:\n          example: portal-developer@example.org\n          type: string\n        allowance:\n          example: 1000\n          format: double\n          type: number\n        apply_policies:\n          example:\n          - 641c15dd0fffb800010197bf\n          items:\n            type: string\n          nullable: true\n          type: array\n        apply_policy_id:\n          deprecated: true\n          description: deprecated use apply_policies going forward instead to send\n            a list of policies ids\n          example: 641c15dd0fffb800010197bf\n          type: string\n        basic_auth_data:\n          $ref: '#/components/schemas/BasicAuthData'\n        certificate:\n          type: string\n        data_expires:\n          example: 0\n          format: int64\n          type: integer\n        date_created:\n          example: \"2024-03-13T03:56:46.568042549Z\"\n          format: date-time\n          type: string\n        enable_detail_recording:\n          deprecated: true\n          description: deprecated use enable_detailed_recording going forward instead\n          example: false\n          type: boolean\n        enable_detailed_recording:\n          example: true\n          type: boolean\n        enable_http_signature_validation:\n          example: false\n          type: boolean\n        expires:\n          example: 1.712895619e+09\n          format: int64\n          type: integer\n        hmac_enabled:\n          example: false\n          type: boolean\n        hmac_string:\n          type: string\n        id_extractor_deadline:\n          format: int64\n          type: integer\n        is_inactive:\n          example: false\n          type: boolean\n        jwt_data:\n          $ref: '#/components/schemas/JWTData'\n        last_check:\n          example: 0\n          format: int64\n          type: integer\n        last_updated:\n          example: \"1710302206\"\n          type: string\n        max_query_depth:\n          example: -1\n          type: integer\n        meta_data:\n          additionalProperties: {}\n          example:\n            tyk_developer_id: 62b3fb9a1d5e4f00017226f5\n          nullable: true\n          type: object\n        monitor:\n          $ref: '#/components/schemas/Monitor'\n        oauth_client_id:\n          type: string\n        oauth_keys:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        org_id:\n          example: 5e9d9544a1dcd60001d0ed20\n          type: string\n        per:\n          example: 5\n          format: double\n          type: number\n        post_expiry_action:\n          description: Defines the action to take on a Session in Redis after it expires. Valid values are \"retain\" and \"delete\".\n          example: delete\n          type: string\n          enum:\n            - retain\n            - delete\n        post_expiry_grace_period:\n          description: Duration in seconds to retain a Session in Redis after it expires. Used with post_expiry_action \"retain\". Set to -1 to retain indefinitely.\n          example: 0\n          format: int64\n          type: integer\n        quota_max:\n          example: 20000\n          format: int64\n          type: integer\n        quota_remaining:\n          example: 20000\n          format: int64\n          type: integer\n        quota_renewal_rate:\n          example: 3.1556952e+07\n          format: int64\n          type: integer\n        quota_renews:\n          example: 1.710302205e+09\n          format: int64\n          type: integer\n        rate:\n          example: 1\n          format: double\n          type: number\n        rsa_certificate_id:\n          type: string\n        session_lifetime:\n          example: 0\n          format: int64\n          type: integer\n        smoothing:\n          $ref: '#/components/schemas/RateLimitSmoothing'\n        tags:\n          example:\n          - edge\n          - edge-eu\n          items:\n            type: string\n          nullable: true\n          type: array\n        throttle_interval:\n          example: 10\n          format: double\n          type: number\n        throttle_retry_limit:\n          example: 1000\n          type: integer\n      type: object\n    SignatureConfig:\n      properties:\n        algorithm:\n          type: string\n        allowed_clock_skew:\n          type: integer\n        error_code:\n          type: integer\n        error_message:\n          type: string\n        header:\n          type: string\n        param_name:\n          type: string\n        secret:\n          type: string\n        use_param:\n          type: boolean\n      type: object\n    State:\n      properties:\n        active:\n          type: boolean\n        internal:\n          type: boolean\n      type: object\n    StringRegexMap:\n      properties:\n        match_rx:\n          type: string\n        reverse:\n          type: boolean\n      type: object\n    TemplateData:\n      properties:\n        enable_session:\n          type: boolean\n        input_type:\n          enum:\n          - json\n          - xml\n          type: string\n        template_mode:\n          enum:\n          - blob\n          - file\n          type: string\n        template_source:\n          type: string\n      type: object\n    TemplateMeta:\n      properties:\n        disabled:\n          type: boolean\n        method:\n          type: string\n        path:\n          type: string\n        template_data:\n          $ref: '#/components/schemas/TemplateData'\n      type: object\n    Test:\n      properties:\n        serviceDiscovery:\n          $ref: '#/components/schemas/ServiceDiscovery'\n      type: object\n    TraceHttpRequest:\n      properties:\n        body:\n          type: string\n        headers:\n          $ref: '#/components/schemas/HttpHeader'\n        method:\n          example: GET\n          type: string\n        path:\n          example: /keyless-test/\n          type: string\n      type: object\n    TraceRequest:\n      type: object\n      properties:\n        request:\n          $ref: '#/components/schemas/TraceHttpRequest'\n        spec:\n          $ref: '#/components/schemas/APIDefinition'\n        oas:\n          oneOf:\n            - $ref: 'https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json'\n            - $ref: '#/components/schemas/TykVendorExtension'\n      oneOf:\n        - required: [oas]\n        - required: [spec]\n    TraceResponse:\n      properties:\n        logs:\n          example: '{\"level\":\"warning\",\"msg\":\"Legacy path detected! Upgrade to extended....'\n          type: string\n        message:\n          example: ok\n          type: string\n        response:\n          example: \"====== Request ======\\nGET / HTTP/1.1\\r\\nHost: httpbin.org\\r\\n\\r\\n\\n======\n            Response...\"\n          type: string\n      type: object\n    TrackEndpoint:\n      properties:\n        enabled:\n          type: boolean\n      type: object\n    TrackEndpointMeta:\n      properties:\n        disabled:\n          type: boolean\n        method:\n          type: string\n        path:\n          type: string\n      type: object\n    TrafficLogs:\n      properties:\n        enabled:\n          type: boolean\n      type: object\n    TransformBody:\n      properties:\n        body:\n          type: string\n        enabled:\n          type: boolean\n        format:\n          type: string\n        path:\n          type: string\n      type: object\n    TransformHeaders:\n      properties:\n        add:\n          $ref: '#/components/schemas/Headers'\n        enabled:\n          type: boolean\n        remove:\n          items:\n            type: string\n          type: array\n      type: object\n    TransformJQMeta:\n      properties:\n        filter:\n          type: string\n        method:\n          type: string\n        path:\n          type: string\n      type: object\n    TransformRequestMethod:\n      properties:\n        enabled:\n          type: boolean\n        toMethod:\n          type: string\n      type: object\n    UDGGlobalHeader:\n      properties:\n        key:\n          type: string\n        value:\n          type: string\n      type: object\n    URLRewrite:\n      properties:\n        enabled:\n          type: boolean\n        pattern:\n          type: string\n        rewriteTo:\n          type: string\n        triggers:\n          items:\n            $ref: '#/components/schemas/URLRewriteTrigger'\n          type: array\n      type: object\n    URLRewriteMeta:\n      properties:\n        disabled:\n          type: boolean\n        match_pattern:\n          type: string\n        method:\n          type: string\n        path:\n          type: string\n        rewrite_to:\n          type: string\n        triggers:\n          items:\n            $ref: '#/components/schemas/RoutingTrigger'\n          nullable: true\n          type: array\n      type: object\n    URLRewriteRule:\n      properties:\n        in:\n          type: string\n        name:\n          type: string\n        negate:\n          type: boolean\n        pattern:\n          type: string\n      type: object\n    URLRewriteTrigger:\n      properties:\n        condition:\n          type: string\n        rewriteTo:\n          type: string\n        rules:\n          items:\n            $ref: '#/components/schemas/URLRewriteRule'\n          type: array\n      type: object\n    Upstream:\n      properties:\n        certificatePinning:\n          $ref: '#/components/schemas/CertificatePinning'\n        mutualTLS:\n          $ref: '#/components/schemas/MutualTLS'\n        rateLimit:\n          $ref: '#/components/schemas/RateLimit'\n        serviceDiscovery:\n          $ref: '#/components/schemas/ServiceDiscovery'\n        test:\n          $ref: '#/components/schemas/Test'\n        url:\n          type: string\n      type: object\n    UptimeTests:\n      properties:\n        check_list:\n          items:\n            $ref: '#/components/schemas/HostCheckObject'\n          nullable: true\n          type: array\n        config:\n          $ref: '#/components/schemas/UptimeTestsConfig'\n      type: object\n    UptimeTestsConfig:\n      properties:\n        expire_utime_after:\n          type: integer\n        recheck_wait:\n          type: integer\n        service_discovery:\n          $ref: '#/components/schemas/ServiceDiscoveryConfiguration'\n      type: object\n    ValidatePathMeta:\n      properties:\n        disabled:\n          type: boolean\n        error_response_code:\n          type: integer\n        method:\n          type: string\n        path:\n          type: string\n        schema:\n          additionalProperties: {}\n          nullable: true\n          type: object\n        schema_b64:\n          type: string\n      type: object\n    ValidateRequest:\n      properties:\n        enabled:\n          type: boolean\n        errorResponseCode:\n          type: integer\n      type: object\n    ValidateRequestMeta:\n      properties:\n        enabled:\n          type: boolean\n        error_response_code:\n          type: integer\n        method:\n          type: string\n        path:\n          type: string\n      type: object\n    VersionData:\n      properties:\n        default_version:\n          type: string\n        not_versioned:\n          type: boolean\n        versions:\n          additionalProperties:\n            $ref: '#/components/schemas/VersionInfo'\n          nullable: true\n          type: object\n      type: object\n    VersionDefinition:\n      properties:\n        default:\n          type: string\n        enabled:\n          type: boolean\n        fallback_to_default:\n          type: boolean\n        key:\n          example: x-api-version\n          type: string\n        location:\n          example: header\n          type: string\n        name:\n          type: string\n        strip_path:\n          type: boolean\n        strip_versioning_data:\n          type: boolean\n        url_versioning_pattern:\n          type: string\n        versions:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n      type: object\n    VersionInfo:\n      properties:\n        expires:\n          type: string\n        extended_paths:\n          $ref: '#/components/schemas/ExtendedPathsSet'\n        global_headers:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        global_headers_disabled:\n          type: boolean\n        global_headers_remove:\n          items:\n            type: string\n          nullable: true\n          type: array\n        global_response_headers:\n          additionalProperties:\n            type: string\n          nullable: true\n          type: object\n        global_response_headers_disabled:\n          type: boolean\n        global_response_headers_remove:\n          items:\n            type: string\n          nullable: true\n          type: array\n        global_size_limit:\n          format: int64\n          type: integer\n        ignore_endpoint_case:\n          type: boolean\n        name:\n          type: string\n        override_target:\n          type: string\n        paths:\n          properties:\n            black_list:\n              items:\n                type: string\n              nullable: true\n              type: array\n            ignored:\n              items:\n                type: string\n              nullable: true\n              type: array\n            white_list:\n              items:\n                type: string\n              nullable: true\n              type: array\n          type: object\n        use_extended_paths:\n          example: true\n          type: boolean\n      type: object\n    VersionMeta:\n      properties:\n        expirationDate:\n          example: 2026-03-26 09:00\n          type: string\n        id:\n          example: keyless\n          type: string\n        internal:\n          example: false\n          type: boolean\n        isDefaultVersion:\n          example: true\n          type: boolean\n        name:\n          example: Tyk Test Keyless API\n          type: string\n        versionName:\n          example: v2\n          type: string\n      type: object\n    VersionMetas:\n      properties:\n        apis:\n          items:\n            $ref: '#/components/schemas/VersionMeta'\n          nullable: true\n          type: array\n        status:\n          example: success\n          type: string\n      type: object\n    VersionToID:\n      properties:\n        id:\n          type: string\n        name:\n          type: string\n      type: object\n    Versioning:\n      properties:\n        default:\n          type: string\n        enabled:\n          type: boolean\n        fallbackToDefault:\n          type: boolean\n        key:\n          type: string\n        location:\n          type: string\n        name:\n          type: string\n        stripVersioningData:\n          type: boolean\n        urlVersioningPattern:\n          type: string\n        versions:\n          items:\n            $ref: '#/components/schemas/VersionToID'\n          nullable: true\n          type: array\n      type: object\n    VirtualEndpoint:\n      properties:\n        body:\n          type: string\n        enabled:\n          type: boolean\n        functionName:\n          type: string\n        name:\n          type: string\n        path:\n          type: string\n        proxyOnError:\n          type: boolean\n        requireSession:\n          type: boolean\n      type: object\n    VirtualMeta:\n      properties:\n        disabled:\n          type: boolean\n        function_source_type:\n          enum:\n          - blob\n          - file\n          type: string\n        function_source_uri:\n          type: string\n        method:\n          type: string\n        path:\n          type: string\n        proxy_on_error:\n          type: boolean\n        response_function_name:\n          type: string\n        use_session:\n          type: boolean\n      type: object\n    XTykAPIGateway:\n      properties:\n        info:\n          $ref: '#/components/schemas/Info'\n        middleware:\n          $ref: '#/components/schemas/Middleware'\n        server:\n          $ref: '#/components/schemas/Server'\n        upstream:\n          $ref: '#/components/schemas/Upstream'\n      type: object\n    TykVendorExtension:\n      properties:\n        x-tyk-api-gateway:\n          $ref: '#/components/schemas/XTykAPIGateway'\n      type: object\n  securitySchemes:\n    api_key:\n      description: Api key\n      in: header\n      name: X-Tyk-Authorization\n      type: apiKey\n"}