StayingAPI · OpenAPI Overlay 1.0.0

API Evangelist enhancements for StayingAPI

13 actions 13 updates update extends openapi/stayingapi-openapi-original.json
Generated by API Evangelist Written by API Evangelist tooling for StayingAPI's API. It is a proposal applied on top of the contract, not a document StayingAPI publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-mcp-toolx-apievangelist-providerx-apievangelist-artifactsx-apievangelist-llms-txtx-apievangelist-api-catalogx-apievangelist-mcp-serverx-apievangelist-conventionsx-apievangelist-error-catalog

Targets 11

$.info
$.components.schemas.Error
$.components.schemas.Platform
$.paths['/search'].get
$.paths['/availability'].get
$.paths['/listing/{platform}/{id}'].get
$.paths['/price'].get
$.paths['/price-compare'].get
$.paths['/reviews'].get
$.paths['/jobs/{jobId}'].get
$.paths['/account'].get

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for StayingAPI
  version: 1.0.0
extends: openapi/stayingapi-openapi-original.json
x-apievangelist:
  generated: '2026-08-09'
  method: generated
  source: >-
    Derived from the harvested spec at https://api.stayingapi.com/openapi.json plus the
    artifacts in this repo. Never mutate the original — this overlay carries our additions.
  note: >-
    The scorer parses the ORIGINAL spec, so this overlay improves our derived artifacts and
    downstream tooling, not StayingAPI's raw contract score.
actions:
  - target: $.info
    description: Repo cross-links so an agent can find the surrounding artifacts from the spec alone.
    update:
      x-apievangelist-provider: stayingapi
      x-apievangelist-artifacts:
        conventions: conventions/stayingapi-conventions.yml
        errors: errors/stayingapi-error-codes.yml
        authentication: authentication/stayingapi-authentication.yml
        scopes: scopes/stayingapi-scopes.yml
        lifecycle: lifecycle/stayingapi-lifecycle.yml
        changelog: changelog/stayingapi-changelog.yml
        sandbox: sandbox/stayingapi-sandbox.yml
        data_model: data-model/stayingapi-data-model.yml
        conformance: conformance/stayingapi-conformance.yml
        mcp: mcp/stayingapi-mcp.yml
        tool_crosswalk: mcp/stayingapi-tool-crosswalk.yml
        skills: skills/_index.yml
        rate_limits: rate-limits/stayingapi-rate-limits.yml
        plans: plans/stayingapi-plans.yml
      x-apievangelist-llms-txt: https://stayingapi.com/llms.txt
      x-apievangelist-api-catalog: https://stayingapi.com/.well-known/api-catalog
  - target: $.info
    description: >-
      Record the second auth surface. The REST spec declares only http/bearer; the hosted MCP
      server uses OAuth 2.1 + PKCE with scope stays.read, which the spec never mentions.
    update:
      x-apievangelist-mcp-server:
        url: https://mcp.stayingapi.com/mcp
        transport: streamable-http
        auth: oauth2 authorization_code + PKCE S256
        scopes:
          - stays.read
        tools: 7
        crosswalk: mcp/stayingapi-tool-crosswalk.yml
  - target: $.info
    description: >-
      Make the cross-cutting runtime semantics machine-visible — OpenAPI does not express the
      async 202 threshold, the credit metering rules or the rate-limit headers.
    update:
      x-apievangelist-conventions:
        pagination: cursor (opaque base64; limit 1-100 default 20; meta.pagination.nextCursor)
        async_threshold_seconds: 8
        async_pattern: 202 + jobId -> poll GET /v1/jobs/{jobId} -> payload at data.result
        idempotency: not supported — read-only surface, retries naturally safe
        request_id_header: X-Request-Id
        rate_limit_headers:
          - X-RateLimit-Limit
          - X-RateLimit-Remaining
          - X-RateLimit-Reset
          - Retry-After
        metering: >-
          failed, empty, blocked and not-found calls are never billed; cached results bill at
          tier; polling and GET /account are always 0 credits
  - target: $.components.schemas.Error
    description: Point the locked error enum at the harvested per-code catalog.
    update:
      x-apievangelist-error-catalog: errors/stayingapi-error-codes.yml
      x-apievangelist-error-code-count: 35
      x-apievangelist-error-type-count: 9
      x-apievangelist-rfc9457: false
  - target: $.components.schemas.Platform
    description: >-
      Flag the gap between the declared platform enum and the platforms that are actually
      callable — a request for expedia, hotels or tripadvisor returns 400 platform_not_enabled.
    update:
      x-apievangelist-enabled-platforms:
        - airbnb
        - booking
        - vrbo
        - google
      x-apievangelist-declared-not-enabled:
        - expedia
        - hotels
        - tripadvisor
  - target: $.paths['/search'].get
    description: Bind the operation to the MCP tool that fronts it.
    update:
      x-apievangelist-mcp-tool: search_stays
  - target: $.paths['/availability'].get
    update:
      x-apievangelist-mcp-tool: check_availability
  - target: $.paths['/listing/{platform}/{id}'].get
    update:
      x-apievangelist-mcp-tool: get_listing
  - target: $.paths['/price'].get
    update:
      x-apievangelist-mcp-tool: get_price
  - target: $.paths['/price-compare'].get
    update:
      x-apievangelist-mcp-tool: compare_prices
  - target: $.paths['/reviews'].get
    update:
      x-apievangelist-mcp-tool: get_reviews
  - target: $.paths['/jobs/{jobId}'].get
    update:
      x-apievangelist-mcp-tool: get_job
  - target: $.paths['/account'].get
    description: No MCP tool fronts this operation — recorded as a deliberate REST-only surface.
    update:
      x-apievangelist-mcp-tool: null
      x-apievangelist-rest-only: true