{
  "components": {
    "headers": {
      "Age": {
        "description": "Seconds since the cached response was stored (cache hits only).",
        "schema": {
          "type": "integer"
        }
      },
      "Link": {
        "description": "`<url>; rel=\"help\"`: help link an administrator attached to this error (buffered responses only).",
        "schema": {
          "type": "string"
        }
      },
      "RateLimit": {
        "description": "IETF RateLimit for the tightest quota: `limit=<n>, remaining=<n>, reset=<seconds>` (`reset` omitted for lifetime windows). Present when a quota or budget applies to the request (on success, on later errors and on streams). Values are a snapshot taken before the upstream call: this request's request count is included, its tokens and spend are not.",
        "schema": {
          "type": "string"
        }
      },
      "RateLimit-Policy": {
        "description": "IETF RateLimit-Policy: one item per enforced quota, `<limit>;w=<window seconds>;qu=\"<metric>\";id=\"<quota id>\"` (`w` omitted for lifetime windows; spend in USD). Present when a quota or budget applies to the request (on success, on later errors and on streams). Values are a snapshot taken before the upstream call: this request's request count is included, its tokens and spend are not.",
        "schema": {
          "type": "string"
        }
      },
      "Retry-After": {
        "description": "Seconds to wait before retrying (quota and limit refusals, no available target, or relayed from the provider).",
        "schema": {
          "type": "integer"
        }
      },
      "X-Quilr-Attempts": {
        "description": "Number of upstream sends made, same-target retries included. Only sent when greater than 1; also on errors.",
        "schema": {
          "minimum": 2,
          "type": "integer"
        }
      },
      "X-Quilr-Budget-Overflow": {
        "description": "`true` when a quota admitted this request inside its overflow band (at or over its limit but under the hard stop).",
        "schema": {
          "enum": [
            "true"
          ],
          "type": "string"
        }
      },
      "X-Quilr-Cache": {
        "description": "`HIT` or `MISS` when the app's response cache is on and the request was eligible (non-streaming Chat Completions, Anthropic Messages, Embeddings). Absent on bypass. Send `Cache-Control: no-cache` to skip the lookup (the response is still stored) or `no-store` to skip both.",
        "schema": {
          "enum": [
            "HIT",
            "MISS"
          ],
          "type": "string"
        }
      },
      "X-Quilr-Error-Code": {
        "description": "The error code (see `x-quilr-error-codes`). Sent on upstream failures, routing and translation errors, and Bedrock and Google-format errors that carry a gateway code; elsewhere the code is in the body.",
        "schema": {
          "type": "string"
        }
      },
      "X-Quilr-Error-Source": {
        "description": "`upstream` when the provider failed (status and scrubbed reason relayed), `gateway` for the gateway's own routing refusals.",
        "schema": {
          "enum": [
            "upstream",
            "gateway"
          ],
          "type": "string"
        }
      },
      "X-Quilr-Failover": {
        "description": "Failover tier of the target that served, when it was not the first choice: `route` (another member of the route), `fallback` (an explicit fallback), `same_model` (the same model on another provider) or `app` (another target of the app). Also on errors.",
        "schema": {
          "enum": [
            "route",
            "fallback",
            "same_model",
            "app"
          ],
          "type": "string"
        }
      },
      "X-Quilr-Quota-Blocked-By": {
        "description": "Comma-separated ids of every quota that refused the request (429).",
        "schema": {
          "type": "string"
        }
      },
      "X-Quilr-Quota-Id": {
        "description": "Id of the primary exhausted quota (429 `quota_exceeded`).",
        "schema": {
          "type": "string"
        }
      },
      "X-Quilr-Quota-Remaining": {
        "description": "Remaining allowance of the tightest quota (USD for spend). Present when a quota or budget applies to the request (on success, on later errors and on streams). Values are a snapshot taken before the upstream call: this request's request count is included, its tokens and spend are not.",
        "schema": {
          "type": "string"
        }
      },
      "X-Quilr-Quota-Reset": {
        "description": "Reset time of the tightest quota (ISO 8601 UTC); omitted for lifetime windows. Present when a quota or budget applies to the request (on success, on later errors and on streams). Values are a snapshot taken before the upstream call: this request's request count is included, its tokens and spend are not.",
        "schema": {
          "type": "string"
        }
      },
      "X-Quilr-Quota-Scope": {
        "description": "`node`: quota counters are kept per gateway node; `shared`: counters are shared by every gateway node in the region. Sent whenever any quota header is.",
        "schema": {
          "enum": [
            "node",
            "shared"
          ],
          "type": "string"
        }
      },
      "X-Quilr-Quota-Warning": {
        "description": "`id=<quota id>; pct=<used percent>`: the most-used quota at or past one of its alert thresholds.",
        "schema": {
          "type": "string"
        }
      },
      "X-Quilr-Request-ID": {
        "description": "Gateway request id (UUID). Quote it to support. Sent on every response of Chat Completions, Anthropic Messages, Embeddings and Bedrock Runtime, and on streams the gateway had to commit early; on other APIs only on errors rewritten by an administrator's friendly-error rule.",
        "schema": {
          "type": "string"
        }
      },
      "X-Quilr-Route": {
        "description": "Opaque, stable id of the routing rule that chose the upstream: `r_` plus 16 hex digits, or `default`. Never a rule name; administrators map it to a rule in the routing summary. Sent on successful responses (status below 400) that reached routing, cached responses included.",
        "schema": {
          "type": "string"
        }
      },
      "X-Quilr-Served-Model": {
        "description": "Upstream model id the gateway actually called (on a cache hit, the model of the cached response). Same condition as `X-Quilr-Route`; omitted when the deployment hides model identity, and on streams the gateway had to commit early.",
        "schema": {
          "type": "string"
        }
      },
      "X-Quilr-Token-Count-Source": {
        "description": "`estimate` when the gateway counted tokens itself instead of the provider (the provider has no counting endpoint, or the model is served through another API).",
        "schema": {
          "enum": [
            "estimate"
          ],
          "type": "string"
        }
      },
      "X-RateLimit-Limit": {
        "description": "Limit of the exhausted quota or app limit (429).",
        "schema": {
          "type": "number"
        }
      },
      "X-RateLimit-Remaining": {
        "description": "Remaining allowance of the exhausted quota or app limit (429).",
        "schema": {
          "type": "number"
        }
      },
      "X-RateLimit-Reset": {
        "description": "Unix time (seconds) the exhausted quota or limit resets (429).",
        "schema": {
          "type": "integer"
        }
      },
      "X-Should-Retry": {
        "description": "`false` when retrying cannot help (a budget is exhausted, a zero allowance, or the administrator chose so). OpenAI and Anthropic SDKs honour it.",
        "schema": {
          "enum": [
            "false"
          ],
          "type": "string"
        }
      },
      "x-amzn-ErrorType": {
        "description": "Bedrock APIs: AWS exception name of the error, e.g. `ThrottlingException`.",
        "schema": {
          "type": "string"
        }
      },
      "x-amzn-RequestId": {
        "description": "Bedrock APIs: request id (the gateway's on gateway errors, AWS's on success).",
        "schema": {
          "type": "string"
        }
      }
    },
    "responses": {
      "AnthropicError400": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "Invalid request, a request the target provider cannot serve, or blocked by a guardrail (sensitive data, prompt attack, custom intent, language, task adherence, hallucination).",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "AnthropicError401": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "Missing or invalid Quilr credential, or a required user identity could not be verified.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "AnthropicError403": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "Denied by gateway policy or access rules (model, tool, source IP, routing constraints), or an attachment was blocked.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "AnthropicError404": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "Unknown model, deployment or resource.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "AnthropicError408": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "Timed out.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "AnthropicError409": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "The request depends on state held by an upstream it may not use.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "AnthropicError413": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "Request body or attachment too large.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "AnthropicError415": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "Unsupported media type, content encoding or attachment type.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "AnthropicError422": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "Request is well formed but cannot be processed, e.g. an attachment cannot be scanned.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "AnthropicError429": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "Rate limit, budget or quota exceeded (gateway or provider). Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Blocked-By": {
            "$ref": "#/components/headers/X-Quilr-Quota-Blocked-By"
          },
          "X-Quilr-Quota-Id": {
            "$ref": "#/components/headers/X-Quilr-Quota-Id"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          },
          "X-Should-Retry": {
            "$ref": "#/components/headers/X-Should-Retry"
          }
        }
      },
      "AnthropicError500": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "Gateway error or configuration problem.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "AnthropicError502": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "Upstream provider error, or a provider response the gateway could not read. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "AnthropicError503": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "No upstream target is available, or a required check could not complete. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "AnthropicError504": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "Upstream provider timed out. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "AnthropicError529": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AnthropicError"
            }
          }
        },
        "description": "Upstream provider overloaded. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "BedrockError400": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "Invalid request, a request the target provider cannot serve, or blocked by a guardrail (sensitive data, prompt attack, custom intent, language, task adherence, hallucination).",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "BedrockError401": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "Missing or invalid Quilr credential, or a required user identity could not be verified.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "BedrockError403": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "Denied by gateway policy or access rules (model, tool, source IP, routing constraints), or an attachment was blocked.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "BedrockError404": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "Unknown model, deployment or resource.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "BedrockError408": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "Timed out.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "BedrockError409": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "The request depends on state held by an upstream it may not use.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "BedrockError413": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "Request body or attachment too large.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "BedrockError415": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "Unsupported media type, content encoding or attachment type.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "BedrockError422": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "Request is well formed but cannot be processed, e.g. an attachment cannot be scanned.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "BedrockError429": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "Rate limit, budget or quota exceeded (gateway or provider). Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Blocked-By": {
            "$ref": "#/components/headers/X-Quilr-Quota-Blocked-By"
          },
          "X-Quilr-Quota-Id": {
            "$ref": "#/components/headers/X-Quilr-Quota-Id"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          },
          "X-Should-Retry": {
            "$ref": "#/components/headers/X-Should-Retry"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "BedrockError500": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "Gateway error or configuration problem.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "BedrockError502": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "Upstream provider error, or a provider response the gateway could not read. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "BedrockError503": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "No upstream target is available, or a required check could not complete. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "BedrockError504": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "Upstream provider timed out. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "BedrockError529": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BedrockError"
            }
          }
        },
        "description": "Upstream provider overloaded. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "x-amzn-ErrorType": {
            "$ref": "#/components/headers/x-amzn-ErrorType"
          },
          "x-amzn-RequestId": {
            "$ref": "#/components/headers/x-amzn-RequestId"
          }
        }
      },
      "GoogleError400": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "Invalid request, a request the target provider cannot serve, or blocked by a guardrail (sensitive data, prompt attack, custom intent, language, task adherence, hallucination).",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "GoogleError401": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "Missing or invalid Quilr credential, or a required user identity could not be verified.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "GoogleError403": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "Denied by gateway policy or access rules (model, tool, source IP, routing constraints), or an attachment was blocked.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "GoogleError404": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "Unknown model, deployment or resource.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "GoogleError408": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "Timed out.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "GoogleError409": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "The request depends on state held by an upstream it may not use.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "GoogleError413": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "Request body or attachment too large.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "GoogleError415": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "Unsupported media type, content encoding or attachment type.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "GoogleError422": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "Request is well formed but cannot be processed, e.g. an attachment cannot be scanned.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "GoogleError429": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "Rate limit, budget or quota exceeded (gateway or provider). Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Blocked-By": {
            "$ref": "#/components/headers/X-Quilr-Quota-Blocked-By"
          },
          "X-Quilr-Quota-Id": {
            "$ref": "#/components/headers/X-Quilr-Quota-Id"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          },
          "X-Should-Retry": {
            "$ref": "#/components/headers/X-Should-Retry"
          }
        }
      },
      "GoogleError500": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "Gateway error or configuration problem.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "GoogleError502": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "Upstream provider error, or a provider response the gateway could not read. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "GoogleError503": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "No upstream target is available, or a required check could not complete. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "GoogleError504": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "Upstream provider timed out. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "GoogleError529": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GoogleError"
            }
          }
        },
        "description": "Upstream provider overloaded. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "OpenAIError400": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "Invalid request, a request the target provider cannot serve, or blocked by a guardrail (sensitive data, prompt attack, custom intent, language, task adherence, hallucination).",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "OpenAIError401": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "Missing or invalid Quilr credential, or a required user identity could not be verified.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "OpenAIError403": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "Denied by gateway policy or access rules (model, tool, source IP, routing constraints), or an attachment was blocked.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "OpenAIError404": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "Unknown model, deployment or resource.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "OpenAIError408": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "Timed out.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "OpenAIError409": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "The request depends on state held by an upstream it may not use.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "OpenAIError413": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "Request body or attachment too large.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "OpenAIError415": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "Unsupported media type, content encoding or attachment type.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "OpenAIError422": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "Request is well formed but cannot be processed, e.g. an attachment cannot be scanned.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "OpenAIError429": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "Rate limit, budget or quota exceeded (gateway or provider). Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Blocked-By": {
            "$ref": "#/components/headers/X-Quilr-Quota-Blocked-By"
          },
          "X-Quilr-Quota-Id": {
            "$ref": "#/components/headers/X-Quilr-Quota-Id"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          },
          "X-Should-Retry": {
            "$ref": "#/components/headers/X-Should-Retry"
          }
        }
      },
      "OpenAIError500": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "Gateway error or configuration problem.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "OpenAIError502": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "Upstream provider error, or a provider response the gateway could not read. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "OpenAIError503": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "No upstream target is available, or a required check could not complete. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "OpenAIError504": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "Upstream provider timed out. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      },
      "OpenAIError529": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OpenAIError"
            }
          }
        },
        "description": "Upstream provider overloaded. Upstream errors also relay the provider's retry hints when it sent them: `retry-after`, `retry-after-ms`, `x-should-retry`, `x-ratelimit-{limit,remaining,reset}-{requests,tokens}` and `anthropic-ratelimit-*`.",
        "headers": {
          "Link": {
            "$ref": "#/components/headers/Link"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimit-Policy"
          },
          "X-Quilr-Attempts": {
            "$ref": "#/components/headers/X-Quilr-Attempts"
          },
          "X-Quilr-Error-Code": {
            "$ref": "#/components/headers/X-Quilr-Error-Code"
          },
          "X-Quilr-Error-Source": {
            "$ref": "#/components/headers/X-Quilr-Error-Source"
          },
          "X-Quilr-Failover": {
            "$ref": "#/components/headers/X-Quilr-Failover"
          },
          "X-Quilr-Quota-Remaining": {
            "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
          },
          "X-Quilr-Quota-Reset": {
            "$ref": "#/components/headers/X-Quilr-Quota-Reset"
          },
          "X-Quilr-Quota-Scope": {
            "$ref": "#/components/headers/X-Quilr-Quota-Scope"
          },
          "X-Quilr-Request-ID": {
            "$ref": "#/components/headers/X-Quilr-Request-ID"
          }
        }
      }
    },
    "schemas": {
      "AnthropicError": {
        "additionalProperties": true,
        "description": "Anthropic-style error envelope. The gateway adds `code` (and the other fields listed) inside `error`; guardrail blocks keep `code` but not `details`.",
        "properties": {
          "error": {
            "additionalProperties": true,
            "properties": {
              "blocked_by": {
                "description": "Every quota that refused the request.",
                "items": {
                  "$ref": "#/components/schemas/QuotaInfo"
                },
                "type": "array"
              },
              "code": {
                "description": "Error code: a gateway or provider code from the catalog in `x-quilr-error-codes` (codes are only ever added, never renamed), or a provider's own code passed through. Adapter-specific codes not in the catalog may also appear.",
                "type": "string"
              },
              "help_url": {
                "description": "Help link an administrator attached to this error (also appended to `message`).",
                "format": "uri",
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "provider": {
                "description": "Provider the gateway called (upstream errors).",
                "type": "string"
              },
              "quota": {
                "$ref": "#/components/schemas/QuotaInfo",
                "description": "The exhausted quota (`quota_exceeded`)."
              },
              "source": {
                "description": "Present when the provider failed; the gateway relays its status and a scrubbed reason.",
                "enum": [
                  "upstream"
                ],
                "type": "string"
              },
              "type": {
                "type": "string"
              },
              "upstream_request_id": {
                "description": "The provider's request id, when it sent one.",
                "type": "string"
              }
            },
            "required": [
              "type",
              "message"
            ],
            "type": "object"
          },
          "type": {
            "const": "error"
          }
        },
        "required": [
          "type",
          "error"
        ],
        "type": "object"
      },
      "BedrockError": {
        "additionalProperties": true,
        "description": "AWS-style error body; the error type is also in the `x-amzn-ErrorType` header. Gateway decisions that have a code put it in `reason` and `X-Quilr-Error-Code`, and append `(reason: <code>)` to the message. Guardrail blocks of request or response text carry no code.",
        "properties": {
          "__type": {
            "description": "Error type, e.g. `ValidationException`.",
            "type": "string"
          },
          "blocked_by": {
            "description": "Every quota that refused the request.",
            "items": {
              "$ref": "#/components/schemas/QuotaInfo"
            },
            "type": "array"
          },
          "code": {
            "description": "Quota errors: `quota_exceeded`.",
            "type": "string"
          },
          "help_url": {
            "description": "Help link an administrator attached to this error (also appended to `message`).",
            "format": "uri",
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "quota": {
            "$ref": "#/components/schemas/QuotaInfo",
            "description": "The exhausted quota (`quota_exceeded`)."
          },
          "reason": {
            "description": "Error code: a gateway or provider code from the catalog in `x-quilr-error-codes` (codes are only ever added, never renamed), or a provider's own code passed through. Adapter-specific codes not in the catalog may also appear.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "GoogleError": {
        "additionalProperties": true,
        "description": "Google API-style error envelope. Gateway decisions that have a code put it in `details[].reason` and `X-Quilr-Error-Code`; guardrail blocks of request or response text carry no code.",
        "properties": {
          "error": {
            "additionalProperties": true,
            "properties": {
              "code": {
                "type": "integer"
              },
              "details": {
                "items": {
                  "additionalProperties": true,
                  "properties": {
                    "@type": {
                      "type": "string"
                    },
                    "blocked_by": {
                      "description": "Every quota that refused the request.",
                      "items": {
                        "$ref": "#/components/schemas/QuotaInfo"
                      },
                      "type": "array"
                    },
                    "domain": {
                      "description": "`quilr.ai` on gateway errors.",
                      "type": "string"
                    },
                    "help_url": {
                      "description": "Help link an administrator attached to this error (also appended to `message`).",
                      "format": "uri",
                      "type": "string"
                    },
                    "quota": {
                      "$ref": "#/components/schemas/QuotaInfo",
                      "description": "The exhausted quota (`quota_exceeded`)."
                    },
                    "reason": {
                      "description": "Error code: a gateway or provider code from the catalog in `x-quilr-error-codes` (codes are only ever added, never renamed), or a provider's own code passed through. Adapter-specific codes not in the catalog may also appear.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "message": {
                "type": "string"
              },
              "status": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "OpenAIBatch": {
        "additionalProperties": true,
        "properties": {
          "completion_window": {
            "type": "string"
          },
          "created_at": {
            "type": "integer"
          },
          "endpoint": {
            "type": "string"
          },
          "error_file_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "type": "string"
          },
          "input_file_id": {
            "type": "string"
          },
          "metadata": {
            "additionalProperties": true,
            "type": [
              "object",
              "null"
            ]
          },
          "object": {
            "const": "batch",
            "type": "string"
          },
          "output_file_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "request_counts": {
            "additionalProperties": true,
            "properties": {
              "completed": {
                "type": "integer"
              },
              "failed": {
                "type": "integer"
              },
              "total": {
                "type": "integer"
              }
            },
            "type": "object"
          },
          "status": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "OpenAIBatchList": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/OpenAIBatch"
            },
            "type": "array"
          },
          "first_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "has_more": {
            "type": "boolean"
          },
          "last_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "object": {
            "const": "list",
            "type": "string"
          }
        },
        "type": "object"
      },
      "OpenAIBatchRequest": {
        "additionalProperties": true,
        "properties": {
          "completion_window": {
            "description": "For example `24h`.",
            "type": "string"
          },
          "endpoint": {
            "description": "For example `/v1/chat/completions`.",
            "type": "string"
          },
          "input_file_id": {
            "type": "string"
          },
          "metadata": {
            "additionalProperties": true,
            "type": [
              "object",
              "null"
            ]
          },
          "provider_label": {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header; not forwarded.",
            "type": "string"
          }
        },
        "required": [
          "input_file_id",
          "endpoint",
          "completion_window"
        ],
        "type": "object"
      },
      "OpenAIBatchResults": {
        "additionalProperties": true,
        "description": "Per-request batch results, in the provider's own shape.",
        "properties": {
          "results": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "OpenAIChatCompletion": {
        "additionalProperties": true,
        "properties": {
          "choices": {
            "items": {
              "additionalProperties": true,
              "properties": {
                "finish_reason": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "index": {
                  "type": "integer"
                },
                "message": {
                  "$ref": "#/components/schemas/OpenAIChatMessage"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "created": {
            "type": "integer"
          },
          "id": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "object": {
            "const": "chat.completion",
            "type": "string"
          },
          "usage": {
            "$ref": "#/components/schemas/OpenAIUsage"
          }
        },
        "type": "object"
      },
      "OpenAIChatCompletionChunk": {
        "additionalProperties": true,
        "description": "One `data:` event of a chat completion stream; the stream ends with `data: [DONE]`.",
        "properties": {
          "choices": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array"
          },
          "id": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "object": {
            "const": "chat.completion.chunk",
            "type": "string"
          },
          "usage": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/OpenAIUsage"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object"
      },
      "OpenAIChatCompletionRequest": {
        "additionalProperties": true,
        "properties": {
          "max_completion_tokens": {
            "type": [
              "integer",
              "null"
            ]
          },
          "max_tokens": {
            "type": [
              "integer",
              "null"
            ]
          },
          "messages": {
            "items": {
              "$ref": "#/components/schemas/OpenAIChatMessage"
            },
            "minItems": 1,
            "type": "array"
          },
          "model": {
            "description": "Model id, or a routing alias configured for the app.",
            "type": "string"
          },
          "n": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reasoning_effort": {
            "type": [
              "string",
              "null"
            ]
          },
          "response_format": {
            "additionalProperties": true,
            "type": "object"
          },
          "stop": {
            "type": [
              "string",
              "array",
              "null"
            ]
          },
          "stream": {
            "description": "Return a server-sent event stream.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "stream_options": {
            "additionalProperties": true,
            "properties": {
              "include_usage": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "temperature": {
            "type": [
              "number",
              "null"
            ]
          },
          "tool_choice": {
            "additionalProperties": true,
            "type": [
              "string",
              "object"
            ]
          },
          "tools": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array"
          },
          "top_p": {
            "type": [
              "number",
              "null"
            ]
          },
          "user": {
            "type": "string"
          }
        },
        "required": [
          "model",
          "messages"
        ],
        "type": "object"
      },
      "OpenAIChatMessage": {
        "additionalProperties": true,
        "properties": {
          "content": {
            "description": "Text, or a list of content parts (text, image_url, input_audio, file).",
            "type": [
              "string",
              "array",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "role": {
            "enum": [
              "system",
              "developer",
              "user",
              "assistant",
              "tool",
              "function"
            ],
            "type": "string"
          },
          "tool_call_id": {
            "type": "string"
          },
          "tool_calls": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "role"
        ],
        "type": "object"
      },
      "OpenAICompletion": {
        "additionalProperties": true,
        "properties": {
          "choices": {
            "items": {
              "additionalProperties": true,
              "properties": {
                "finish_reason": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "index": {
                  "type": "integer"
                },
                "text": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "id": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "object": {
            "const": "text_completion",
            "type": "string"
          },
          "usage": {
            "$ref": "#/components/schemas/OpenAIUsage"
          }
        },
        "type": "object"
      },
      "OpenAICompletionRequest": {
        "additionalProperties": true,
        "properties": {
          "max_tokens": {
            "type": [
              "integer",
              "null"
            ]
          },
          "model": {
            "type": "string"
          },
          "prompt": {
            "type": [
              "string",
              "array"
            ]
          },
          "stop": {
            "type": [
              "string",
              "array",
              "null"
            ]
          },
          "stream": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "suffix": {
            "description": "Text after the insertion point (fill in the middle).",
            "type": [
              "string",
              "null"
            ]
          },
          "temperature": {
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "model",
          "prompt"
        ],
        "type": "object"
      },
      "OpenAIDecisionsRequest": {
        "additionalProperties": true,
        "properties": {
          "input": {
            "description": "Text, or a list of user messages whose content is text or `input_text` parts. Images are refused.",
            "type": [
              "string",
              "array"
            ]
          },
          "model": {
            "description": "Decision model id or deployment configured for the app.",
            "type": "string"
          },
          "questions": {
            "items": {
              "additionalProperties": true,
              "description": "`choice` questions need `choices`, `score` questions need `levels`.",
              "properties": {
                "choices": {
                  "items": {
                    "additionalProperties": true,
                    "properties": {
                      "description": {
                        "type": "string"
                      },
                      "value": {
                        "type": [
                          "string",
                          "boolean"
                        ]
                      }
                    },
                    "required": [
                      "value"
                    ],
                    "type": "object"
                  },
                  "maxItems": 255,
                  "minItems": 2,
                  "type": "array"
                },
                "instructions": {
                  "type": "string"
                },
                "levels": {
                  "items": {
                    "additionalProperties": true,
                    "properties": {
                      "description": {
                        "type": "string"
                      },
                      "label": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "label"
                    ],
                    "type": "object"
                  },
                  "maxItems": 10,
                  "minItems": 2,
                  "type": "array"
                },
                "name": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "predicate",
                    "choice",
                    "score"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "type",
                "instructions"
              ],
              "type": "object"
            },
            "maxItems": 128,
            "minItems": 1,
            "type": "array"
          },
          "safety_identifier": {
            "description": "Accepted and not forwarded.",
            "type": "string"
          }
        },
        "required": [
          "model",
          "input",
          "questions"
        ],
        "type": "object"
      },
      "OpenAIDecisionsResponse": {
        "additionalProperties": true,
        "properties": {
          "answers": {
            "items": {
              "additionalProperties": true,
              "description": "One answer per question, in question order.",
              "properties": {
                "choice": {
                  "type": [
                    "string",
                    "boolean"
                  ]
                },
                "confidence": {
                  "type": "number"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "probabilities": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "type": "array"
                },
                "probability": {
                  "type": "number"
                },
                "score": {
                  "type": "number"
                },
                "type": {
                  "enum": [
                    "predicate",
                    "choice",
                    "score",
                    "refusal"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "model": {
            "type": "string"
          },
          "usage": {
            "additionalProperties": true,
            "type": "object"
          }
        },
        "type": "object"
      },
      "OpenAIDeleted": {
        "additionalProperties": true,
        "properties": {
          "deleted": {
            "type": "boolean"
          },
          "id": {
            "type": "string"
          },
          "object": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "OpenAIEmbeddingList": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "items": {
              "additionalProperties": true,
              "properties": {
                "embedding": {
                  "items": {
                    "type": "number"
                  },
                  "type": [
                    "array",
                    "string"
                  ]
                },
                "index": {
                  "type": "integer"
                },
                "object": {
                  "const": "embedding",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "model": {
            "type": "string"
          },
          "object": {
            "const": "list",
            "type": "string"
          },
          "usage": {
            "additionalProperties": true,
            "properties": {
              "prompt_tokens": {
                "type": "integer"
              },
              "total_tokens": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "OpenAIEmbeddingRequest": {
        "additionalProperties": true,
        "properties": {
          "dimensions": {
            "type": "integer"
          },
          "encoding_format": {
            "enum": [
              "float",
              "base64"
            ],
            "type": "string"
          },
          "input": {
            "description": "Text, a list of texts, or token arrays.",
            "type": [
              "string",
              "array"
            ]
          },
          "model": {
            "type": "string"
          },
          "user": {
            "type": "string"
          }
        },
        "required": [
          "model",
          "input"
        ],
        "type": "object"
      },
      "OpenAIError": {
        "additionalProperties": true,
        "description": "OpenAI-style error envelope, with the gateway's additional fields.",
        "properties": {
          "error": {
            "additionalProperties": true,
            "properties": {
              "blocked_by": {
                "description": "Every quota that refused the request.",
                "items": {
                  "$ref": "#/components/schemas/QuotaInfo"
                },
                "type": "array"
              },
              "code": {
                "description": "Error code: a gateway or provider code from the catalog in `x-quilr-error-codes` (codes are only ever added, never renamed), or a provider's own code passed through. Adapter-specific codes not in the catalog may also appear.",
                "type": [
                  "string",
                  "integer",
                  "null"
                ]
              },
              "details": {
                "description": "Guardrail blocks: a short reason (never the detected values). Legacy limits: an object.",
                "type": [
                  "string",
                  "object"
                ]
              },
              "help_url": {
                "description": "Help link an administrator attached to this error (also appended to `message`).",
                "format": "uri",
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "param": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "provider": {
                "description": "Provider the gateway called (upstream errors).",
                "type": "string"
              },
              "quota": {
                "$ref": "#/components/schemas/QuotaInfo",
                "description": "The exhausted quota (`quota_exceeded`)."
              },
              "source": {
                "description": "Present when the provider failed; the gateway relays its status and a scrubbed reason.",
                "enum": [
                  "upstream"
                ],
                "type": "string"
              },
              "type": {
                "description": "Provider error type, or a gateway type: `content_policy_violation` (guardrail block), `policy_error` (policy or routing denial), `quota_exceeded`, `policy_accounting_error`.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "upstream_request_id": {
                "description": "The provider's request id, when it sent one.",
                "type": "string"
              }
            },
            "required": [
              "message"
            ],
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "OpenAIFile": {
        "additionalProperties": true,
        "properties": {
          "bytes": {
            "type": "integer"
          },
          "created_at": {
            "type": "integer"
          },
          "filename": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "object": {
            "const": "file",
            "type": "string"
          },
          "purpose": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "OpenAIFileList": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/OpenAIFile"
            },
            "type": "array"
          },
          "first_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "has_more": {
            "type": "boolean"
          },
          "last_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "object": {
            "const": "list",
            "type": "string"
          }
        },
        "type": "object"
      },
      "OpenAIFileUploadRequest": {
        "additionalProperties": true,
        "properties": {
          "file": {
            "format": "binary",
            "type": "string"
          },
          "provider_label": {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header; not forwarded.",
            "type": "string"
          },
          "purpose": {
            "description": "For example `batch`, `fine-tune`, `assistants`, `user_data`.",
            "type": "string"
          }
        },
        "required": [
          "file",
          "purpose"
        ],
        "type": "object"
      },
      "OpenAIImageEditJsonRequest": {
        "additionalProperties": true,
        "properties": {
          "image": {
            "additionalProperties": true,
            "description": "Image by URL or data URI (xAI style).",
            "type": [
              "object",
              "string"
            ]
          },
          "images": {
            "description": "Images by URL or file id.",
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array"
          },
          "model": {
            "type": "string"
          },
          "n": {
            "minimum": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "prompt": {
            "type": "string"
          },
          "quality": {
            "type": [
              "string",
              "null"
            ]
          },
          "response_format": {
            "enum": [
              "url",
              "b64_json",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "size": {
            "type": [
              "string",
              "null"
            ]
          },
          "user": {
            "type": "string"
          }
        },
        "required": [
          "prompt"
        ],
        "type": "object"
      },
      "OpenAIImageEditRequest": {
        "additionalProperties": true,
        "properties": {
          "image": {
            "description": "Image file(s) to edit.",
            "oneOf": [
              {
                "format": "binary",
                "type": "string"
              },
              {
                "items": {
                  "format": "binary",
                  "type": "string"
                },
                "type": "array"
              }
            ]
          },
          "mask": {
            "format": "binary",
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "n": {
            "minimum": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "prompt": {
            "type": "string"
          },
          "quality": {
            "type": [
              "string",
              "null"
            ]
          },
          "response_format": {
            "enum": [
              "url",
              "b64_json",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "size": {
            "type": [
              "string",
              "null"
            ]
          },
          "user": {
            "type": "string"
          }
        },
        "required": [
          "prompt"
        ],
        "type": "object"
      },
      "OpenAIImageGenerationRequest": {
        "additionalProperties": true,
        "properties": {
          "background": {
            "type": [
              "string",
              "null"
            ]
          },
          "model": {
            "type": "string"
          },
          "n": {
            "minimum": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "output_format": {
            "type": [
              "string",
              "null"
            ]
          },
          "prompt": {
            "type": "string"
          },
          "quality": {
            "type": [
              "string",
              "null"
            ]
          },
          "response_format": {
            "enum": [
              "url",
              "b64_json",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "size": {
            "type": [
              "string",
              "null"
            ]
          },
          "style": {
            "type": [
              "string",
              "null"
            ]
          },
          "user": {
            "type": "string"
          }
        },
        "required": [
          "prompt"
        ],
        "type": "object"
      },
      "OpenAIImageVariationRequest": {
        "additionalProperties": true,
        "properties": {
          "image": {
            "format": "binary",
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "n": {
            "type": "integer"
          },
          "response_format": {
            "enum": [
              "url",
              "b64_json"
            ],
            "type": "string"
          },
          "size": {
            "type": "string"
          },
          "user": {
            "type": "string"
          }
        },
        "required": [
          "image"
        ],
        "type": "object"
      },
      "OpenAIImagesResponse": {
        "additionalProperties": true,
        "properties": {
          "created": {
            "type": "integer"
          },
          "data": {
            "items": {
              "additionalProperties": true,
              "properties": {
                "b64_json": {
                  "type": "string"
                },
                "revised_prompt": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "usage": {
            "additionalProperties": true,
            "type": "object"
          }
        },
        "type": "object"
      },
      "OpenAIModel": {
        "additionalProperties": true,
        "properties": {
          "created": {
            "type": "integer"
          },
          "id": {
            "type": "string"
          },
          "object": {
            "const": "model",
            "type": "string"
          },
          "owned_by": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "OpenAIModelList": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/OpenAIModel"
            },
            "type": "array"
          },
          "object": {
            "const": "list",
            "type": "string"
          }
        },
        "type": "object"
      },
      "OpenAIModeration": {
        "additionalProperties": true,
        "properties": {
          "id": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": true,
              "properties": {
                "categories": {
                  "additionalProperties": true,
                  "type": "object"
                },
                "category_scores": {
                  "additionalProperties": true,
                  "type": "object"
                },
                "flagged": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "OpenAIModerationRequest": {
        "additionalProperties": true,
        "properties": {
          "input": {
            "type": [
              "string",
              "array"
            ]
          },
          "model": {
            "type": "string"
          }
        },
        "required": [
          "input"
        ],
        "type": "object"
      },
      "OpenAIOcrRequest": {
        "additionalProperties": true,
        "description": "Mistral OCR request shape.",
        "properties": {
          "document": {
            "additionalProperties": true,
            "description": "The document to read.",
            "properties": {
              "document_url": {
                "type": "string"
              },
              "image_url": {
                "type": [
                  "string",
                  "object"
                ]
              },
              "type": {
                "description": "For example `document_url` or `image_url`.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "include_image_base64": {
            "type": "boolean"
          },
          "model": {
            "type": "string"
          },
          "pages": {
            "items": {
              "type": "integer"
            },
            "type": "array"
          }
        },
        "required": [
          "model",
          "document"
        ],
        "type": "object"
      },
      "OpenAIOcrResponse": {
        "additionalProperties": true,
        "properties": {
          "model": {
            "type": "string"
          },
          "pages": {
            "items": {
              "additionalProperties": true,
              "properties": {
                "index": {
                  "type": "integer"
                },
                "markdown": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "usage_info": {
            "additionalProperties": true,
            "type": "object"
          }
        },
        "type": "object"
      },
      "OpenAIQuotaUsage": {
        "additionalProperties": true,
        "properties": {
          "observed_at": {
            "format": "date-time",
            "type": "string"
          },
          "quotas": {
            "items": {
              "additionalProperties": true,
              "properties": {
                "bucket": {
                  "additionalProperties": true,
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "id": {
                  "type": "string"
                },
                "kind": {
                  "type": "string"
                },
                "label": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "limit": {
                  "type": [
                    "number",
                    "string"
                  ]
                },
                "metric": {
                  "type": "string"
                },
                "remaining": {
                  "type": [
                    "number",
                    "string"
                  ]
                },
                "reset_at": {
                  "format": "date-time",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "used": {
                  "type": [
                    "number",
                    "string"
                  ]
                },
                "window": {
                  "additionalProperties": true,
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "scope": {
            "description": "`node` when counters are kept per gateway node, `shared` when shared across the region.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "OpenAISpeechRequest": {
        "additionalProperties": true,
        "properties": {
          "input": {
            "description": "Text to speak; scanned by the app's request guardrails.",
            "type": "string"
          },
          "instructions": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "response_format": {
            "description": "Audio format, for example `mp3`, `opus`, `aac`, `flac`, `wav`, `pcm`.",
            "type": "string"
          },
          "speed": {
            "type": "number"
          },
          "stream_format": {
            "description": "`sse` streams audio chunks as server-sent events.",
            "enum": [
              "audio",
              "sse"
            ],
            "type": "string"
          },
          "voice": {
            "additionalProperties": true,
            "type": [
              "string",
              "object"
            ]
          }
        },
        "required": [
          "model",
          "input"
        ],
        "type": "object"
      },
      "OpenAITranscription": {
        "additionalProperties": true,
        "description": "Transcript; the transcript text is scanned by the app's response guardrails.",
        "properties": {
          "duration": {
            "type": "number"
          },
          "language": {
            "type": "string"
          },
          "segments": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array"
          },
          "text": {
            "type": "string"
          },
          "usage": {
            "additionalProperties": true,
            "type": "object"
          }
        },
        "type": "object"
      },
      "OpenAITranscriptionRequest": {
        "additionalProperties": true,
        "properties": {
          "file": {
            "description": "Audio file.",
            "format": "binary",
            "type": "string"
          },
          "language": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          },
          "response_format": {
            "enum": [
              "json",
              "text",
              "srt",
              "verbose_json",
              "vtt",
              "diarized_json"
            ],
            "type": "string"
          },
          "stream": {
            "description": "Stream the transcript as server-sent events.",
            "type": "boolean"
          },
          "temperature": {
            "type": "number"
          }
        },
        "required": [
          "file",
          "model"
        ],
        "type": "object"
      },
      "OpenAITranslationRequest": {
        "additionalProperties": true,
        "properties": {
          "file": {
            "description": "Audio file.",
            "format": "binary",
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          },
          "response_format": {
            "enum": [
              "json",
              "text",
              "srt",
              "verbose_json",
              "vtt"
            ],
            "type": "string"
          },
          "temperature": {
            "type": "number"
          }
        },
        "required": [
          "file",
          "model"
        ],
        "type": "object"
      },
      "OpenAIUsage": {
        "additionalProperties": true,
        "properties": {
          "completion_tokens": {
            "type": "integer"
          },
          "prompt_tokens": {
            "type": "integer"
          },
          "total_tokens": {
            "type": "integer"
          }
        },
        "type": "object"
      },
      "OpenAIVideo": {
        "additionalProperties": true,
        "properties": {
          "created_at": {
            "type": [
              "integer",
              "null"
            ]
          },
          "id": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "object": {
            "type": "string"
          },
          "progress": {
            "type": [
              "integer",
              "number",
              "null"
            ]
          },
          "seconds": {
            "type": [
              "string",
              "integer",
              "null"
            ]
          },
          "size": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "description": "For example `queued`, `in_progress`, `completed`, `failed`.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "OpenAIVideoEditRequest": {
        "additionalProperties": true,
        "properties": {
          "model": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          },
          "video": {
            "additionalProperties": true,
            "description": "The video to edit, by URL.",
            "type": [
              "object",
              "string"
            ]
          }
        },
        "required": [
          "prompt"
        ],
        "type": "object"
      },
      "OpenAIVideoList": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/OpenAIVideo"
            },
            "type": "array"
          },
          "first_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "has_more": {
            "type": "boolean"
          },
          "last_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "object": {
            "const": "list",
            "type": "string"
          }
        },
        "type": "object"
      },
      "OpenAIVideoMultipartRequest": {
        "additionalProperties": true,
        "properties": {
          "input_reference": {
            "description": "Optional reference image.",
            "format": "binary",
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          },
          "seconds": {
            "type": "string"
          },
          "size": {
            "type": "string"
          }
        },
        "required": [
          "prompt"
        ],
        "type": "object"
      },
      "OpenAIVideoRequest": {
        "additionalProperties": true,
        "properties": {
          "model": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          },
          "seconds": {
            "type": [
              "string",
              "integer"
            ]
          },
          "size": {
            "type": "string"
          }
        },
        "required": [
          "prompt"
        ],
        "type": "object"
      },
      "QuotaInfo": {
        "additionalProperties": true,
        "description": "A usage quota or budget as reported in quota errors.",
        "properties": {
          "current_usage": {
            "type": "number"
          },
          "current_usage_micro_usd": {
            "type": "integer"
          },
          "estimated_request_amount": {
            "description": "This request's estimated charge, when it tipped the quota over.",
            "type": "number"
          },
          "id": {
            "type": "string"
          },
          "label": {
            "type": [
              "string",
              "null"
            ]
          },
          "limit": {
            "type": "number"
          },
          "limit_micro_usd": {
            "type": "integer"
          },
          "metric": {
            "description": "What is counted, e.g. requests, tokens or spend.",
            "type": "string"
          },
          "reset_at": {
            "description": "Null for lifetime windows or a zero allowance.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "unit": {
            "description": "`usd` for spend quotas.",
            "type": "string"
          },
          "window": {
            "additionalProperties": true,
            "type": [
              "object",
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      }
    },
    "securitySchemes": {
      "ApigeeApiKey": {
        "description": "Apigee style `x-apikey` header with a Quilr API key (`sk-quilr-...`) or a Quilr-verified JWT.",
        "in": "header",
        "name": "x-apikey",
        "type": "apiKey"
      },
      "ApimSubscriptionKey": {
        "description": "Azure API Management style header with a Quilr API key (`sk-quilr-...`) or a Quilr-verified JWT.",
        "in": "header",
        "name": "ocp-apim-subscription-key",
        "type": "apiKey"
      },
      "AwsSigV4": {
        "description": "AWS Signature Version 4 (`AWS4-HMAC-SHA256 ...`) computed by an AWS SDK configured with the gateway as its endpoint; the access key id is the Quilr API key. A Bearer Quilr API key is accepted instead.",
        "in": "header",
        "name": "Authorization",
        "type": "apiKey"
      },
      "KongApiKey": {
        "description": "Kong key-auth style `apikey` header with a Quilr API key (`sk-quilr-...`) or a Quilr-verified JWT.",
        "in": "header",
        "name": "apikey",
        "type": "apiKey"
      },
      "QuilrApiKeyHeader": {
        "description": "Azure OpenAI style `api-key` with a Quilr API key (`sk-quilr-...`) or a Quilr-verified JWT.",
        "in": "header",
        "name": "api-key",
        "type": "apiKey"
      },
      "QuilrBearer": {
        "description": "`Authorization: Bearer` with a Quilr API key (`sk-quilr-...`) or a Quilr-verified JWT. When present, this header decides: a malformed value is rejected and no other header is tried.",
        "scheme": "bearer",
        "type": "http"
      },
      "QuilrGoogApiKey": {
        "description": "Gemini SDK style `x-goog-api-key` with a Quilr API key (`sk-quilr-...`) or a Quilr-verified JWT.",
        "in": "header",
        "name": "x-goog-api-key",
        "type": "apiKey"
      },
      "QuilrSarvamKey": {
        "description": "Sarvam SDK style `api-subscription-key` with a Quilr API key (`sk-quilr-...`) or a Quilr-verified JWT.",
        "in": "header",
        "name": "api-subscription-key",
        "type": "apiKey"
      },
      "QuilrXApiKey": {
        "description": "`x-api-key` with a Quilr API key (`sk-quilr-...`) or a Quilr-verified JWT.",
        "in": "header",
        "name": "x-api-key",
        "type": "apiKey"
      }
    }
  },
  "info": {
    "description": "OpenAI wire format for chat completions, completions, embeddings, audio, images, moderations, OCR, files, batches, videos, decisions and model listing. Point an OpenAI SDK at `<gateway>/openai_compatible/v1`; the gateway serves the app's configured provider (OpenAI, Azure OpenAI, Anthropic, Gemini, Mistral, xAI and other OpenAI-compatible providers) in the OpenAI shape.\n\nClient-facing model APIs of the Quilr LLM Gateway. Each API family speaks a provider's own wire format (OpenAI, Azure OpenAI, Anthropic, AWS Bedrock Runtime, Google Gemini and Vertex AI, and others), so an existing SDK works by pointing its base URL at the gateway. Requests pass through the gateway features that apply to their route (see below), then reach the configured upstream provider.\n\n**Authentication.** Send a Quilr API key (`sk-quilr-...`) or a Quilr-verified JWT. Every family accepts `Authorization: Bearer`, plus the header its provider's SDK uses (listed per operation) and the key headers common API gateways use (`apikey`, `ocp-apim-subscription-key`, `x-apikey`). When `Authorization` is present it decides; send one credential header only. The credential header is never forwarded upstream.\n\n**Bodies.** Request and response schemas document the main fields only and allow additional fields: the gateway forwards provider options it does not know. Do not enable strict body validation that rejects unknown fields.\n\n**Streaming.** Operations that stream return `text/event-stream` (Bedrock streaming operations return `application/vnd.amazon.eventstream`). Disable response buffering for these paths.\n\n**Aliases.** Several paths are aliases of a canonical path (marked with `x-quilr-alias-of`), kept so every SDK base-URL convention resolves. Route all of them.\n\n**Gateway features per route.** Not every route runs every gateway feature. Each model-call operation lists what applies to it in `x-quilr-gateway-features` and in its description: guardrails, Guardian, attachment scanning, model access, routing, failover, limits and quotas, token saving, Prompt Store, response cache. Guardrails do not scan the moderations, images, OCR, completions, files, batches and videos routes (and the Mistral and xAI image, video, batch and fill-in-the-middle routes).\n\n**Gateway response headers.** Most model-call routes relay the provider's own response headers (the endpoint-family routes above do not). The gateway adds: `X-Quilr-Request-ID` (correlation), `X-Quilr-Route` (opaque id of the routing rule that chose the upstream), `X-Quilr-Served-Model` (model actually called), `X-Quilr-Attempts` and `X-Quilr-Failover` (retries and failover), `X-Quilr-Cache` and `Age` (response cache), and the quota headers `RateLimit-Policy`, `RateLimit`, `X-Quilr-Quota-Remaining`, `X-Quilr-Quota-Reset`, `X-Quilr-Quota-Warning`, `X-Quilr-Budget-Overflow` and `X-Quilr-Quota-Scope`. Errors add `X-Quilr-Error-Source`, `X-Quilr-Error-Code`, `Retry-After`, `Link` (help) and, on 429, `X-RateLimit-*`, `X-Quilr-Quota-Id`, `X-Quilr-Quota-Blocked-By` and `X-Should-Retry`. Each header's exact format and condition is under `components.headers`. A provider can never set an `x-quilr-*` header: they are removed from upstream responses. Browsers cannot read these headers from cross-origin JavaScript (they are not CORS-exposed); server-side clients can.\n\n**Guardrail blocks.** A request or response stopped by a guardrail returns 400 with error type `content_policy_violation` and a code: `sensitive_data_blocked` (details give only a count, never the values), `adversarial_content_blocked`, `custom_intent_blocked`, `language_blocked`, `guardian_task_adherence_blocked` or `hallucination_blocked`. Policy and access denials return 403 (`policy_error`). Administrators may replace the message and attach a help link (`help_url`, `Link`). Anthropic-format errors keep the code but not `details`; Bedrock and Google-format guardrail blocks carry no code. Response checks run on non-streaming responses only.\n\n**Redaction.** When a guardrail redacts instead of blocking, detected values are masked in place: fully with `X` characters of the same length (text to speech uses `REDACTED`), or partially, keeping the first and last characters. Request-side redaction changes what the model receives; response-side redaction (non-streaming) changes what the client receives. No field marks a redaction.\n\n**Advisories.** When coding-helper checks are on, a non-streaming response may end with an appended paragraph starting `Guardian note:` about dependency vulnerabilities or newer versions.\n\n**Streams.** While a stream is idle for 15 seconds the gateway writes SSE comment lines (`: ` prefix); SSE parsers ignore them. If the gateway has not answered 15 seconds after admitting a request it starts a `200` event stream early; a later failure then arrives as an in-stream error event carrying an added `status_code` field instead of an HTTP status. Bedrock streams end with an exception frame (`modelStreamErrorException` or `internalServerException`) when the upstream stream is interrupted.\n\n**Error codes.** `x-quilr-error-codes` lists every gateway code (`source: gateway`) and the gateway's names for provider failures (`source: provider`) with their usual status. Codes are only ever added, never renamed. A code marked `also_sent_by_providers` does not by itself say who raised the error: read `X-Quilr-Error-Source` or `error.source`. Responses API ids starting `resp_qtx_` were issued by the gateway for a translated provider and are valid only against the gateway.",
    "title": "Quilr LLM Gateway: OpenAI-compatible APIs",
    "version": "1.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/openai_compatible/audio/speech": {
      "post": {
        "description": "Text to speech. Returns audio bytes in `response_format`, or a server-sent event stream when `stream_format` is `sse`. Body fields and query parameters are forwarded to the provider as sent.\n\n**Gateway features on this route:** request guardrails, model access rules, limits, quotas and budgets.",
        "operationId": "OpenAI_create_speech_unversioned",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAISpeechRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "audio/aac": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "audio/flac": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "audio/mpeg": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "audio/opus": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "audio/pcm": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "audio/wav": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "text/event-stream": {
                "schema": {
                  "description": "Server-sent events.",
                  "type": "string"
                }
              }
            },
            "description": "Audio in the requested `response_format` (default `mp3`); a server-sent event stream of audio chunks when `stream_format` is `sse`.",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Generate speech",
        "tags": [
          "OpenAI Audio"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/audio/speech",
        "x-quilr-gateway-features": [
          "request_dlp",
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/audio/transcriptions": {
      "post": {
        "description": "Speech to text from a multipart upload. Every form field is forwarded. `stream=true` returns a server-sent event stream when no response guardrail needs the full transcript.\n\n**Gateway features on this route:** request guardrails, response guardrails (non-streaming), model access rules, limits, quotas and budgets.",
        "operationId": "OpenAI_create_transcription_unversioned",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/OpenAITranscriptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAITranscription"
                }
              },
              "text/event-stream": {
                "schema": {
                  "description": "Server-sent events.",
                  "type": "string"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Transcript. `text`, `srt` and `vtt` response formats return plain text; a server-sent event stream when `stream` is `true`.",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Transcribe audio",
        "tags": [
          "OpenAI Audio"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/audio/transcriptions",
        "x-quilr-gateway-features": [
          "request_dlp",
          "response_dlp",
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/audio/translations": {
      "post": {
        "description": "Speech to English text from a multipart upload. Every form field is forwarded.\n\n**Gateway features on this route:** request guardrails, response guardrails (non-streaming), model access rules, limits, quotas and budgets.",
        "operationId": "OpenAI_create_translation_unversioned",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/OpenAITranslationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAITranscription"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Transcript. `text`, `srt` and `vtt` response formats return plain text.",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Translate audio to English",
        "tags": [
          "OpenAI Audio"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/audio/translations",
        "x-quilr-gateway-features": [
          "request_dlp",
          "response_dlp",
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/batches": {
      "get": {
        "description": "Lists the provider's batch jobs. Query parameters are forwarded to the provider.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_list_batches_unversioned",
        "parameters": [
          {
            "description": "Maximum number of items to return; forwarded to the provider.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Cursor: the id of the last item of the previous page.",
            "in": "query",
            "name": "after",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIBatchList"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "List batches",
        "tags": [
          "OpenAI Batches"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/batches",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      },
      "post": {
        "description": "Starts a batch job from an uploaded input file (OpenAI, Azure OpenAI, Mistral or xAI). Responses use the OpenAI batch shape.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_batch_unversioned",
        "parameters": [
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIBatchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIBatch"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Create a batch",
        "tags": [
          "OpenAI Batches"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/batches",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/batches/{batch_id}": {
      "get": {
        "description": "Returns a batch job's status.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_retrieve_batch_unversioned",
        "parameters": [
          {
            "description": "Batch id returned by the provider.",
            "in": "path",
            "name": "batch_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIBatch"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Retrieve a batch",
        "tags": [
          "OpenAI Batches"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/batches/{batch_id}",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/batches/{batch_id}/cancel": {
      "post": {
        "description": "Cancels a running batch job. No request body.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_cancel_batch_unversioned",
        "parameters": [
          {
            "description": "Batch id returned by the provider.",
            "in": "path",
            "name": "batch_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIBatch"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Cancel a batch",
        "tags": [
          "OpenAI Batches"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/batches/{batch_id}/cancel",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/batches/{batch_id}/results": {
      "get": {
        "description": "Returns a batch's per-request results. xAI providers only (xAI returns results through its API instead of an output file).\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_get_batch_results_unversioned",
        "parameters": [
          {
            "description": "Batch id returned by the provider.",
            "in": "path",
            "name": "batch_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIBatchResults"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Get batch results",
        "tags": [
          "OpenAI Batches"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/batches/{batch_id}/results",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/chat/completions": {
      "post": {
        "description": "OpenAI Chat Completions. Guardrails scan the request and the response; routing, failover, limits and quotas apply. Returns a server-sent event stream when `stream` is `true`.\n\n**Gateway features on this route:** request guardrails, response guardrails (non-streaming), Guardian checks, hallucination check (non-streaming), attachment scanning, model access rules, routing groups, content routing, failover, limits, quotas and budgets, token saving, Prompt Store, universal system prompt, response cache.",
        "operationId": "OpenAI_create_chat_completion_unversioned",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "JSON object of Prompt Store variable values keyed by prompt reference, e.g. `{\"<prompt reference>\": {\"tone\": \"formal\"}}`. Fills `{{variable}}` placeholders of stored prompts.",
            "in": "header",
            "name": "X-Prompt-Variables",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "messages": [
                  {
                    "content": "Hello",
                    "role": "user"
                  }
                ],
                "model": "gpt-4o-mini"
              },
              "schema": {
                "$ref": "#/components/schemas/OpenAIChatCompletionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIChatCompletion"
                }
              },
              "text/event-stream": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIChatCompletionChunk"
                }
              }
            },
            "description": "Success; a server-sent event stream when the request asks to stream.",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "409": {
            "$ref": "#/components/responses/OpenAIError409"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "415": {
            "$ref": "#/components/responses/OpenAIError415"
          },
          "422": {
            "$ref": "#/components/responses/OpenAIError422"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Create a chat completion",
        "tags": [
          "OpenAI Chat and Completions"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/chat/completions",
        "x-quilr-gateway-features": [
          "request_dlp",
          "response_dlp",
          "guardian",
          "hallucination",
          "attachments",
          "model_access",
          "group_routing",
          "context_routing",
          "failover",
          "limits",
          "token_saving",
          "prompt_store",
          "universal_system_prompt",
          "response_cache"
        ]
      }
    },
    "/openai_compatible/completions": {
      "post": {
        "description": "Legacy text completions, including fill in the middle with `suffix` on providers that support it. Returns a server-sent event stream when `stream` is `true`.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_completion_unversioned",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAICompletionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAICompletion"
                }
              },
              "text/event-stream": {
                "schema": {
                  "description": "Server-sent events.",
                  "type": "string"
                }
              }
            },
            "description": "Success; a server-sent event stream when the request asks to stream.",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Create a text completion",
        "tags": [
          "OpenAI Chat and Completions"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/completions",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/embeddings": {
      "post": {
        "description": "Embeds text with the app's embedding model. The input is scanned by the app's request guardrails.\n\n**Gateway features on this route:** request guardrails, model access rules, failover, limits, quotas and budgets, response cache.",
        "operationId": "OpenAI_create_embeddings_unversioned",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIEmbeddingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIEmbeddingList"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "409": {
            "$ref": "#/components/responses/OpenAIError409"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Create embeddings",
        "tags": [
          "OpenAI Embeddings"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/embeddings",
        "x-quilr-gateway-features": [
          "request_dlp",
          "model_access",
          "failover",
          "limits",
          "response_cache"
        ]
      }
    },
    "/openai_compatible/files": {
      "get": {
        "description": "Lists the provider's files. Query parameters are forwarded to the provider.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_list_files_unversioned",
        "parameters": [
          {
            "description": "Only files with this purpose.",
            "in": "query",
            "name": "purpose",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Maximum number of items to return; forwarded to the provider.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Cursor: the id of the last item of the previous page.",
            "in": "query",
            "name": "after",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order by creation time.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIFileList"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "List files",
        "tags": [
          "OpenAI Files"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/files",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      },
      "post": {
        "description": "Uploads a file to the app's file provider (OpenAI, Azure OpenAI, Mistral or xAI).\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_upload_file_unversioned",
        "parameters": [
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIFileUploadRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIFile"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Upload a file",
        "tags": [
          "OpenAI Files"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/files",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/files/{file_id}": {
      "delete": {
        "description": "Deletes a file at the provider.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_delete_file_unversioned",
        "parameters": [
          {
            "description": "File id returned by the provider.",
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIDeleted"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Delete a file",
        "tags": [
          "OpenAI Files"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/files/{file_id}",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      },
      "get": {
        "description": "Returns a file's metadata.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_retrieve_file_unversioned",
        "parameters": [
          {
            "description": "File id returned by the provider.",
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIFile"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Retrieve a file",
        "tags": [
          "OpenAI Files"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/files/{file_id}",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/files/{file_id}/content": {
      "get": {
        "description": "Streams the file's bytes from the provider unchanged, with the provider's content type.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_download_file_content_unversioned",
        "parameters": [
          {
            "description": "File id returned by the provider.",
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/jsonl": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "File content as stored by the provider.",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Download file content",
        "tags": [
          "OpenAI Files"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/files/{file_id}/content",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/images/edits": {
      "post": {
        "description": "Edits images from a prompt. Send multipart form data with image files, or JSON with image references; which one a provider accepts depends on the provider (Azure OpenAI takes multipart only, xAI JSON only).\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_image_edit_unversioned",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIImageEditJsonRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIImageEditRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIImagesResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Edit images",
        "tags": [
          "OpenAI Images"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/images/edits",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/images/generations": {
      "post": {
        "description": "Creates images from a prompt.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_image_unversioned",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIImageGenerationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIImagesResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Generate images",
        "tags": [
          "OpenAI Images"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/images/generations",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/images/variations": {
      "post": {
        "description": "Creates variations of an uploaded image. OpenAI providers only.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_image_variation_unversioned",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIImageVariationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIImagesResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Create image variations",
        "tags": [
          "OpenAI Images"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/images/variations",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/models": {
      "get": {
        "description": "Models configured for the app that the caller may use. Makes no upstream call.",
        "operationId": "OpenAI_list_models_unversioned",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIModelList"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "List models",
        "tags": [
          "OpenAI Models"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/models"
      }
    },
    "/openai_compatible/models/{model_id}": {
      "get": {
        "description": "One model from the app's configured models. 404 when the model is not enabled for the caller.",
        "operationId": "OpenAI_retrieve_model_unversioned",
        "parameters": [
          {
            "description": "Model id.",
            "in": "path",
            "name": "model_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIModel"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Retrieve a model",
        "tags": [
          "OpenAI Models"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/models/{model_id}"
      }
    },
    "/openai_compatible/moderations": {
      "post": {
        "description": "Moderation in the OpenAI shape; Mistral moderation results are converted to it.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_moderation_unversioned",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIModerationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIModeration"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Classify content",
        "tags": [
          "OpenAI Moderations and OCR"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/moderations",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/ocr": {
      "post": {
        "description": "Document OCR in Mistral's request and response shape. Mistral providers only.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_ocr_unversioned",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIOcrRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIOcrResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Extract text from a document",
        "tags": [
          "OpenAI Moderations and OCR"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/ocr",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/audio/speech": {
      "post": {
        "description": "Text to speech. Returns audio bytes in `response_format`, or a server-sent event stream when `stream_format` is `sse`. Body fields and query parameters are forwarded to the provider as sent.\n\n**Gateway features on this route:** request guardrails, model access rules, limits, quotas and budgets.",
        "operationId": "OpenAI_create_speech",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAISpeechRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "audio/aac": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "audio/flac": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "audio/mpeg": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "audio/opus": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "audio/pcm": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "audio/wav": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "text/event-stream": {
                "schema": {
                  "description": "Server-sent events.",
                  "type": "string"
                }
              }
            },
            "description": "Audio in the requested `response_format` (default `mp3`); a server-sent event stream of audio chunks when `stream_format` is `sse`.",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Generate speech",
        "tags": [
          "OpenAI Audio"
        ],
        "x-quilr-gateway-features": [
          "request_dlp",
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/audio/transcriptions": {
      "post": {
        "description": "Speech to text from a multipart upload. Every form field is forwarded. `stream=true` returns a server-sent event stream when no response guardrail needs the full transcript.\n\n**Gateway features on this route:** request guardrails, response guardrails (non-streaming), model access rules, limits, quotas and budgets.",
        "operationId": "OpenAI_create_transcription",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/OpenAITranscriptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAITranscription"
                }
              },
              "text/event-stream": {
                "schema": {
                  "description": "Server-sent events.",
                  "type": "string"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Transcript. `text`, `srt` and `vtt` response formats return plain text; a server-sent event stream when `stream` is `true`.",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Transcribe audio",
        "tags": [
          "OpenAI Audio"
        ],
        "x-quilr-gateway-features": [
          "request_dlp",
          "response_dlp",
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/audio/translations": {
      "post": {
        "description": "Speech to English text from a multipart upload. Every form field is forwarded.\n\n**Gateway features on this route:** request guardrails, response guardrails (non-streaming), model access rules, limits, quotas and budgets.",
        "operationId": "OpenAI_create_translation",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/OpenAITranslationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAITranscription"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Transcript. `text`, `srt` and `vtt` response formats return plain text.",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Translate audio to English",
        "tags": [
          "OpenAI Audio"
        ],
        "x-quilr-gateway-features": [
          "request_dlp",
          "response_dlp",
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/batches": {
      "get": {
        "description": "Lists the provider's batch jobs. Query parameters are forwarded to the provider.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_list_batches",
        "parameters": [
          {
            "description": "Maximum number of items to return; forwarded to the provider.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Cursor: the id of the last item of the previous page.",
            "in": "query",
            "name": "after",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIBatchList"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "List batches",
        "tags": [
          "OpenAI Batches"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      },
      "post": {
        "description": "Starts a batch job from an uploaded input file (OpenAI, Azure OpenAI, Mistral or xAI). Responses use the OpenAI batch shape.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_batch",
        "parameters": [
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIBatchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIBatch"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Create a batch",
        "tags": [
          "OpenAI Batches"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/batches/{batch_id}": {
      "get": {
        "description": "Returns a batch job's status.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_retrieve_batch",
        "parameters": [
          {
            "description": "Batch id returned by the provider.",
            "in": "path",
            "name": "batch_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIBatch"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Retrieve a batch",
        "tags": [
          "OpenAI Batches"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/batches/{batch_id}/cancel": {
      "post": {
        "description": "Cancels a running batch job. No request body.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_cancel_batch",
        "parameters": [
          {
            "description": "Batch id returned by the provider.",
            "in": "path",
            "name": "batch_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIBatch"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Cancel a batch",
        "tags": [
          "OpenAI Batches"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/batches/{batch_id}/results": {
      "get": {
        "description": "Returns a batch's per-request results. xAI providers only (xAI returns results through its API instead of an output file).\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_get_batch_results",
        "parameters": [
          {
            "description": "Batch id returned by the provider.",
            "in": "path",
            "name": "batch_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIBatchResults"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Get batch results",
        "tags": [
          "OpenAI Batches"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/chat/completions": {
      "post": {
        "description": "OpenAI Chat Completions. Guardrails scan the request and the response; routing, failover, limits and quotas apply. Returns a server-sent event stream when `stream` is `true`.\n\n**Gateway features on this route:** request guardrails, response guardrails (non-streaming), Guardian checks, hallucination check (non-streaming), attachment scanning, model access rules, routing groups, content routing, failover, limits, quotas and budgets, token saving, Prompt Store, universal system prompt, response cache.",
        "operationId": "OpenAI_create_chat_completion",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "JSON object of Prompt Store variable values keyed by prompt reference, e.g. `{\"<prompt reference>\": {\"tone\": \"formal\"}}`. Fills `{{variable}}` placeholders of stored prompts.",
            "in": "header",
            "name": "X-Prompt-Variables",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "messages": [
                  {
                    "content": "Hello",
                    "role": "user"
                  }
                ],
                "model": "gpt-4o-mini"
              },
              "schema": {
                "$ref": "#/components/schemas/OpenAIChatCompletionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIChatCompletion"
                }
              },
              "text/event-stream": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIChatCompletionChunk"
                }
              }
            },
            "description": "Success; a server-sent event stream when the request asks to stream.",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "409": {
            "$ref": "#/components/responses/OpenAIError409"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "415": {
            "$ref": "#/components/responses/OpenAIError415"
          },
          "422": {
            "$ref": "#/components/responses/OpenAIError422"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Create a chat completion",
        "tags": [
          "OpenAI Chat and Completions"
        ],
        "x-quilr-gateway-features": [
          "request_dlp",
          "response_dlp",
          "guardian",
          "hallucination",
          "attachments",
          "model_access",
          "group_routing",
          "context_routing",
          "failover",
          "limits",
          "token_saving",
          "prompt_store",
          "universal_system_prompt",
          "response_cache"
        ]
      }
    },
    "/openai_compatible/v1/completions": {
      "post": {
        "description": "Legacy text completions, including fill in the middle with `suffix` on providers that support it. Returns a server-sent event stream when `stream` is `true`.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_completion",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAICompletionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAICompletion"
                }
              },
              "text/event-stream": {
                "schema": {
                  "description": "Server-sent events.",
                  "type": "string"
                }
              }
            },
            "description": "Success; a server-sent event stream when the request asks to stream.",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Create a text completion",
        "tags": [
          "OpenAI Chat and Completions"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/decisions": {
      "post": {
        "description": "OpenAI Decisions format for decision models (Microsoft-Decision-1 on Azure, TypeSafe, Perplexity). Text and JSON input only; images are refused. Request bodies may be gzip or deflate encoded; zstd is refused with 415. Unknown fields inside a question are rejected, as OpenAI does.\n\n**Gateway features on this route:** request guardrails, model access rules, limits, quotas and budgets.",
        "operationId": "OpenAI_create_decisions",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIDecisionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIDecisionsResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "415": {
            "$ref": "#/components/responses/OpenAIError415"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Answer decision questions",
        "tags": [
          "OpenAI Decisions"
        ],
        "x-quilr-gateway-features": [
          "request_dlp",
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/embeddings": {
      "post": {
        "description": "Embeds text with the app's embedding model. The input is scanned by the app's request guardrails.\n\n**Gateway features on this route:** request guardrails, model access rules, failover, limits, quotas and budgets, response cache.",
        "operationId": "OpenAI_create_embeddings",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIEmbeddingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIEmbeddingList"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "409": {
            "$ref": "#/components/responses/OpenAIError409"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Create embeddings",
        "tags": [
          "OpenAI Embeddings"
        ],
        "x-quilr-gateway-features": [
          "request_dlp",
          "model_access",
          "failover",
          "limits",
          "response_cache"
        ]
      }
    },
    "/openai_compatible/v1/files": {
      "get": {
        "description": "Lists the provider's files. Query parameters are forwarded to the provider.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_list_files",
        "parameters": [
          {
            "description": "Only files with this purpose.",
            "in": "query",
            "name": "purpose",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Maximum number of items to return; forwarded to the provider.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Cursor: the id of the last item of the previous page.",
            "in": "query",
            "name": "after",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order by creation time.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIFileList"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "List files",
        "tags": [
          "OpenAI Files"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      },
      "post": {
        "description": "Uploads a file to the app's file provider (OpenAI, Azure OpenAI, Mistral or xAI).\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_upload_file",
        "parameters": [
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIFileUploadRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIFile"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Upload a file",
        "tags": [
          "OpenAI Files"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/files/{file_id}": {
      "delete": {
        "description": "Deletes a file at the provider.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_delete_file",
        "parameters": [
          {
            "description": "File id returned by the provider.",
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIDeleted"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Delete a file",
        "tags": [
          "OpenAI Files"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      },
      "get": {
        "description": "Returns a file's metadata.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_retrieve_file",
        "parameters": [
          {
            "description": "File id returned by the provider.",
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIFile"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Retrieve a file",
        "tags": [
          "OpenAI Files"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/files/{file_id}/content": {
      "get": {
        "description": "Streams the file's bytes from the provider unchanged, with the provider's content type.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_download_file_content",
        "parameters": [
          {
            "description": "File id returned by the provider.",
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/jsonl": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "File content as stored by the provider.",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Download file content",
        "tags": [
          "OpenAI Files"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/images/edits": {
      "post": {
        "description": "Edits images from a prompt. Send multipart form data with image files, or JSON with image references; which one a provider accepts depends on the provider (Azure OpenAI takes multipart only, xAI JSON only).\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_image_edit",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIImageEditJsonRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIImageEditRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIImagesResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Edit images",
        "tags": [
          "OpenAI Images"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/images/generations": {
      "post": {
        "description": "Creates images from a prompt.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_image",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIImageGenerationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIImagesResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Generate images",
        "tags": [
          "OpenAI Images"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/images/variations": {
      "post": {
        "description": "Creates variations of an uploaded image. OpenAI providers only.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_image_variation",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIImageVariationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIImagesResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Create image variations",
        "tags": [
          "OpenAI Images"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/models": {
      "get": {
        "description": "Models configured for the app that the caller may use. Makes no upstream call.",
        "operationId": "OpenAI_list_models",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIModelList"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "List models",
        "tags": [
          "OpenAI Models"
        ]
      }
    },
    "/openai_compatible/v1/models/{model_id}": {
      "get": {
        "description": "One model from the app's configured models. 404 when the model is not enabled for the caller.",
        "operationId": "OpenAI_retrieve_model",
        "parameters": [
          {
            "description": "Model id.",
            "in": "path",
            "name": "model_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIModel"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Retrieve a model",
        "tags": [
          "OpenAI Models"
        ]
      }
    },
    "/openai_compatible/v1/moderations": {
      "post": {
        "description": "Moderation in the OpenAI shape; Mistral moderation results are converted to it.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_moderation",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIModerationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIModeration"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Classify content",
        "tags": [
          "OpenAI Moderations and OCR"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/ocr": {
      "post": {
        "description": "Document OCR in Mistral's request and response shape. Mistral providers only.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_ocr",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIOcrRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIOcrResponse"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Extract text from a document",
        "tags": [
          "OpenAI Moderations and OCR"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/quilr/usage": {
      "get": {
        "description": "The caller's own quota buckets for this app: limit, used, remaining and reset time. Quotas grouped per person are shown only to a verified identity (a verified JWT or a self-service key).",
        "operationId": "OpenAI_get_quota_usage",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIQuotaUsage"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Get my quota usage",
        "tags": [
          "OpenAI Quota Usage"
        ]
      }
    },
    "/openai_compatible/v1/videos": {
      "get": {
        "description": "Lists video jobs. OpenAI providers only. Query parameters are forwarded to the provider.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_list_videos",
        "parameters": [
          {
            "description": "Maximum number of items to return; forwarded to the provider.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Cursor: the id of the last item of the previous page.",
            "in": "query",
            "name": "after",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order by creation time.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIVideoList"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "List videos",
        "tags": [
          "OpenAI Videos"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      },
      "post": {
        "description": "Starts a video generation job (OpenAI or xAI). Send JSON, or multipart form data with a reference image (OpenAI only).\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_video",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIVideoRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIVideoMultipartRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIVideo"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Create a video",
        "tags": [
          "OpenAI Videos"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/videos/edits": {
      "post": {
        "description": "Starts a video edit job. xAI providers only.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_video_edit",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIVideoEditRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIVideo"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Edit a video",
        "tags": [
          "OpenAI Videos"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/videos/{video_id}": {
      "delete": {
        "description": "Deletes a video. OpenAI providers only.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_delete_video",
        "parameters": [
          {
            "description": "Video id returned by the provider.",
            "in": "path",
            "name": "video_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIDeleted"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Delete a video",
        "tags": [
          "OpenAI Videos"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      },
      "get": {
        "description": "Returns a video job's status (OpenAI or xAI).\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_retrieve_video",
        "parameters": [
          {
            "description": "Video id returned by the provider.",
            "in": "path",
            "name": "video_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIVideo"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Retrieve a video job",
        "tags": [
          "OpenAI Videos"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/v1/videos/{video_id}/content": {
      "get": {
        "description": "Streams the generated video (or a thumbnail or spritesheet) from the provider unchanged. OpenAI providers only.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_download_video_content",
        "parameters": [
          {
            "description": "Video id returned by the provider.",
            "in": "path",
            "name": "video_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Which asset to download; forwarded to the provider.",
            "in": "query",
            "name": "variant",
            "required": false,
            "schema": {
              "enum": [
                "video",
                "thumbnail",
                "spritesheet"
              ],
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/octet-stream": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "image/jpeg": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "image/webp": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "video/mp4": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "Video or image bytes.",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Download video content",
        "tags": [
          "OpenAI Videos"
        ],
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/videos": {
      "get": {
        "description": "Lists video jobs. OpenAI providers only. Query parameters are forwarded to the provider.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_list_videos_unversioned",
        "parameters": [
          {
            "description": "Maximum number of items to return; forwarded to the provider.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Cursor: the id of the last item of the previous page.",
            "in": "query",
            "name": "after",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort order by creation time.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIVideoList"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "List videos",
        "tags": [
          "OpenAI Videos"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/videos",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      },
      "post": {
        "description": "Starts a video generation job (OpenAI or xAI). Send JSON, or multipart form data with a reference image (OpenAI only).\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_video_unversioned",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIVideoRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIVideoMultipartRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIVideo"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Create a video",
        "tags": [
          "OpenAI Videos"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/videos",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/videos/edits": {
      "post": {
        "description": "Starts a video edit job. xAI providers only.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_create_video_edit_unversioned",
        "parameters": [
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to one specific provider configured on the app (its label), instead of the app's routing. Also accepted as `provider_label` in the body (or the query string on job-style routes); the selector is removed before the upstream call. An explicitly selected provider is never moved by failover.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenAIVideoEditRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIVideo"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "413": {
            "$ref": "#/components/responses/OpenAIError413"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Edit a video",
        "tags": [
          "OpenAI Videos"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/videos/edits",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/videos/{video_id}": {
      "delete": {
        "description": "Deletes a video. OpenAI providers only.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_delete_video_unversioned",
        "parameters": [
          {
            "description": "Video id returned by the provider.",
            "in": "path",
            "name": "video_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Email of the end user behind the request, for identity-aware policy, limits and logs. Required when the app enforces identity (401 `identity_required`); the app may restrict its domain. A verified JWT or a named self-service key carries its own identity, which this header never replaces.",
            "in": "header",
            "name": "X-User-Email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "Groups related requests into one conversation for logs, routing and session pinning (also read from `conversation-id` / `conversation_id`). Required when the app enforces conversation ids (400 `conversation_id_required`).",
            "in": "header",
            "name": "X-Conversation-Id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sends the request to the app's provider of this type (for example `openai` or `bedrock`) instead of the app's routing. Also accepted as `provider` in the body. `X-Provider-Label` is more specific and wins when both are sent.",
            "in": "header",
            "name": "X-Provider-Name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIDeleted"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Delete a video",
        "tags": [
          "OpenAI Videos"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/videos/{video_id}",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      },
      "get": {
        "description": "Returns a video job's status (OpenAI or xAI).\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_retrieve_video_unversioned",
        "parameters": [
          {
            "description": "Video id returned by the provider.",
            "in": "path",
            "name": "video_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIVideo"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Retrieve a video job",
        "tags": [
          "OpenAI Videos"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/videos/{video_id}",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/openai_compatible/videos/{video_id}/content": {
      "get": {
        "description": "Streams the generated video (or a thumbnail or spritesheet) from the provider unchanged. OpenAI providers only.\n\n**Gateway features on this route:** model access rules, limits, quotas and budgets. Guardrails do not scan this route. Provider response headers are not relayed on this route.",
        "operationId": "OpenAI_download_video_content_unversioned",
        "parameters": [
          {
            "description": "Video id returned by the provider.",
            "in": "path",
            "name": "video_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Which asset to download; forwarded to the provider.",
            "in": "query",
            "name": "variant",
            "required": false,
            "schema": {
              "enum": [
                "video",
                "thumbnail",
                "spritesheet"
              ],
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one.",
            "in": "header",
            "name": "X-Provider-Label",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selects which of the app's configured providers serves the request when the app has more than one. Takes precedence over the header.",
            "in": "query",
            "name": "provider_label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/octet-stream": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "image/jpeg": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "image/webp": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              },
              "video/mp4": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "Video or image bytes.",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/OpenAIError400"
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "404": {
            "$ref": "#/components/responses/OpenAIError404"
          },
          "429": {
            "$ref": "#/components/responses/OpenAIError429"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "502": {
            "$ref": "#/components/responses/OpenAIError502"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          },
          "504": {
            "$ref": "#/components/responses/OpenAIError504"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Download video content",
        "tags": [
          "OpenAI Videos"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/videos/{video_id}/content",
        "x-quilr-gateway-features": [
          "model_access",
          "limits"
        ]
      }
    },
    "/v1/quilr/usage": {
      "get": {
        "description": "The caller's own quota buckets for this app: limit, used, remaining and reset time. Quotas grouped per person are shown only to a verified identity (a verified JWT or a self-service key).",
        "operationId": "OpenAI_get_quota_usage_root",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIQuotaUsage"
                }
              }
            },
            "description": "Success",
            "headers": {
              "Age": {
                "$ref": "#/components/headers/Age"
              },
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimit-Policy"
              },
              "X-Quilr-Attempts": {
                "$ref": "#/components/headers/X-Quilr-Attempts"
              },
              "X-Quilr-Budget-Overflow": {
                "$ref": "#/components/headers/X-Quilr-Budget-Overflow"
              },
              "X-Quilr-Cache": {
                "$ref": "#/components/headers/X-Quilr-Cache"
              },
              "X-Quilr-Failover": {
                "$ref": "#/components/headers/X-Quilr-Failover"
              },
              "X-Quilr-Quota-Remaining": {
                "$ref": "#/components/headers/X-Quilr-Quota-Remaining"
              },
              "X-Quilr-Quota-Reset": {
                "$ref": "#/components/headers/X-Quilr-Quota-Reset"
              },
              "X-Quilr-Quota-Scope": {
                "$ref": "#/components/headers/X-Quilr-Quota-Scope"
              },
              "X-Quilr-Quota-Warning": {
                "$ref": "#/components/headers/X-Quilr-Quota-Warning"
              },
              "X-Quilr-Request-ID": {
                "$ref": "#/components/headers/X-Quilr-Request-ID"
              },
              "X-Quilr-Route": {
                "$ref": "#/components/headers/X-Quilr-Route"
              },
              "X-Quilr-Served-Model": {
                "$ref": "#/components/headers/X-Quilr-Served-Model"
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/OpenAIError401"
          },
          "403": {
            "$ref": "#/components/responses/OpenAIError403"
          },
          "500": {
            "$ref": "#/components/responses/OpenAIError500"
          },
          "503": {
            "$ref": "#/components/responses/OpenAIError503"
          }
        },
        "security": [
          {
            "QuilrBearer": []
          },
          {
            "QuilrApiKeyHeader": []
          },
          {
            "QuilrXApiKey": []
          },
          {
            "KongApiKey": []
          },
          {
            "ApimSubscriptionKey": []
          },
          {
            "ApigeeApiKey": []
          }
        ],
        "summary": "Get my quota usage",
        "tags": [
          "OpenAI Quota Usage"
        ],
        "x-quilr-alias-of": "/openai_compatible/v1/quilr/usage"
      }
    }
  },
  "servers": [
    {
      "description": "Quilr-hosted gateway. Set `region` to the region your organization uses before importing (or request the document with `region`). For a dedicated or on-premises gateway, replace the URL with your gateway's.",
      "url": "https://{region}.quilr.ai",
      "variables": {
        "region": {
          "default": "guardrails-usa-1",
          "description": "`guardrails-usa-1`: USA 1 (US Central West); `guardrails-usa-2`: USA 2 (US East); `guardrails-europe-1`: Europe; `guardrails-india-1`: India 1 (Mumbai); `guardrails-india-2`: India 2 (Mumbai); `guardrails-jp-1`: Japan (Tokyo); `guardrails`: Global",
          "enum": [
            "guardrails-usa-1",
            "guardrails-usa-2",
            "guardrails-europe-1",
            "guardrails-india-1",
            "guardrails-india-2",
            "guardrails-jp-1",
            "guardrails"
          ]
        }
      }
    }
  ],
  "tags": [
    {
      "description": "Chat completions and legacy text completions, streaming or not.",
      "name": "OpenAI Chat and Completions"
    },
    {
      "description": "Vector embeddings.",
      "name": "OpenAI Embeddings"
    },
    {
      "description": "Text to speech, transcription and translation.",
      "name": "OpenAI Audio"
    },
    {
      "description": "Image generation, edits and variations.",
      "name": "OpenAI Images"
    },
    {
      "description": "Content moderation and document OCR.",
      "name": "OpenAI Moderations and OCR"
    },
    {
      "description": "File upload and management. File ids belong to the provider that created them; later calls must reach the same provider. Off by default: answers 404 `endpoint_not_enabled` unless enabled for the gateway deployment.",
      "name": "OpenAI Files"
    },
    {
      "description": "Asynchronous batch jobs. Batch ids belong to the provider that created them. Off by default: answers 404 `endpoint_not_enabled` unless enabled for the gateway deployment.",
      "name": "OpenAI Batches"
    },
    {
      "description": "Video generation jobs and downloads. Off by default: answers 404 `endpoint_not_enabled` unless enabled for the gateway deployment.",
      "name": "OpenAI Videos"
    },
    {
      "description": "Decision models: typed questions about an input answered with probabilities.",
      "name": "OpenAI Decisions"
    },
    {
      "description": "Models configured for the app. Makes no upstream call.",
      "name": "OpenAI Models"
    },
    {
      "description": "The caller's own quota usage.",
      "name": "OpenAI Quota Usage"
    }
  ],
  "x-quilr-error-codes": [
    {
      "code": "missing_api_key",
      "description": "No gateway API key was sent.",
      "group": "authentication",
      "source": "gateway",
      "status": 401
    },
    {
      "also_sent_by_providers": true,
      "code": "invalid_api_key",
      "description": "The gateway API key is unknown or revoked, or its app is disabled.",
      "group": "authentication",
      "source": "gateway",
      "status": 401
    },
    {
      "code": "expired_api_key",
      "description": "The self-service API key has expired.",
      "group": "authentication",
      "source": "gateway",
      "status": 401
    },
    {
      "code": "jwt_auth_failed",
      "description": "The bearer token could not be verified.",
      "group": "authentication",
      "source": "gateway",
      "status": 401
    },
    {
      "code": "self_service_identity_required",
      "description": "A self-service app accepts only its own Quilr API keys.",
      "group": "authentication",
      "source": "gateway",
      "status": 401
    },
    {
      "code": "missing_provider",
      "description": "The app has no provider configured.",
      "group": "configuration",
      "source": "gateway",
      "status": 500
    },
    {
      "code": "missing_provider_key",
      "description": "The provider has no credential configured.",
      "group": "configuration",
      "source": "gateway",
      "status": 500
    },
    {
      "code": "unsupported_provider",
      "description": "The app's provider cannot serve this API.",
      "group": "configuration",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "provider_not_configured",
      "description": "The requested provider is not configured for this app.",
      "group": "configuration",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "sdk_mode_required",
      "description": "This endpoint requires a Quilr SDK app key.",
      "group": "configuration",
      "source": "gateway",
      "status": 403
    },
    {
      "code": "internal_error",
      "description": "An unexpected gateway error.",
      "group": "configuration",
      "source": "gateway",
      "status": 500
    },
    {
      "code": "policy_access_denied",
      "description": "A Policy Engine rule denied the request.",
      "group": "access",
      "source": "gateway",
      "status": 403
    },
    {
      "code": "policy_model_denied",
      "description": "The model is on a rejected-models list.",
      "group": "access",
      "source": "gateway",
      "status": 403
    },
    {
      "code": "policy_model_not_allowed",
      "description": "The model is outside the allowed-models list that applies.",
      "group": "access",
      "source": "gateway",
      "status": 403
    },
    {
      "code": "model_access_denied",
      "description": "The model is not enabled for this app.",
      "group": "access",
      "source": "gateway",
      "status": 403
    },
    {
      "code": "policy_tool_access_denied",
      "description": "A Policy Engine rule denied a tool call.",
      "group": "access",
      "source": "gateway",
      "status": 403
    },
    {
      "code": "source_ip_not_allowed",
      "description": "The client IP address is not allowed.",
      "group": "access",
      "source": "gateway",
      "status": 403
    },
    {
      "code": "policy_source_ip_denied",
      "description": "A Policy Engine rule denied the client IP address.",
      "group": "access",
      "source": "gateway",
      "status": 403
    },
    {
      "code": "policy_provider_unsupported",
      "description": "The routed provider cannot serve this request.",
      "group": "access",
      "source": "gateway",
      "status": 403
    },
    {
      "code": "policy_routing_group_wrong_surface",
      "description": "The routing group cannot serve this API.",
      "group": "access",
      "source": "gateway",
      "status": 403
    },
    {
      "code": "policy_routing_group_not_defined",
      "description": "The requested routing group is not defined.",
      "group": "access",
      "source": "gateway",
      "status": 403
    },
    {
      "code": "policy_configuration_error",
      "description": "The published policy cannot be applied.",
      "group": "access",
      "source": "gateway",
      "status": 500
    },
    {
      "code": "policy_evaluation_error",
      "description": "The policy could not be evaluated.",
      "group": "access",
      "source": "gateway",
      "status": 500
    },
    {
      "code": "identity_check_failed",
      "description": "The user identity could not be verified.",
      "group": "identity",
      "source": "gateway",
      "status": 401
    },
    {
      "code": "identity_required",
      "description": "The app requires a user identity.",
      "group": "identity",
      "source": "gateway",
      "status": 401
    },
    {
      "code": "conversation_id_required",
      "description": "The app requires a conversation id.",
      "group": "identity",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "system_prompt_not_from_store",
      "description": "The system prompt does not come from the Prompt Store.",
      "group": "prompt_store",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "prompt_store_not_configured",
      "description": "The Prompt Store is not configured for this app.",
      "group": "prompt_store",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "prompt_store_error",
      "description": "The Prompt Store prompt could not be used.",
      "group": "prompt_store",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "invalid_prompt_variables",
      "description": "The Prompt Store variables are invalid.",
      "group": "prompt_store",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "invalid_json",
      "description": "The request body is not valid JSON.",
      "group": "request",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "missing_required_parameter",
      "description": "A required request parameter is missing.",
      "group": "request",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "invalid_extra_body",
      "description": "The extra_body parameter is invalid.",
      "group": "request",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "invalid_request",
      "description": "The request is invalid for the provider adapter.",
      "group": "request",
      "source": "gateway",
      "status": 400
    },
    {
      "also_sent_by_providers": true,
      "code": "model_not_found",
      "description": "The app does not offer the requested model.",
      "group": "request",
      "source": "gateway",
      "status": 404
    },
    {
      "also_sent_by_providers": true,
      "code": "rate_limit_exceeded",
      "description": "The app's request rate limit was reached.",
      "group": "limits",
      "source": "gateway",
      "status": 429
    },
    {
      "code": "concurrency_limit_exceeded",
      "description": "The app's concurrency limit was reached.",
      "group": "limits",
      "source": "gateway",
      "status": 429
    },
    {
      "code": "input_token_limit_exceeded",
      "description": "The app's input-token limit was reached.",
      "group": "limits",
      "source": "gateway",
      "status": 429
    },
    {
      "code": "output_token_limit_exceeded",
      "description": "The app's output-token limit was reached.",
      "group": "limits",
      "source": "gateway",
      "status": 429
    },
    {
      "code": "max_tokens_per_request_exceeded",
      "description": "The request asks for more tokens than one request may use.",
      "group": "limits",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "max_tokens_exceeded",
      "description": "The request asks for more tokens than one request may use (Messages).",
      "group": "limits",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "model_rate_limit_exceeded",
      "description": "The model's request rate limit was reached.",
      "group": "limits",
      "source": "gateway",
      "status": 429
    },
    {
      "code": "model_concurrency_limit_exceeded",
      "description": "The model's concurrency limit was reached.",
      "group": "limits",
      "source": "gateway",
      "status": 429
    },
    {
      "code": "model_input_token_limit_exceeded",
      "description": "The model's input-token limit was reached.",
      "group": "limits",
      "source": "gateway",
      "status": 429
    },
    {
      "code": "model_output_token_limit_exceeded",
      "description": "The model's output-token limit was reached.",
      "group": "limits",
      "source": "gateway",
      "status": 429
    },
    {
      "code": "model_max_tokens_per_request_exceeded",
      "description": "The request asks for more tokens than the model allows per request.",
      "group": "limits",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "rate_or_token_limit_exceeded",
      "description": "A rate or token limit was reached (Bedrock).",
      "group": "limits",
      "source": "gateway",
      "status": 429
    },
    {
      "code": "limit_exceeded",
      "description": "A usage limit was reached.",
      "group": "limits",
      "source": "gateway",
      "status": 429
    },
    {
      "code": "quota_exceeded",
      "description": "A usage quota or budget is exhausted.",
      "group": "quota",
      "source": "gateway",
      "status": 429
    },
    {
      "code": "quota_price_unavailable",
      "description": "The model has no price for a spend budget.",
      "group": "quota",
      "source": "gateway",
      "status": 403
    },
    {
      "code": "quota_usage_unavailable",
      "description": "The route cannot measure a quota's usage.",
      "group": "quota",
      "source": "gateway",
      "status": 503
    },
    {
      "code": "quota_accounting_error",
      "description": "Quota usage could not be recorded.",
      "group": "quota",
      "source": "gateway",
      "status": 503
    },
    {
      "code": "sensitive_data_blocked",
      "description": "Sensitive data was detected and blocked.",
      "group": "guardrails",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "adversarial_content_blocked",
      "description": "Adversarial content (prompt attack) was blocked.",
      "group": "guardrails",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "custom_intent_blocked",
      "description": "A custom intent was detected and blocked.",
      "group": "guardrails",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "language_blocked",
      "description": "The language of the content is blocked.",
      "group": "guardrails",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "guardian_task_adherence_blocked",
      "description": "Guardian blocked a request outside the app's task.",
      "group": "guardrails",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "hallucination_blocked",
      "description": "The response was blocked as a likely hallucination.",
      "group": "guardrails",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "all_targets_unavailable",
      "description": "No provider target could take the request.",
      "group": "routing",
      "source": "gateway",
      "status": 503
    },
    {
      "code": "embedding_dimension_mismatch",
      "description": "A failover target returned embeddings of a different size.",
      "group": "routing",
      "source": "gateway",
      "status": 502
    },
    {
      "code": "routing_constraint_unsatisfied",
      "description": "No allowed target satisfies the request's routing constraints.",
      "group": "routing",
      "source": "gateway",
      "status": 403
    },
    {
      "code": "routing_state_bound_conflict",
      "description": "The request's provider-bound state lives on a target its routing constraints exclude.",
      "group": "routing",
      "source": "gateway",
      "status": 409
    },
    {
      "code": "routing_constraint_check_unavailable",
      "description": "A routing-constraint check could not be completed.",
      "group": "routing",
      "source": "gateway",
      "status": 503
    },
    {
      "code": "translation_unconvertible_request",
      "description": "The request cannot be converted to the provider's API.",
      "group": "translation",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "translation_unsupported_state",
      "description": "The request depends on state the provider cannot use.",
      "group": "translation",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "upstream_api_unsupported",
      "description": "The provider cannot serve this client API.",
      "group": "translation",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "state_not_portable",
      "description": "Conversation state cannot move to this provider.",
      "group": "translation",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "provider_not_conversational",
      "description": "The provider does not serve conversational requests.",
      "group": "translation",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "unsupported_client_api",
      "description": "The client API is not supported.",
      "group": "translation",
      "source": "gateway",
      "status": 400
    },
    {
      "code": "translation_internal_error",
      "description": "The request could not be converted.",
      "group": "translation",
      "source": "gateway",
      "status": 500
    },
    {
      "code": "translation_response_failed",
      "description": "The provider's response could not be converted.",
      "group": "translation",
      "source": "gateway",
      "status": 502
    },
    {
      "code": "translation_target_configuration_error",
      "description": "The translated provider target is misconfigured.",
      "group": "translation",
      "source": "gateway",
      "status": 500
    },
    {
      "code": "attachment_type_not_allowed",
      "description": "An attachment's detected file type is not allowed.",
      "group": "attachments",
      "source": "gateway",
      "status": 415
    },
    {
      "code": "attachment_too_large",
      "description": "An attachment is larger than the allowed size.",
      "group": "attachments",
      "source": "gateway",
      "status": 413
    },
    {
      "code": "attachment_request_too_large",
      "description": "The request's attachments are larger in total than allowed.",
      "group": "attachments",
      "source": "gateway",
      "status": 413
    },
    {
      "code": "attachment_too_many",
      "description": "The request carries more new attachments than allowed.",
      "group": "attachments",
      "source": "gateway",
      "status": 413
    },
    {
      "code": "attachment_too_many_pages",
      "description": "A document has more pages than allowed.",
      "group": "attachments",
      "source": "gateway",
      "status": 413
    },
    {
      "code": "attachment_unscannable",
      "description": "An attachment is encrypted, unparseable or a remote reference, and the policy blocks unscannable files.",
      "group": "attachments",
      "source": "gateway",
      "status": 422
    },
    {
      "code": "attachment_blocked",
      "description": "An attachment was blocked: a DLP finding in its text (sent with the surface's DLP block status, 400) or macros / an attachment that cannot be removed (403).",
      "group": "attachments",
      "source": "gateway",
      "status": 403
    },
    {
      "code": "upstream_bad_request",
      "description": "The provider rejected the request.",
      "group": "upstream",
      "source": "provider",
      "status": 400
    },
    {
      "code": "upstream_unauthorized",
      "description": "The provider rejected the gateway's credentials.",
      "failover_class": "auth",
      "group": "upstream",
      "source": "provider",
      "status": 401
    },
    {
      "code": "upstream_forbidden",
      "description": "The provider denied access.",
      "failover_class": "auth",
      "group": "upstream",
      "source": "provider",
      "status": 403
    },
    {
      "code": "upstream_not_found",
      "description": "The provider did not find the model or resource.",
      "failover_class": "model_not_found",
      "group": "upstream",
      "source": "provider",
      "status": 404
    },
    {
      "code": "upstream_timeout",
      "description": "The provider timed out.",
      "failover_class": "timeout",
      "group": "upstream",
      "source": "provider",
      "status": 504
    },
    {
      "code": "upstream_conflict",
      "description": "The provider rejected the request as a conflict.",
      "group": "upstream",
      "source": "provider",
      "status": 409
    },
    {
      "code": "upstream_request_too_large",
      "description": "The provider rejected the request as too large.",
      "group": "upstream",
      "source": "provider",
      "status": 413
    },
    {
      "code": "upstream_rate_limited",
      "description": "The provider rate-limited the request.",
      "failover_class": "rate_limit",
      "group": "upstream",
      "source": "provider",
      "status": 429
    },
    {
      "code": "upstream_overloaded",
      "description": "The provider is overloaded.",
      "failover_class": "server_error",
      "group": "upstream",
      "source": "provider",
      "status": 529
    },
    {
      "code": "upstream_error",
      "description": "The provider returned an error.",
      "group": "upstream",
      "source": "provider",
      "status": 502
    },
    {
      "code": "upstream_unreachable",
      "description": "The provider could not be reached.",
      "failover_class": "connection",
      "group": "upstream",
      "source": "provider",
      "status": 502
    },
    {
      "code": "upstream_stream_truncated",
      "description": "The provider's stream ended early.",
      "group": "upstream",
      "source": "provider",
      "status": 502
    },
    {
      "code": "upstream_stream_malformed",
      "description": "The provider's stream could not be read.",
      "group": "upstream",
      "source": "provider",
      "status": 502
    },
    {
      "code": "upstream_stream_error",
      "description": "The provider's stream reported an error.",
      "group": "upstream",
      "source": "provider",
      "status": 502
    },
    {
      "code": "remote_connector_unreachable",
      "description": "The provider could not be reached through its remote connector.",
      "failover_class": "connection",
      "group": "upstream",
      "source": "provider",
      "status": 503
    }
  ]
}
