openapi: 3.2.0 info: title: Happy Buyers External Stores API description: 'External API for Happy Buyers organization metadata and inventory data. Requests are authenticated with an API key in the hca-api-key header. Results are scoped to the organization attached to that key. List endpoints use limit/offset pagination and return totalCount plus hasMore. ' version: v1 servers: - url: https://api.happycabbage.ai description: External API security: - ApiKeyAuth: [] tags: - name: Stores description: Organization location metadata paths: /external/v1/stores: get: tags: - Stores summary: List stores description: Returns stores and locations for the API key organization. Distribution fulfillment relationships are included when configured. Requires organization_metadata:read. operationId: getStores parameters: - name: limit in: query description: Maximum number of stores to return. Maximum is 100. required: false schema: maximum: 100 minimum: 0 type: integer format: int32 default: 100 example: 100 - name: offset in: query description: Zero-based result offset for pagination. required: false schema: minimum: 0 type: integer format: int32 default: 0 example: 0 - name: search in: query description: Case-insensitive store/location name search text. required: false schema: type: string example: downtown - name: type in: query description: Store/location type filter. required: false schema: type: string enum: - RETAIL - DISTRIBUTION_CENTER - CULTIVATION - MANUFACTURING example: RETAIL - name: fulfilledByLocationId in: query description: Distribution center UUID used to filter locations fulfilled by that location. required: false schema: type: string format: uuid example: 11111111-1111-1111-1111-111111111111 responses: '403': description: API key does not include organization_metadata:read '401': description: Missing, malformed, or invalid API key '200': description: Paged store results content: application/json: schema: $ref: '#/components/schemas/LimitOffsetResponseStoreResponse' '400': description: Invalid query parameter components: schemas: StoreResponse: type: object properties: name: type: string description: Full display name of the store/location. example: Downtown Retail id: type: string description: Store/location UUID. format: uuid example: 11111111-1111-1111-1111-111111111111 type: type: string description: Store/location type. example: RETAIL enum: - RETAIL - DISTRIBUTION_CENTER - CULTIVATION - MANUFACTURING createdAt: type: string description: Timestamp when the store/location was created. format: date-time example: '2026-01-01T00:00:00Z' stateCode: type: string description: Two-letter state code for the store/location. example: CA fulfilledById: type: string description: Distribution center UUID that fulfills this location, when a fulfillment relationship exists. format: uuid fulfilledByStoreName: type: string description: Name of the fulfillment location, when configured. description: Records for the current page. LimitOffsetResponseStoreResponse: type: object properties: limit: type: integer description: Maximum number of records requested for this page. format: int32 example: 100 offset: type: integer description: Zero-based result offset used for this page. format: int32 example: 0 totalCount: type: integer description: Total number of matching records before pagination is applied. format: int32 example: 250 results: type: array description: Records for the current page. items: $ref: '#/components/schemas/StoreResponse' hasMore: type: boolean description: True when more records are available after this page. example: true securitySchemes: ApiKeyAuth: type: apiKey description: External API key issued by Happy Buyers. Send the key in the hca-api-key header. name: hca-api-key in: header