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
Generated by API Evangelist Written by API Evangelist tooling for Happy Cabbage Analytics's API. It is a proposal applied on top of the contract, not a document Happy Cabbage Analytics publishes.
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