openapi: 3.2.0 info: title: Happy Buyers External POS Brands 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: POS Brands description: Organization POS brand metadata and mappings paths: /external/v1/pos-brands: get: tags: - POS Brands summary: List POS brands description: Returns POS-specific brands for the API key organization, including mapped universal brand information when available. Requires organization_metadata:read. operationId: getPosBrands parameters: - name: limit in: query description: Maximum number of POS brands 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 POS brand name search text. required: false schema: type: string example: acme responses: '403': description: API key does not include organization_metadata:read '401': description: Missing, malformed, or invalid API key '200': description: Paged POS brand results content: application/json: schema: $ref: '#/components/schemas/LimitOffsetResponsePosBrandResponse' '400': description: Invalid query parameter components: schemas: PosBrandResponse: type: object properties: name: type: string description: POS brand display name. example: Acme id: type: integer description: Happy Buyers POS brand ID. format: int32 example: 42 productCount: type: integer description: Number of products currently associated with this POS brand. format: int32 example: 17 mappedUniversalBrandId: type: integer description: Mapped universal brand ID, when this POS brand has a mapping. format: int32 posIdentifier: type: string description: Brand identifier from the source POS system. example: brand-123 mappedUniversalBrandName: type: string description: Mapped universal brand name, or an empty string when unmapped. description: Records for the current page. LimitOffsetResponsePosBrandResponse: 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/PosBrandResponse' 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