{
  "openapi": "3.1.0",
  "info": {
    "title": "Disruptions Lab Public Site API",
    "version": "1.0.0",
    "description": "A read-only JSON discovery API for public Disruptions Lab company and page information. The canonical API is versioned at /api/v1. The deprecated /api paths remain compatibility aliases until 01 April 2028. This contract does not describe the private Foviant product API.",
    "contact": {
      "name": "Disruptions Lab",
      "url": "https://disruptionslab.com/contact",
      "email": "hello@disruptionslab.com"
    },
    "x-api-version": "v1",
    "x-version-policy": "https://disruptionslab.com/developers#api-versioning"
  },
  "servers": [
    {
      "url": "https://disruptionslab.com",
      "description": "Disruptions Lab public site"
    }
  ],
  "externalDocs": {
    "description": "Agent guidance and API version policy",
    "url": "https://disruptionslab.com/llms.txt"
  },
  "tags": [
    {
      "name": "Discovery",
      "description": "Public, unauthenticated discovery resources."
    }
  ],
  "paths": {
    "/api/v1": {
      "get": {
        "operationId": "getApiIndex",
        "summary": "List public site API resources",
        "description": "Returns the canonical v1 read-only discovery resources, version policy, and OpenAPI document URL.",
        "tags": ["Discovery"],
        "responses": {
          "200": {
            "$ref": "#/components/responses/ApiIndex"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceeded"
          }
        }
      },
      "head": {
        "operationId": "headApiIndex",
        "summary": "Inspect public site API resources",
        "description": "Returns the v1 API index response headers without a response body. Use GET when the discovery document is needed.",
        "tags": ["Discovery"],
        "responses": {
          "200": {
            "$ref": "#/components/responses/HeadApiIndex"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceeded"
          }
        }
      }
    },
    "/api/v1/site": {
      "get": {
        "operationId": "getSiteManifest",
        "summary": "Get the public site manifest",
        "description": "Returns public company positioning, product descriptions, canonical page resources, and machine-readable resource links for v1.",
        "tags": ["Discovery"],
        "responses": {
          "200": {
            "$ref": "#/components/responses/SiteManifest"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceeded"
          }
        }
      },
      "head": {
        "operationId": "headSiteManifest",
        "summary": "Inspect the public site manifest",
        "description": "Returns the v1 site manifest response headers without a response body. Use GET when the manifest is needed.",
        "tags": ["Discovery"],
        "responses": {
          "200": {
            "$ref": "#/components/responses/HeadSiteManifest"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceeded"
          }
        }
      }
    },
    "/api/v1/pages/{slug}": {
      "get": {
        "operationId": "getPublicPage",
        "summary": "Get a public page",
        "description": "Returns metadata and the Markdown representation for one canonical public page in v1.",
        "tags": ["Discovery"],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSlug"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/PublicPage"
          },
          "400": {
            "$ref": "#/components/responses/InvalidPageSlug"
          },
          "404": {
            "$ref": "#/components/responses/PageNotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceeded"
          }
        }
      },
      "head": {
        "operationId": "headPublicPage",
        "summary": "Inspect a public page",
        "description": "Returns the v1 public page response headers without a response body. Use GET when page metadata or Markdown is needed.",
        "tags": ["Discovery"],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSlug"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/HeadPublicPage"
          },
          "400": {
            "$ref": "#/components/responses/InvalidPageSlug"
          },
          "404": {
            "$ref": "#/components/responses/PageNotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceeded"
          }
        }
      }
    },
    "/api": {
      "get": {
        "operationId": "getLegacyApiIndex",
        "summary": "List public site API resources (deprecated)",
        "description": "Deprecated compatibility alias for GET /api/v1. Use the canonical versioned path for new integrations. Responses include Deprecation, Sunset, and Link lifecycle headers.",
        "deprecated": true,
        "tags": ["Discovery"],
        "responses": {
          "200": {
            "$ref": "#/components/responses/LegacyApiIndex"
          },
          "405": {
            "$ref": "#/components/responses/LegacyMethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/LegacyRateLimitExceeded"
          }
        }
      },
      "head": {
        "operationId": "headLegacyApiIndex",
        "summary": "Inspect public site API resources (deprecated)",
        "description": "Deprecated compatibility alias for HEAD /api/v1. Returns lifecycle and rate-limit headers without a response body.",
        "deprecated": true,
        "tags": ["Discovery"],
        "responses": {
          "200": {
            "$ref": "#/components/responses/HeadLegacyApiIndex"
          },
          "405": {
            "$ref": "#/components/responses/LegacyMethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/LegacyRateLimitExceeded"
          }
        }
      }
    },
    "/api/site": {
      "get": {
        "operationId": "getLegacySiteManifest",
        "summary": "Get the public site manifest (deprecated)",
        "description": "Deprecated compatibility alias for GET /api/v1/site. Use the canonical versioned path for new integrations. Responses include Deprecation, Sunset, and Link lifecycle headers.",
        "deprecated": true,
        "tags": ["Discovery"],
        "responses": {
          "200": {
            "$ref": "#/components/responses/LegacySiteManifest"
          },
          "405": {
            "$ref": "#/components/responses/LegacyMethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/LegacyRateLimitExceeded"
          }
        }
      },
      "head": {
        "operationId": "headLegacySiteManifest",
        "summary": "Inspect the public site manifest (deprecated)",
        "description": "Deprecated compatibility alias for HEAD /api/v1/site. Returns lifecycle and rate-limit headers without a response body.",
        "deprecated": true,
        "tags": ["Discovery"],
        "responses": {
          "200": {
            "$ref": "#/components/responses/HeadLegacySiteManifest"
          },
          "405": {
            "$ref": "#/components/responses/LegacyMethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/LegacyRateLimitExceeded"
          }
        }
      }
    },
    "/api/pages/{slug}": {
      "get": {
        "operationId": "getLegacyPublicPage",
        "summary": "Get a public page (deprecated)",
        "description": "Deprecated compatibility alias for GET /api/v1/pages/{slug}. Use the canonical versioned path for new integrations. Responses include Deprecation, Sunset, and Link lifecycle headers.",
        "deprecated": true,
        "tags": ["Discovery"],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSlug"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/LegacyPublicPage"
          },
          "400": {
            "$ref": "#/components/responses/LegacyInvalidPageSlug"
          },
          "404": {
            "$ref": "#/components/responses/LegacyPageNotFound"
          },
          "405": {
            "$ref": "#/components/responses/LegacyMethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/LegacyRateLimitExceeded"
          }
        }
      },
      "head": {
        "operationId": "headLegacyPublicPage",
        "summary": "Inspect a public page (deprecated)",
        "description": "Deprecated compatibility alias for HEAD /api/v1/pages/{slug}. Returns lifecycle and rate-limit headers without a response body.",
        "deprecated": true,
        "tags": ["Discovery"],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSlug"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/HeadLegacyPublicPage"
          },
          "400": {
            "$ref": "#/components/responses/LegacyInvalidPageSlug"
          },
          "404": {
            "$ref": "#/components/responses/LegacyPageNotFound"
          },
          "405": {
            "$ref": "#/components/responses/LegacyMethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/LegacyRateLimitExceeded"
          }
        }
      }
    }
  },
  "components": {
    "parameters": {
      "PageSlug": {
        "name": "slug",
        "in": "path",
        "required": true,
        "description": "Canonical public page identifier.",
        "schema": {
          "type": "string",
          "enum": ["home", "about", "contact", "developers", "privacy"]
        }
      }
    },
    "headers": {
      "ApiVersion": {
        "description": "API version served by this response.",
        "schema": {
          "type": "string",
          "const": "v1",
          "example": "v1"
        }
      },
      "RateLimitPolicy": {
        "description": "Quota policy name, request limit, and window in seconds.",
        "schema": {
          "type": "string",
          "example": "\"default\";q=60;w=60"
        }
      },
      "RateLimit": {
        "description": "Current quota state: policy name, remaining requests, and seconds until reset.",
        "schema": {
          "type": "string",
          "example": "\"default\";r=59;t=42"
        }
      },
      "RateLimitLimit": {
        "description": "Maximum requests allowed in the current window.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "example": 60
        }
      },
      "RateLimitRemaining": {
        "description": "Requests remaining in the current window.",
        "schema": {
          "type": "integer",
          "minimum": 0,
          "example": 59
        }
      },
      "RateLimitReset": {
        "description": "Seconds until the current rate-limit window resets.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "example": 42
        }
      },
      "RetryAfter": {
        "description": "Seconds to wait before retrying after a 429 response.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "example": 42
        }
      },
      "Allow": {
        "description": "Methods supported by the read-only API resource.",
        "schema": {
          "type": "string",
          "const": "GET, HEAD"
        }
      },
      "Deprecation": {
        "description": "Indicates that the unversioned compatibility alias is deprecated.",
        "schema": {
          "type": "string",
          "const": "true"
        }
      },
      "Sunset": {
        "description": "HTTP date after which the unversioned compatibility alias may be removed.",
        "schema": {
          "type": "string",
          "example": "Sat, 01 Apr 2028 00:00:00 GMT"
        }
      },
      "DeprecationLink": {
        "description": "Link to the public API versioning and deprecation policy.",
        "schema": {
          "type": "string",
          "example": "<https://disruptionslab.com/developers#api-versioning>; rel=\"deprecation\""
        }
      }
    },
    "schemas": {
      "ApiIndex": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "version",
          "description",
          "openapi",
          "versionPolicy",
          "resources"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable API name."
          },
          "version": {
            "type": "string",
            "const": "v1",
            "description": "Current API path version."
          },
          "description": {
            "type": "string",
            "description": "Scope and limitations of this API."
          },
          "openapi": {
            "type": "string",
            "format": "uri",
            "description": "Canonical OpenAPI document URL."
          },
          "versionPolicy": {
            "$ref": "#/components/schemas/VersionPolicy"
          },
          "resources": {
            "type": "array",
            "description": "Available API resources.",
            "items": {
              "$ref": "#/components/schemas/ApiResource"
            }
          }
        }
      },
      "VersionPolicy": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "current",
          "baseUrl",
          "legacyBaseUrl",
          "legacyStatus",
          "legacySunset",
          "policyUrl"
        ],
        "properties": {
          "current": {
            "type": "string",
            "const": "v1",
            "description": "Current API version."
          },
          "baseUrl": {
            "type": "string",
            "format": "uri",
            "description": "Canonical versioned API base URL."
          },
          "legacyBaseUrl": {
            "type": "string",
            "format": "uri",
            "description": "Unversioned compatibility base URL."
          },
          "legacyStatus": {
            "type": "string",
            "const": "deprecated",
            "description": "Lifecycle status of the unversioned alias."
          },
          "legacySunset": {
            "type": "string",
            "description": "Sunset HTTP date for the unversioned alias."
          },
          "policyUrl": {
            "type": "string",
            "format": "uri",
            "description": "Human-readable versioning and deprecation policy."
          }
        }
      },
      "ApiResource": {
        "type": "object",
        "additionalProperties": false,
        "required": ["rel", "method", "href", "description"],
        "properties": {
          "rel": {
            "type": "string",
            "description": "Stable relationship name for the resource."
          },
          "method": {
            "type": "string",
            "enum": ["GET"],
            "description": "Supported HTTP method. HEAD is also supported for metadata inspection."
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Absolute canonical resource URL."
          },
          "description": {
            "type": "string",
            "description": "What the resource returns."
          }
        }
      },
      "SiteManifest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "url",
          "description",
          "products",
          "resources",
          "machineReadable"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Canonical organization or site name."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Canonical site URL."
          },
          "description": {
            "type": "string",
            "description": "Short public company description."
          },
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductSummary"
            }
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PageResource"
            }
          },
          "machineReadable": {
            "$ref": "#/components/schemas/MachineReadableResources"
          }
        }
      },
      "ProductSummary": {
        "type": "object",
        "additionalProperties": false,
        "required": ["name", "description"],
        "properties": {
          "name": {
            "type": "string",
            "description": "Product name."
          },
          "description": {
            "type": "string",
            "description": "Public product description."
          }
        }
      },
      "PageResource": {
        "type": "object",
        "additionalProperties": false,
        "required": ["slug", "title", "url", "description"],
        "properties": {
          "slug": {
            "type": "string",
            "enum": ["home", "about", "contact", "developers", "privacy"],
            "description": "Canonical public page identifier."
          },
          "title": {
            "type": "string",
            "description": "Page title."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Canonical page URL."
          },
          "description": {
            "type": "string",
            "description": "Short page description."
          }
        }
      },
      "MachineReadableResources": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "api",
          "apiVersion",
          "apiVersionPolicy",
          "openapi",
          "agentGuidance",
          "sitemap"
        ],
        "properties": {
          "api": {
            "type": "string",
            "format": "uri",
            "description": "Canonical versioned public site API URL."
          },
          "apiVersion": {
            "type": "string",
            "const": "v1",
            "description": "Current public site API version."
          },
          "apiVersionPolicy": {
            "type": "string",
            "format": "uri",
            "description": "Public API versioning and deprecation policy URL."
          },
          "openapi": {
            "type": "string",
            "format": "uri",
            "description": "Canonical OpenAPI document URL."
          },
          "agentGuidance": {
            "type": "string",
            "format": "uri",
            "description": "Machine-readable agent guidance URL."
          },
          "sitemap": {
            "type": "string",
            "format": "uri",
            "description": "XML sitemap URL."
          }
        }
      },
      "PublicPage": {
        "type": "object",
        "additionalProperties": false,
        "required": ["slug", "title", "url", "description", "markdown"],
        "properties": {
          "slug": {
            "type": "string",
            "enum": ["home", "about", "contact", "developers", "privacy"],
            "description": "Canonical public page identifier."
          },
          "title": {
            "type": "string",
            "description": "Page title."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Canonical HTML page URL."
          },
          "description": {
            "type": "string",
            "description": "Short page description."
          },
          "markdown": {
            "type": "string",
            "description": "Current Markdown representation of the public page."
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["type", "title", "status", "detail", "error"],
        "properties": {
          "type": {
            "type": "string",
            "format": "uri",
            "description": "Problem type URI for the error category."
          },
          "title": {
            "type": "string",
            "description": "Short human-readable problem title."
          },
          "status": {
            "type": "integer",
            "minimum": 400,
            "maximum": 599,
            "description": "HTTP status code for the problem."
          },
          "detail": {
            "type": "string",
            "description": "Human-readable explanation of the problem."
          },
          "error": {
            "$ref": "#/components/schemas/Error"
          }
        }
      },
      "Error": {
        "type": "object",
        "additionalProperties": false,
        "required": ["code", "message", "resolution", "status"],
        "properties": {
          "code": {
            "type": "string",
            "description": "Stable machine-readable error code."
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the failure."
          },
          "resolution": {
            "type": "string",
            "description": "Action an agent or developer can take to resolve the failure."
          },
          "status": {
            "type": "integer",
            "minimum": 400,
            "maximum": 599,
            "description": "HTTP status code repeated in the error payload."
          }
        }
      }
    },
    "responses": {
      "ApiIndex": {
        "description": "The canonical v1 public site API directory.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiIndex"
            }
          }
        }
      },
      "HeadApiIndex": {
        "description": "The canonical v1 public site API directory headers; no response body is returned for HEAD.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          }
        }
      },
      "LegacyApiIndex": {
        "description": "The deprecated unversioned public site API directory. Use /api/v1 for new integrations.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Deprecation": {
            "$ref": "#/components/headers/Deprecation"
          },
          "Sunset": {
            "$ref": "#/components/headers/Sunset"
          },
          "Link": {
            "$ref": "#/components/headers/DeprecationLink"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiIndex"
            }
          }
        }
      },
      "HeadLegacyApiIndex": {
        "description": "The deprecated unversioned public site API directory headers; no response body is returned for HEAD.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Deprecation": {
            "$ref": "#/components/headers/Deprecation"
          },
          "Sunset": {
            "$ref": "#/components/headers/Sunset"
          },
          "Link": {
            "$ref": "#/components/headers/DeprecationLink"
          }
        }
      },
      "SiteManifest": {
        "description": "The canonical v1 public site manifest.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/SiteManifest"
            }
          }
        }
      },
      "HeadSiteManifest": {
        "description": "The canonical v1 public site manifest headers; no response body is returned for HEAD.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          }
        }
      },
      "LegacySiteManifest": {
        "description": "The deprecated unversioned public site manifest. Use /api/v1/site for new integrations.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Deprecation": {
            "$ref": "#/components/headers/Deprecation"
          },
          "Sunset": {
            "$ref": "#/components/headers/Sunset"
          },
          "Link": {
            "$ref": "#/components/headers/DeprecationLink"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/SiteManifest"
            }
          }
        }
      },
      "HeadLegacySiteManifest": {
        "description": "The deprecated unversioned public site manifest headers; no response body is returned for HEAD.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Deprecation": {
            "$ref": "#/components/headers/Deprecation"
          },
          "Sunset": {
            "$ref": "#/components/headers/Sunset"
          },
          "Link": {
            "$ref": "#/components/headers/DeprecationLink"
          }
        }
      },
      "PublicPage": {
        "description": "The requested canonical v1 public page.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/PublicPage"
            }
          }
        }
      },
      "HeadPublicPage": {
        "description": "The canonical v1 public page headers; no response body is returned for HEAD.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          }
        }
      },
      "LegacyPublicPage": {
        "description": "The requested public page from the deprecated unversioned alias. Use /api/v1/pages/{slug} for new integrations.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Deprecation": {
            "$ref": "#/components/headers/Deprecation"
          },
          "Sunset": {
            "$ref": "#/components/headers/Sunset"
          },
          "Link": {
            "$ref": "#/components/headers/DeprecationLink"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/PublicPage"
            }
          }
        }
      },
      "HeadLegacyPublicPage": {
        "description": "The requested public page headers from the deprecated unversioned alias; no response body is returned for HEAD.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Deprecation": {
            "$ref": "#/components/headers/Deprecation"
          },
          "Sunset": {
            "$ref": "#/components/headers/Sunset"
          },
          "Link": {
            "$ref": "#/components/headers/DeprecationLink"
          }
        }
      },
      "MethodNotAllowed": {
        "description": "The canonical discovery API is read-only.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Allow": {
            "$ref": "#/components/headers/Allow"
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "LegacyMethodNotAllowed": {
        "description": "The deprecated unversioned discovery API is read-only.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Allow": {
            "$ref": "#/components/headers/Allow"
          },
          "Deprecation": {
            "$ref": "#/components/headers/Deprecation"
          },
          "Sunset": {
            "$ref": "#/components/headers/Sunset"
          },
          "Link": {
            "$ref": "#/components/headers/DeprecationLink"
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "InvalidPageSlug": {
        "description": "The page slug is not valid URL encoding.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "LegacyInvalidPageSlug": {
        "description": "The page slug is not valid URL encoding on the deprecated unversioned alias.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Deprecation": {
            "$ref": "#/components/headers/Deprecation"
          },
          "Sunset": {
            "$ref": "#/components/headers/Sunset"
          },
          "Link": {
            "$ref": "#/components/headers/DeprecationLink"
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "PageNotFound": {
        "description": "The requested canonical public page slug does not exist.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "LegacyPageNotFound": {
        "description": "The requested public page slug does not exist on the deprecated unversioned alias.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Deprecation": {
            "$ref": "#/components/headers/Deprecation"
          },
          "Sunset": {
            "$ref": "#/components/headers/Sunset"
          },
          "Link": {
            "$ref": "#/components/headers/DeprecationLink"
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "RateLimitExceeded": {
        "description": "The canonical request quota has been exceeded. Retry after the number of seconds in Retry-After.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Retry-After": {
            "$ref": "#/components/headers/RetryAfter"
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "LegacyRateLimitExceeded": {
        "description": "The deprecated unversioned request quota has been exceeded. Retry after the number of seconds in Retry-After.",
        "headers": {
          "API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "RateLimit-Policy": {
            "$ref": "#/components/headers/RateLimitPolicy"
          },
          "RateLimit": {
            "$ref": "#/components/headers/RateLimit"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Retry-After": {
            "$ref": "#/components/headers/RetryAfter"
          },
          "Deprecation": {
            "$ref": "#/components/headers/Deprecation"
          },
          "Sunset": {
            "$ref": "#/components/headers/Sunset"
          },
          "Link": {
            "$ref": "#/components/headers/DeprecationLink"
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      }
    }
  }
}
