Kitchen Stories · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Kitchen Stories Internal API

8 actions 8 updates documentation extends ../openapi/kitchenstories-internal-openapi.json
Generated by API Evangelist Written by API Evangelist tooling for Kitchen Stories's API. It is a proposal applied on top of the contract, not a document Kitchen Stories publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

descriptionx-api-evangelist-notex-api-evangelist-sourcex-api-evangelist-capturedx-audiencex-reachablex-api-evangelist-conventionsx-api-evangelist-artifacts

Targets 8

$.info
$.info.license
$.servers[2]
$.components.securitySchemes.bearerAuth
$.components.securitySchemes.ApiKeyAuth
$
$.paths..responses
$.paths['/users/me/likes/'].get

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Kitchen Stories Internal API
  version: 1.0.0
extends: ../openapi/kitchenstories-internal-openapi.json
x-generated: '2026-07-19'
x-method: generated
x-source: >-
  Derived from openapi/kitchenstories-internal-openapi.json and from live behaviour observed on
  https://api.kitchenstories.io/api/ on 2026-07-19. This overlay records API Evangelist
  enhancements only; the original spec is never mutated.
actions:
- target: $.info
  description: >-
    Record the provider-published description URL and clarify that this is a first-party internal
    API with no public developer program.
  update:
    description: >-
      The Kitchen Stories content and community REST API ("Ultron"), which powers the Kitchen
      Stories apps and website. This is a first-party internal API: there is no public developer
      program, no self-service credential issuance and no published SDK. The provider serves this
      OpenAPI 3.0.0 document itself at https://api.kitchenstories.io/api/.
    x-api-evangelist-source: https://api.kitchenstories.io/api/
    x-api-evangelist-captured: '2026-07-19'
    x-audience: internal
- target: $.info.license
  description: >-
    Flag that the Apache 2.0 licence in info.license is spec-template boilerplate and should not
    be read as a licence grant over the API or its recipe content.
  update:
    x-api-evangelist-note: >-
      Boilerplate from the specification template. Kitchen Stories publishes no API licence; the
      site terms at https://www.kitchenstories.com/en/terms govern use of its content.
- target: $.servers[2]
  description: Mark the localhost entry as a developer-local server, not a reachable environment.
  update:
    x-reachable: false
    x-api-evangelist-note: Developer-local server; not a usable environment for API consumers.
- target: $.components.securitySchemes.bearerAuth
  description: Document how the bearer token is actually obtained.
  update:
    description: >-
      JWT bearer token obtained from POST /authenticate/credentials/ (email and password), POST
      /authenticate/ (anonymous or device), or the social endpoints
      /authenticate/appleid/, /authenticate/google/ and /authenticate/facebook/. Present as
      `Authorization: Bearer <token>`. A missing or invalid token yields 401 with
      `WWW-Authenticate: Bearer` and body {"detail": "Authentication credentials were not provided."}.
- target: $.components.securitySchemes.ApiKeyAuth
  description: Clarify the vendor user-identity header.
  update:
    description: >-
      Vendor-specific user-identity header (X-Ultron-User). Not a self-service API key; issued
      internally and not available through any public developer program.
- target: $
  description: >-
    Record the cross-cutting runtime semantics observed live but absent from the specification:
    media-type versioning, page-number pagination, ETag caching, and the absence of an
    idempotency contract and of any documented rate limit.
  update:
    x-api-evangelist-conventions:
      versioning:
        style: media-type
        current: '3'
        request_header: 'Accept: application/vnd.ajns.kitchenstories+json; version=3'
        response_header: x-ultron-api-version
      pagination:
        style: page-number
        request_param: page
        envelope:
          data: array
          links: first, last, next, prev
          meta.pagination: page, pages, count
      caching:
        etag: true
        cache_control: 'public, max-age=5400'
        vary: Accept, Accept-Language, Accept-Encoding, Authorization, Origin
      idempotency:
        supported: false
      rate_limits:
        documented: false
      request_id:
        supported: false
      trailing_slash:
        required: true
        exception: GET /users/validate/email
    x-api-evangelist-artifacts:
      authentication: ../authentication/kitchenstories-authentication.yml
      conventions: ../conventions/kitchenstories-conventions.yml
      errors: ../errors/kitchenstories-problem-types.yml
      lifecycle: ../lifecycle/kitchenstories-lifecycle.yml
      data_model: ../data-model/kitchenstories-data-model.yml
      conformance: ../conformance/kitchenstories-conformance.yml
      mcp: ../mcp/kitchenstories-mcp.yml
      skills: ../skills/_index.yml
- target: $.paths..responses
  description: >-
    Add the 401 response the live API returns for a missing or invalid credential. The published
    spec declares only 403 and 404 client errors, but every operation is globally secured, so 401
    is reachable on all 157 operations.
  update:
    '401':
      description: >-
        Authentication credentials were not provided, or the bearer token is invalid or expired.
      content:
        application/vnd.ajns.kitchenstories+json:
          schema:
            type: object
            required:
            - detail
            properties:
              detail:
                type: string
                example: Authentication credentials were not provided.
- target: $.paths['/users/me/likes/'].get
  description: >-
    Flag the legacy likes endpoint, which is superseded by /users/me/likes/feed-items/ by naming
    (operationId likes-list-old) but carries no formal deprecation marker in the spec.
  update:
    x-api-evangelist-legacy: true
    x-superseded-by: /users/me/likes/feed-items/
    x-api-evangelist-note: >-
      Signposted as legacy by its operationId only. Kitchen Stories publishes no deprecation
      policy and emits no Sunset or Deprecation headers, so no removal date can be stated.