Happy Cabbage Analytics · OpenAPI Overlay 1.0.0

API Evangelist enhancements — Happy Buyers External API

8 actions 8 updates update extends ../openapi/happy-cabbage-analytics-happy-buyers-external-openapi.yml
Derived by API Evangelist Built from the contracts Happy Cabbage Analytics publishes. Happy Cabbage Analytics did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-agentic-accessx-lifecycle-stagex-lifecycle-sincex-lifecycle-sourcex-api-evangelist-profilex-docs-urlx-spec-urlx-key-scopes

Targets 6

$.info
$.paths['/external/v1/orders'].post
$.paths['/external/v1/product-lines'].post
$.paths['/external/v1/product-inventory/{productId}/stores/{storeId}/carry-status'].put
$.paths['/external/v1/orders/{orderId}/items/{itemId}/store/{storeId}'].delete
$.paths['/external/v1/whoami'].get

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements — Happy Buyers External API
  version: 1.0.0
extends: ../openapi/happy-cabbage-analytics-happy-buyers-external-openapi.yml
x-provenance:
  generated: '2026-08-22'
  method: generated
  source: >-
    Derived from the provider's own contract fetched at https://cabbage.pub/v3/api-docs/external plus the
    conventions, errors, lifecycle and conformance artifacts in this repository. This overlay records API
    Evangelist enhancements only; the original specification in openapi/_original/ is never mutated.
actions:
- target: $.info
  description: >-
    Record the observed lifecycle stage and the base URL the contract is actually served from, both of
    which the published document omits.
  update:
    x-lifecycle-stage: beta
    x-lifecycle-since: '2026-06-05'
    x-lifecycle-source: https://www.happycabbage.io/release-notes
    x-api-evangelist-profile: https://apis.io/provider/happy-cabbage-analytics
    x-docs-url: https://cabbage.pub/swagger-ui/index.html
    x-spec-url: https://cabbage.pub/v3/api-docs/external
- target: $.info
  description: >-
    Surface the six API-key permission scopes that are currently discoverable only by reading the 403
    description on each individual operation.
  update:
    x-key-scopes:
    - organization_metadata:read
    - inventory:read
    - inventory:write
    - product_lines:read
    - product_lines:write
    - orders:write
- target: $.info
  description: Record the runtime semantics the contract does not state.
  update:
    x-idempotency: none
    x-rate-limits: undocumented
    x-error-format: vendor-json
    x-error-fields:
    - timestamp
    - status
    - error
    - path
    x-pagination: limit-offset with LimitOffsetResponse envelope (limit, offset, totalCount, hasMore, results)
- target: $.paths['/external/v1/orders'].post
  description: >-
    Flag the unguarded create. There is no Idempotency-Key and no cancel/void operation, so a retried
    createOrder produces a second purchase order that cannot be withdrawn through the API.
  update:
    x-agentic-access:
      action-class: write
      consequence: creates a purchase order visible to the retailer's buying team
      reversible: false
      reversal-operation: null
      idempotent: false
      escalation: confirm-with-human
- target: $.paths['/external/v1/product-lines'].post
  description: Unguarded create with no delete operation available to reverse it.
  update:
    x-agentic-access:
      action-class: write
      consequence: creates a product line that drives replenishment calculations
      reversible: false
      reversal-operation: null
      idempotent: false
      escalation: confirm-with-human
- target: $.paths['/external/v1/product-inventory/{productId}/stores/{storeId}/carry-status'].put
  description: Self-reversing toggle; safe for an agent to set and unset.
  update:
    x-agentic-access:
      action-class: write
      consequence: discontinues or resumes a product for reorder recommendations; product stays viewable
      reversible: true
      reversal-operation: updateCarryStatus
      idempotent: true
      escalation: none
- target: $.paths['/external/v1/orders/{orderId}/items/{itemId}/store/{storeId}'].delete
  description: The documented reversal for addOrderItem. No window is stated by the provider.
  update:
    x-agentic-access:
      action-class: delete
      consequence: removes a line item from an existing order
      reversible: true
      reversal-operation: addOrderItem
      reversal-window: unstated
      escalation: none
- target: $.paths['/external/v1/whoami'].get
  description: >-
    Mark the tenancy-establishing call. An agent should call this first to confirm which organization the
    key resolves to before performing any write.
  update:
    x-agent-preflight: true
    x-agentic-access:
      action-class: read
      consequence: none
      reversible: true
      escalation: none

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/happy-cabbage-analytics-happy-buyers-external-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.