> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sailresearch.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a Sailbox's HTTP policy

> Returns the HTTP policy currently attached to a Sailbox.



## OpenAPI

````yaml /sailbox-openapi.json get /sailboxes/{sailbox_id}/http-policy
openapi: 3.1.0
info:
  title: Sail Sailbox API
  version: '2026-08-24'
  description: >-
    Create and operate Sailboxes over HTTP. Sailboxes are fast-booting virtual
    machines that you can pause, resume, and checkpoint.


    Three things happen outside this API: running commands and moving files,
    turning on SSH, and building an image. The first two take an SDK or the CLI,
    and building an image takes an SDK. Once SSH is on you can use `ssh` and
    `scp` for the first of those. See the [HTTP API guide](/sailboxes-http-api).
servers:
  - url: https://sailbox-api.sailresearch.com/v1
security:
  - BearerAuth: []
tags:
  - name: Apps
    description: Groups that own Sailboxes. One app per workload.
  - name: Lifecycle
    description: >-
      A Sailbox's whole life: create it, watch it, stop and start it, terminate
      it.
  - name: Checkpoints
    description: Save a Sailbox to start from later, and copy a running one.
  - name: Networking
    description: >-
      Publish ports, serve them on hostnames you own, and identify a Sailbox to
      other Sailboxes.
  - name: Secrets
    description: >-
      Organization values that HTTP policies can add to matching requests. Sail
      never returns a stored value.
  - name: HTTP policies
    description: Rules for HTTPS requests a Sailbox sends.
  - name: Volumes
    description: >-
      Shared storage that outlives any one Sailbox. Alpha: these endpoints can
      still change.
  - name: SSH access
    description: Certificates for connecting to a Sailbox with `ssh`.
  - name: Usage
    description: Resource usage and spend.
  - name: Identity
    description: Who your API key belongs to.
