Brooklinen · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Brooklinen Shopify Storefront JSON API

8 actions 8 updates update extends openapi/brooklinen-storefront-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Brooklinen's API. It is a proposal applied on top of the contract, not a document Brooklinen publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-notex-apievangelist-paginationx-apievangelist-provenancex-apievangelist-artifactsx-apievangelist-companion-surfacex-apievangelist-identityx-apievangelist-identifier

Targets 7

$.info
$.paths['/products.json'].get
$.paths['/collections/{handle}/products.json'].get
$.paths['/cart.js'].get
$.paths['/products/{handle}.json'].get
$.components.schemas.Product
$.components.schemas.Variant

OpenAPI Overlay

brooklinen-storefront-overlay.yaml Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Brooklinen Shopify Storefront JSON API
  version: 1.0.0
extends: openapi/brooklinen-storefront-openapi.yml
x-generated: '2026-08-02'
x-method: generated
x-source: https://www.brooklinen.com/agents.md
actions:
- target: $.info
  description: Record provenance and the API Evangelist artifact set on the spec root.
  update:
    x-apievangelist-provenance:
      method: generated
      generated: '2026-08-02'
      source: https://www.brooklinen.com/agents.md
      note: >-
        Brooklinen publishes no OpenAPI. This document was generated from the endpoint list Brooklinen
        publishes in /agents.md plus live probes of each endpoint on 2026-08-02.
    x-apievangelist-artifacts:
      conventions: conventions/brooklinen-conventions.yml
      errors: errors/brooklinen-problem-types.yml
      authentication: authentication/brooklinen-authentication.yml
      lifecycle: lifecycle/brooklinen-lifecycle.yml
      data_model: data-model/brooklinen-data-model.yml
      conformance: conformance/brooklinen-conformance.yml
      mcp: mcp/brooklinen-mcp.yml
      tool_crosswalk: mcp/brooklinen-tool-crosswalk.yml
      skills: skills/_index.yml
- target: $.info
  description: Note the sibling transactional surface, which is not described by this document.
  update:
    x-apievangelist-companion-surface:
      protocol: Universal Commerce Protocol over MCP
      endpoint: https://www.brooklinen.com/api/ucp/mcp
      discovery: https://www.brooklinen.com/.well-known/ucp
      gated: true
      gate: UCP agent profile (meta.ucp-agent.profile / UCP-Agent header)
      note: Cart mutation, checkout and orders live only on that surface.
- target: $.paths['/products.json'].get
  description: Record the pagination contract, which the storefront does not self-describe.
  update:
    x-apievangelist-pagination:
      style: page-number
      params: [limit, page]
      terminator: empty products array
      total_count: false
      cursor: false
      link_header: false
- target: $.paths['/collections/{handle}/products.json'].get
  description: Record the pagination contract and the well-known `all` handle.
  update:
    x-apievangelist-pagination:
      style: page-number
      params: [limit, page]
      terminator: empty products array
    x-apievangelist-note: The `all` handle returns the full catalog.
- target: $.paths['/cart.js'].get
  description: Flag the session-identity model, which differs from the UCP cart.
  update:
    x-apievangelist-identity:
      scope: browser session cookie
      anonymous_behavior: returns a new empty cart
      note: >-
        Not the same object as a UCP cart, which is agent-owned and addressed by id. See
        mcp/brooklinen-tool-crosswalk.yml.
- target: $.paths['/products/{handle}.json'].get
  description: Note that variant prices are decimal strings, a common integration trap.
  update:
    x-apievangelist-note: >-
      Variant `price` and `compare_at_price` are decimal strings (e.g. "159.00"), not integer minor units.
      Cart totals on /cart.js, by contrast, are integer minor units.
- target: $.components.schemas.Product
  description: Record the addressing key used across the whole surface.
  update:
    x-apievangelist-identifier:
      primary: id
      addressable_by: handle
      note: Every other storefront path addresses products by `handle`, not `id`.
- target: $.components.schemas.Variant
  description: Record how the positional option fields bind to the product option axes.
  update:
    x-apievangelist-note: >-
      option1/option2/option3 correspond positionally to Product.options[].name; read Product.options to
      interpret them.