paths:
  /sailboxes/{sailbox_id}/http-policy:
    get:
      tags:
        - HTTP policies
      summary: Get a Sailbox's HTTP policy
      description: Returns the HTTP policy currently attached to a Sailbox.
      operationId: getSailboxHttpPolicy
      parameters:
        - $ref: '#/components/parameters/SailboxId'
      responses:
        '200':
          description: The attached policy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpPolicy'
        '400':
          description: >-
            The request was rejected. See the error message for the offending
            field.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  message: sailbox id must start with "sb_"
                  type: invalid_request_error
                  param: null
                  code: null
        '401':
          description: The API key is missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  message: Invalid API key
                  type: authentication_error
                  param: null
                  code: invalid_api_key
        '402':
          description: >-
            The organization is out of credits. The error carries a
            `billing_url` pointing at the page where you add them. Retry once
            you have.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  message: >-
                    Your API key has been disabled due to insufficient credits.
                    Visit https://app.sailresearch.com/billing to add credits.
                  type: billing_error
                  param: null
                  code: credits_exhausted
                  billing_url: https://app.sailresearch.com/billing
        '403':
          description: The API key is not allowed to perform this operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  message: sailboxes require an organization-scoped API key
                  type: permission_error
                  param: null
                  code: null
        '404':
          description: >-
            The Sailbox does not exist in your organization, or it has no HTTP
            policy attached.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  message: HTTP policy not found
                  type: not_found_error
                  param: null
                  code: null
        '429':
          description: >-
            For its first ten minutes a new organization is capped on how many
            requests it can have in flight at once, and yours is over that cap.
            The request never started, so retry it unchanged after the delay in
            the `Retry-After` header. The limit clears as those requests finish.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  message: >-
                    Too many concurrent requests. Please retry after some of
                    your organization's in-flight requests complete.
                  type: rate_limit_error
                  param: null
                  code: rate_limited
          headers:
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
        '500':
          description: Server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  message: get HTTP policy failed
                  type: server_error
                  param: null
                  code: null
        '503':
          description: >-
            Sail is momentarily unavailable. Retry after the delay in the
            `Retry-After` header when one is present, and with backoff
            otherwise.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  message: Authentication service unavailable
                  type: server_error
                  param: null
                  code: null
          headers:
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
components:
  parameters:
    SailboxId:
      name: sailbox_id
      in: path
      required: true
      schema:
        type: string
      description: >-
        Id of the Sailbox, as returned by create. It is `sb_` followed by a
        UUID.
  schemas:
    HttpPolicy:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
          pattern: >-
            ^hp_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
          description: Stable policy ID.
        org_id:
          type: string
          description: Organization that owns the policy.
        name:
          type: string
          description: Display name.
        document:
          $ref: '#/components/schemas/HttpPolicyDocument'
        created_at:
          type: string
          format: date-time
          description: When the policy was created.
        updated_at:
          type: string
          format: date-time
          description: When the policy name last changed.
      required:
        - id
        - org_id
        - name
        - document
        - created_at
        - updated_at
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorObject'
    HttpPolicyDocument:
      type: object
      minProperties: 1
      maxProperties: 100
      propertyNames:
        pattern: >-
          ^[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*(?:\*(?:\.(?![0-9A-Za-z.\u0130\u212A-]{254})[A-Za-z0-9\u0130\u212A](?:[A-Za-z0-9\u0130\u212A-]{0,61}[A-Za-z0-9\u0130\u212A])?(?:\.[A-Za-z0-9\u0130\u212A](?:[A-Za-z0-9\u0130\u212A-]{0,61}[A-Za-z0-9\u0130\u212A])?)*)?|(?![0-9A-Za-z.\u0130\u212A-]{254})[A-Za-z0-9\u0130\u212A](?:[A-Za-z0-9\u0130\u212A-]{0,61}[A-Za-z0-9\u0130\u212A])?(?:\.[A-Za-z0-9\u0130\u212A](?:[A-Za-z0-9\u0130\u212A-]{0,61}[A-Za-z0-9\u0130\u212A])?)*)[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*$
      patternProperties:
        ^[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*\*:
          $ref: '#/components/schemas/HttpPolicyHost'
          not:
            required:
              - missing_alpn
          description: A wildcard or catch-all host entry cannot set `missing_alpn`.
      additionalProperties:
        $ref: '#/components/schemas/HttpPolicyHost'
      description: >-
        Host patterns mapped to rules. Use an exact hostname, `*.example.com`
        for one direct subdomain, or `*` for anything not matched earlier. A
        hostname is at most 253 characters. A document can contain at most 100
        rules in total and is at most 64 KiB when encoded.
    ErrorObject:
      type: object
      required:
        - message
        - type
        - param
        - code
      properties:
        message:
          type: string
          description: Human-readable description of what went wrong.
        type:
          type: string
          description: >-
            Error category: `invalid_request_error`, `authentication_error`,
            `permission_error`, `billing_error`, `not_found_error`,
            `conflict_error`, `rate_limit_error`, `quota_exceeded_error`, or
            `server_error`.
        param:
          oneOf:
            - type: string
            - type: 'null'
          description: >-
            The request field the error refers to, when the error is about one
            field.
        code:
          oneOf:
            - type: string
            - type: integer
            - type: 'null'
          description: Stable short code for the error, when one applies.
        billing_url:
          type: string
          format: uri
          description: Page where you add credits. Sent with a 402.
      additionalProperties: true
    HttpPolicyHost:
      type: object
      additionalProperties: false
      required:
        - rules
      properties:
        missing_alpn:
          type: string
          enum:
            - http/1.1
          description: >-
            For an exact host, treat a connection that does not announce an HTTP
            version as HTTP/1.1 so the rules apply. By default such a connection
            passes through with the policy not applied. Most policies do not
            need this.
        rules:
          type: array
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/HttpPolicyRule'
          description: Rules for this host, in the order Sail tests them.
    HttpPolicyRule:
      type: object
      additionalProperties: false
      description: >-
        One rule. Rules run in order and the first match decides the result.
        Only the last rule may omit `match`. Use `respond` by itself, or combine
        `forward` and `request` as needed.
      properties:
        match:
          $ref: '#/components/schemas/HttpPolicyRequestMatch'
        respond:
          $ref: '#/components/schemas/HttpPolicyResponse'
        forward:
          $ref: '#/components/schemas/HttpPolicyForward'
        request:
          $ref: '#/components/schemas/HttpPolicyRequestChange'
      not:
        anyOf:
          - required:
              - respond
              - forward
          - required:
              - respond
              - request
    HttpPolicyRequestMatch:
      type: object
      additionalProperties: false
      description: >-
        Conditions tested against the request before any changes are made. At
        least one condition is required.
      anyOf:
        - required:
            - method
        - required:
            - path
        - required:
            - headers
          properties:
            headers:
              minItems: 1
        - required:
            - query
          properties:
            query:
              minItems: 1
      properties:
        method:
          description: >-
            One or more case-sensitive HTTP methods, such as `GET`, as a single
            string or a nonempty list of strings.
          oneOf:
            - type: string
              maxLength: 4096
              pattern: ^[0-9A-Za-z!#$%&'*+\-.^_`|~]+$
            - type: array
              minItems: 1
              items:
                type: string
                maxLength: 4096
                pattern: ^[0-9A-Za-z!#$%&'*+\-.^_`|~]+$
        path:
          $ref: '#/components/schemas/HttpPolicyPathMatcher'
          description: Matches an absolute request path. Each value must start with `/`.
        headers:
          type: array
          maxItems: 100
          items:
            $ref: '#/components/schemas/HttpPolicyHeaderNameValueMatcher'
          description: Header conditions. Every entry must match.
        query:
          type: array
          maxItems: 100
          items:
            $ref: '#/components/schemas/HttpPolicyQueryNameValueMatcher'
          description: Query parameter conditions. Every entry must match.
    HttpPolicyResponse:
      type: object
      additionalProperties: false
      required:
        - status
      description: >-
        A response Sail returns without sending an HTTP request to the
        destination.
      properties:
        status:
          type: integer
          minimum: 200
          maximum: 599
          description: HTTP status code to return.
        headers:
          type: object
          propertyNames:
            pattern: >-
              ^(?![\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*(?:[Cc][Oo][Nn][Nn][Ee][Cc][Tt][Ii\u0130][Oo][Nn]|[Cc][Oo][Nn][Tt][Ee][Nn][Tt]-[Ll][Ee][Nn][Gg][Tt][Hh]|[Hh][Oo][Ss][Tt]|[Kk\u212A][Ee][Ee][Pp]-[Aa][Ll][Ii\u0130][Vv][Ee]|[Pp][Rr][Oo][Xx][Yy]-[Aa][Uu][Tt][Hh][Ee][Nn][Tt][Ii\u0130][Cc][Aa][Tt][Ee]|[Pp][Rr][Oo][Xx][Yy]-[Aa][Uu][Tt][Hh][Oo][Rr][Ii\u0130][Zz][Aa][Tt][Ii\u0130][Oo][Nn]|[Pp][Rr][Oo][Xx][Yy]-[Cc][Oo][Nn][Nn][Ee][Cc][Tt][Ii\u0130][Oo][Nn]|[Tt][Ee]|[Tt][Rr][Aa][Ii\u0130][Ll][Ee][Rr]|[Tt][Rr][Aa][Nn][Ss][Ff][Ee][Rr]-[Ee][Nn][Cc][Oo][Dd][Ii\u0130][Nn][Gg]|[Uu][Pp][Gg][Rr][Aa][Dd][Ee])[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*$)[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*[0-9A-Za-z!#$%&'*+\-.^_`|~\u0130\u212A]{1,128}[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*$
          additionalProperties:
            description: >-
              One string or a nonempty list of strings. Each string is limited
              to 4096 bytes of UTF-8.
            oneOf:
              - type: string
                maxLength: 4096
                pattern: >-
                  ^(?:(?:[^\u0000-\u0008\u000A-\u001F\u007F$]|\$(?!\{))*|(?:[^\u0000-\u0008\u000A-\u001F\u007F$]|\$\$)*)$
              - type: array
                minItems: 1
                items:
                  type: string
                  maxLength: 4096
                  pattern: >-
                    ^(?:(?:[^\u0000-\u0008\u000A-\u001F\u007F$]|\$(?!\{))*|(?:[^\u0000-\u0008\u000A-\u001F\u007F$]|\$\$)*)$
          description: >-
            Headers to return. Secret references are not allowed here.
            Sail-managed headers such as `host` and `content-length` cannot be
            set, and a header name is at most 128 characters.
        body:
          type: string
          maxLength: 65536
          pattern: ^(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
          description: >-
            Response body, up to 64 KiB as UTF-8. Secret references are not
            allowed here.
      allOf:
        - if:
            properties:
              status:
                enum:
                  - 204
                  - 304
          then:
            not:
              required:
                - body
    HttpPolicyForward:
      type: object
      additionalProperties: false
      required:
        - host
      description: Another HTTPS host to send the request to.
      properties:
        host:
          type: string
          pattern: >-
            ^[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*(?![0-9A-Za-z.\u0130\u212A-]{254})[A-Za-z0-9\u0130\u212A](?:[A-Za-z0-9\u0130\u212A-]{0,61}[A-Za-z0-9\u0130\u212A])?(?:\.[A-Za-z0-9\u0130\u212A](?:[A-Za-z0-9\u0130\u212A-]{0,61}[A-Za-z0-9\u0130\u212A])?)*[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*$
          description: >-
            Exact hostname, without a scheme, port, or wildcard. At most 253
            characters after surrounding whitespace is trimmed.
        port:
          type: integer
          minimum: 0
          maximum: 65535
          description: HTTPS port. Omit it, or send `0`, to use 443.
    HttpPolicyRequestChange:
      type: object
      additionalProperties: false
      minProperties: 1
      description: >-
        Changes to make before sending the request. A header, query parameter,
        or path can be targeted only once in a rule.
      properties:
        set:
          $ref: '#/components/schemas/HttpPolicySetChange'
        add:
          $ref: '#/components/schemas/HttpPolicyAddChange'
        remove:
          $ref: '#/components/schemas/HttpPolicyRemoveChange'
    HttpPolicyPathMatcher:
      description: >-
        A plain string means an exact match. Use `equals`, `prefix`, or `one_of`
        to choose the matching rule explicitly. Every value must start with `/`.
        Each string is limited to 4096 bytes of UTF-8. Secret references are not
        allowed in matchers.
      oneOf:
        - type: string
          maxLength: 4096
          pattern: ^/(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
        - type: object
          additionalProperties: false
          required:
            - equals
          properties:
            equals:
              type: string
              maxLength: 4096
              pattern: ^/(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
        - type: object
          additionalProperties: false
          required:
            - prefix
          properties:
            prefix:
              type: string
              maxLength: 4096
              pattern: ^/(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
        - type: object
          additionalProperties: false
          required:
            - one_of
          properties:
            one_of:
              type: array
              minItems: 1
              items:
                type: string
                maxLength: 4096
                pattern: ^/(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
    HttpPolicyHeaderNameValueMatcher:
      type: object
      additionalProperties: false
      minProperties: 1
      properties:
        name:
          $ref: '#/components/schemas/HttpPolicyHeaderNameMatcher'
          description: Matches the header name.
        value:
          $ref: '#/components/schemas/HttpPolicyMatcher'
          description: Matches its value.
        present:
          type: boolean
          description: >-
            Set to `false` with `name` to match when that name is absent. When
            omitted or true, each name or value condition you provide must be
            present and match.
      anyOf:
        - required:
            - name
        - required:
            - value
      allOf:
        - if:
            required:
              - present
            properties:
              present:
                const: false
          then:
            required:
              - name
            not:
              required:
                - value
    HttpPolicyQueryNameValueMatcher:
      type: object
      additionalProperties: false
      minProperties: 1
      properties:
        name:
          $ref: '#/components/schemas/HttpPolicyMatcher'
          description: Matches the query parameter name.
        value:
          $ref: '#/components/schemas/HttpPolicyMatcher'
          description: Matches its value.
        present:
          type: boolean
          description: >-
            Set to `false` with `name` to match when that name is absent. When
            omitted or true, each name or value condition you provide must be
            present and match.
      anyOf:
        - required:
            - name
        - required:
            - value
      allOf:
        - if:
            required:
              - present
            properties:
              present:
                const: false
          then:
            required:
              - name
            not:
              required:
                - value
    HttpPolicySetChange:
      type: object
      additionalProperties: false
      description: >-
        Values to replace or create. At least one of `path`, `headers`, or
        `query` must name a target.
      anyOf:
        - required:
            - path
        - required:
            - headers
          properties:
            headers:
              minProperties: 1
        - required:
            - query
          properties:
            query:
              minProperties: 1
      properties:
        path:
          type: string
          maxLength: 4096
          pattern: ^/(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
          description: Replacement absolute path. Secret references are not allowed here.
        headers:
          type: object
          propertyNames:
            pattern: >-
              ^(?![\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*(?:[Cc][Oo][Nn][Nn][Ee][Cc][Tt][Ii\u0130][Oo][Nn]|[Cc][Oo][Nn][Tt][Ee][Nn][Tt]-[Ll][Ee][Nn][Gg][Tt][Hh]|[Hh][Oo][Ss][Tt]|[Kk\u212A][Ee][Ee][Pp]-[Aa][Ll][Ii\u0130][Vv][Ee]|[Pp][Rr][Oo][Xx][Yy]-[Aa][Uu][Tt][Hh][Ee][Nn][Tt][Ii\u0130][Cc][Aa][Tt][Ee]|[Pp][Rr][Oo][Xx][Yy]-[Aa][Uu][Tt][Hh][Oo][Rr][Ii\u0130][Zz][Aa][Tt][Ii\u0130][Oo][Nn]|[Pp][Rr][Oo][Xx][Yy]-[Cc][Oo][Nn][Nn][Ee][Cc][Tt][Ii\u0130][Oo][Nn]|[Tt][Ee]|[Tt][Rr][Aa][Ii\u0130][Ll][Ee][Rr]|[Tt][Rr][Aa][Nn][Ss][Ff][Ee][Rr]-[Ee][Nn][Cc][Oo][Dd][Ii\u0130][Nn][Gg]|[Uu][Pp][Gg][Rr][Aa][Dd][Ee])[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*$)[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*[0-9A-Za-z!#$%&'*+\-.^_`|~\u0130\u212A]{1,128}[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*$
          additionalProperties:
            description: >-
              One string or a nonempty list of strings. Each string is limited
              to 4096 bytes of UTF-8.
            oneOf:
              - type: string
                maxLength: 4096
                pattern: >-
                  ^(?:[^\u0000-\u0008\u000A-\u001F\u007F$]|\$\$|\$\{secrets\.[A-Za-z0-9][A-Za-z0-9_-]{0,127}\})*$
              - type: array
                minItems: 1
                items:
                  type: string
                  maxLength: 4096
                  pattern: >-
                    ^(?:[^\u0000-\u0008\u000A-\u001F\u007F$]|\$\$|\$\{secrets\.[A-Za-z0-9][A-Za-z0-9_-]{0,127}\})*$
          description: >-
            Headers to set. Values may include `${secrets.NAME}` for a secret
            that already exists in your organization. Write a literal dollar
            sign as `$$`. Sail-managed headers such as `host` and
            `content-length` cannot be set, and a header name is at most 128
            characters.
        query:
          type: object
          propertyNames:
            minLength: 1
            maxLength: 4096
            pattern: ^(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
          additionalProperties:
            description: >-
              One string or a nonempty list of strings. Each string is limited
              to 4096 bytes of UTF-8.
            oneOf:
              - type: string
                maxLength: 4096
                pattern: >-
                  ^(?:[^$\r\n]|\$\$|\$\{secrets\.[A-Za-z0-9][A-Za-z0-9_-]{0,127}\})*$
              - type: array
                minItems: 1
                items:
                  type: string
                  maxLength: 4096
                  pattern: >-
                    ^(?:[^$\r\n]|\$\$|\$\{secrets\.[A-Za-z0-9][A-Za-z0-9_-]{0,127}\})*$
          description: >-
            Query parameters to set. Values may include `${secrets.NAME}` for a
            secret that already exists in your organization. Write a literal
            dollar sign as `$$`.
    HttpPolicyAddChange:
      type: object
      additionalProperties: false
      description: >-
        Values to append. Secret references are not allowed here. At least one
        of the two maps must be nonempty.
      anyOf:
        - required:
            - headers
          properties:
            headers:
              minProperties: 1
        - required:
            - query
          properties:
            query:
              minProperties: 1
      properties:
        headers:
          type: object
          propertyNames:
            pattern: >-
              ^(?![\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*(?:[Cc][Oo][Nn][Nn][Ee][Cc][Tt][Ii\u0130][Oo][Nn]|[Cc][Oo][Nn][Tt][Ee][Nn][Tt]-[Ll][Ee][Nn][Gg][Tt][Hh]|[Hh][Oo][Ss][Tt]|[Kk\u212A][Ee][Ee][Pp]-[Aa][Ll][Ii\u0130][Vv][Ee]|[Pp][Rr][Oo][Xx][Yy]-[Aa][Uu][Tt][Hh][Ee][Nn][Tt][Ii\u0130][Cc][Aa][Tt][Ee]|[Pp][Rr][Oo][Xx][Yy]-[Aa][Uu][Tt][Hh][Oo][Rr][Ii\u0130][Zz][Aa][Tt][Ii\u0130][Oo][Nn]|[Pp][Rr][Oo][Xx][Yy]-[Cc][Oo][Nn][Nn][Ee][Cc][Tt][Ii\u0130][Oo][Nn]|[Tt][Ee]|[Tt][Rr][Aa][Ii\u0130][Ll][Ee][Rr]|[Tt][Rr][Aa][Nn][Ss][Ff][Ee][Rr]-[Ee][Nn][Cc][Oo][Dd][Ii\u0130][Nn][Gg]|[Uu][Pp][Gg][Rr][Aa][Dd][Ee])[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*$)[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*[0-9A-Za-z!#$%&'*+\-.^_`|~\u0130\u212A]{1,128}[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*$
          additionalProperties:
            description: >-
              One string or a nonempty list of strings. Each string is limited
              to 4096 bytes of UTF-8.
            oneOf:
              - type: string
                maxLength: 4096
                pattern: >-
                  ^(?:(?:[^\u0000-\u0008\u000A-\u001F\u007F$]|\$(?!\{))*|(?:[^\u0000-\u0008\u000A-\u001F\u007F$]|\$\$)*)$
              - type: array
                minItems: 1
                items:
                  type: string
                  maxLength: 4096
                  pattern: >-
                    ^(?:(?:[^\u0000-\u0008\u000A-\u001F\u007F$]|\$(?!\{))*|(?:[^\u0000-\u0008\u000A-\u001F\u007F$]|\$\$)*)$
          description: >-
            Headers to append. Sail-managed headers such as `host` and
            `content-length` cannot be changed, and a header name is at most 128
            characters.
        query:
          type: object
          propertyNames:
            minLength: 1
            maxLength: 4096
            pattern: ^(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
          additionalProperties:
            description: >-
              One string or a nonempty list of strings. Each string is limited
              to 4096 bytes of UTF-8.
            oneOf:
              - type: string
                maxLength: 4096
                pattern: ^(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
              - type: array
                minItems: 1
                items:
                  type: string
                  maxLength: 4096
                  pattern: ^(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
          description: Query parameters to append.
    HttpPolicyRemoveChange:
      type: object
      additionalProperties: false
      description: >-
        Header and query parameter names to remove. At least one of the two
        lists must be nonempty.
      anyOf:
        - required:
            - headers
          properties:
            headers:
              minItems: 1
        - required:
            - query
          properties:
            query:
              minItems: 1
      properties:
        headers:
          type: array
          uniqueItems: true
          items:
            type: string
            pattern: >-
              ^(?![\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*(?:[Cc][Oo][Nn][Nn][Ee][Cc][Tt][Ii\u0130][Oo][Nn]|[Cc][Oo][Nn][Tt][Ee][Nn][Tt]-[Ll][Ee][Nn][Gg][Tt][Hh]|[Hh][Oo][Ss][Tt]|[Kk\u212A][Ee][Ee][Pp]-[Aa][Ll][Ii\u0130][Vv][Ee]|[Pp][Rr][Oo][Xx][Yy]-[Aa][Uu][Tt][Hh][Ee][Nn][Tt][Ii\u0130][Cc][Aa][Tt][Ee]|[Pp][Rr][Oo][Xx][Yy]-[Aa][Uu][Tt][Hh][Oo][Rr][Ii\u0130][Zz][Aa][Tt][Ii\u0130][Oo][Nn]|[Pp][Rr][Oo][Xx][Yy]-[Cc][Oo][Nn][Nn][Ee][Cc][Tt][Ii\u0130][Oo][Nn]|[Tt][Ee]|[Tt][Rr][Aa][Ii\u0130][Ll][Ee][Rr]|[Tt][Rr][Aa][Nn][Ss][Ff][Ee][Rr]-[Ee][Nn][Cc][Oo][Dd][Ii\u0130][Nn][Gg]|[Uu][Pp][Gg][Rr][Aa][Dd][Ee])[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*$)[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*[0-9A-Za-z!#$%&'*+\-.^_`|~\u0130\u212A]{1,128}[\t-\r\u0020\u0085\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*$
          description: >-
            Header names to remove. Sail-managed headers such as `host` and
            `content-length` cannot be changed, and a header name is at most 128
            characters.
        query:
          type: array
          uniqueItems: true
          items:
            type: string
            minLength: 1
            maxLength: 4096
            pattern: ^(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
          description: Query parameter names to remove.
    HttpPolicyHeaderNameMatcher:
      description: >-
        A plain string means an exact match. Use `equals`, `prefix`, or `one_of`
        to choose the matching rule explicitly. Each string is limited to 4096
        bytes of UTF-8. Secret references are not allowed in matchers. The
        Sail-managed names `content-length`, `host`, `trailer`, and
        `transfer-encoding` are rejected in every matching form.
      oneOf:
        - type: string
          maxLength: 4096
          pattern: >-
            ^(?!(?:[Cc][Oo][Nn][Tt][Ee][Nn][Tt]-[Ll][Ee][Nn][Gg][Tt][Hh]|[Hh][Oo][Ss][Tt]|[Tt][Rr][Aa][Ii\u0130][Ll][Ee][Rr]|[Tt][Rr][Aa][Nn][Ss][Ff][Ee][Rr]-[Ee][Nn][Cc][Oo][Dd][Ii\u0130][Nn][Gg])$)(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
        - type: object
          additionalProperties: false
          required:
            - equals
          properties:
            equals:
              type: string
              maxLength: 4096
              pattern: >-
                ^(?!(?:[Cc][Oo][Nn][Tt][Ee][Nn][Tt]-[Ll][Ee][Nn][Gg][Tt][Hh]|[Hh][Oo][Ss][Tt]|[Tt][Rr][Aa][Ii\u0130][Ll][Ee][Rr]|[Tt][Rr][Aa][Nn][Ss][Ff][Ee][Rr]-[Ee][Nn][Cc][Oo][Dd][Ii\u0130][Nn][Gg])$)(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
        - type: object
          additionalProperties: false
          required:
            - prefix
          properties:
            prefix:
              type: string
              maxLength: 4096
              pattern: >-
                ^(?!(?:[Cc][Oo][Nn][Tt][Ee][Nn][Tt]-[Ll][Ee][Nn][Gg][Tt][Hh]|[Hh][Oo][Ss][Tt]|[Tt][Rr][Aa][Ii\u0130][Ll][Ee][Rr]|[Tt][Rr][Aa][Nn][Ss][Ff][Ee][Rr]-[Ee][Nn][Cc][Oo][Dd][Ii\u0130][Nn][Gg])$)(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
        - type: object
          additionalProperties: false
          required:
            - one_of
          properties:
            one_of:
              type: array
              minItems: 1
              items:
                type: string
                maxLength: 4096
                pattern: >-
                  ^(?!(?:[Cc][Oo][Nn][Tt][Ee][Nn][Tt]-[Ll][Ee][Nn][Gg][Tt][Hh]|[Hh][Oo][Ss][Tt]|[Tt][Rr][Aa][Ii\u0130][Ll][Ee][Rr]|[Tt][Rr][Aa][Nn][Ss][Ff][Ee][Rr]-[Ee][Nn][Cc][Oo][Dd][Ii\u0130][Nn][Gg])$)(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
    HttpPolicyMatcher:
      description: >-
        A plain string means an exact match. Use `equals`, `prefix`, or `one_of`
        to choose the matching rule explicitly. Each string is limited to 4096
        bytes of UTF-8. Secret references are not allowed in matchers.
      oneOf:
        - type: string
          maxLength: 4096
          pattern: ^(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
        - type: object
          additionalProperties: false
          required:
            - equals
          properties:
            equals:
              type: string
              maxLength: 4096
              pattern: ^(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
        - type: object
          additionalProperties: false
          required:
            - prefix
          properties:
            prefix:
              type: string
              maxLength: 4096
              pattern: ^(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
        - type: object
          additionalProperties: false
          required:
            - one_of
          properties:
            one_of:
              type: array
              minItems: 1
              items:
                type: string
                maxLength: 4096
                pattern: ^(?:(?:[^$]|\$(?!\{))*|(?:[^$\r\n]|\$\$)*)$
  headers:
    RetryAfter:
      description: >-
        How many seconds to wait before retrying. On a 429 it also means the
        request never started, so the retry can reuse the same
        `Idempotency-Key`.
      schema:
        type: integer
        minimum: 0
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key

````