Aloha POS Catalog API

Item and item-price management.

OpenAPI Specification

aloha-pos-catalog-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: NCR Voyix Commerce Platform APIs (Aloha) Catalog API
  description: REST APIs for Aloha POS via the NCR Voyix Developer Experience (Business Services Platform). Covers Site provisioning, Catalog item and item-price management, Menu details, and Order creation/lookup. Requests are signed with HMAC SHA-512 AccessKey authentication and scoped with the nep-organization and nep-enterprise-unit headers. Paths and schemas in this specification were reconstructed from the publicly published NCR Voyix sample applications (NCRVoyix-Corporation/sample-app-burgers, ncr-retail-demo, ncr-bsp-hmac); consult developer.ncrvoyix.com for the authoritative contract.
  version: '1.0'
  contact:
    name: NCR Voyix Developer Experience
    url: https://developer.ncrvoyix.com/
  license:
    name: Proprietary
    url: https://www.ncrvoyix.com/
servers:
- url: https://api.ncr.com
  description: Production (Business Services Platform)
- url: https://gateway-staging.ncrcloud.com
  description: Staging
security:
- hmacAccessKey: []
tags:
- name: Catalog
  description: Item and item-price management.
paths:
  /catalog/items/{itemCode}:
    parameters:
    - $ref: '#/components/parameters/ItemCode'
    get:
      tags:
      - Catalog
      summary: Get Catalog Item
      description: Retrieve the details of a single catalog item by its item code.
      operationId: getCatalogItem
      responses:
        '200':
          description: The catalog item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Item'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
      - Catalog
      summary: Create Or Update Catalog Item
      description: Create or update a catalog item. There is no delete operation; mark an item INACTIVE to retire it. The version must increase on each update.
      operationId: putCatalogItem
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemInput'
      responses:
        '200':
          description: The created or updated catalog item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Item'
  /catalog/items:
    get:
      tags:
      - Catalog
      summary: List Catalog Items
      description: List catalog items, optionally filtered by merchandise category and status.
      operationId: listCatalogItems
      parameters:
      - name: merchandiseCategoryId
        in: query
        description: Filter by merchandise category identifier.
        schema:
          type: string
      - name: itemStatus
        in: query
        description: Filter by item status.
        schema:
          type: string
          enum:
          - ACTIVE
          - INACTIVE
      responses:
        '200':
          description: A page of catalog items.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemPage'
  /catalog/item-prices/{itemCode}/{priceId}:
    parameters:
    - $ref: '#/components/parameters/ItemCode'
    - name: priceId
      in: path
      required: true
      description: Unique identifier for the item price.
      schema:
        type: string
    get:
      tags:
      - Catalog
      summary: Get Item Price
      description: Retrieve a single item price by item code and price identifier.
      operationId: getItemPrice
      responses:
        '200':
          description: The item price.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemPrice'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
      - Catalog
      summary: Create Or Update Item Price
      description: Create or update the price for a catalog item. The version must increase on each update.
      operationId: putItemPrice
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemPriceInput'
      responses:
        '200':
          description: The created or updated item price.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemPrice'
  /catalog/item-prices/get-multiple:
    post:
      tags:
      - Catalog
      summary: Get Multiple Item Prices
      description: Retrieve prices for a list of catalog items in a single request.
      operationId: getMultipleItemPrices
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                itemIds:
                  type: array
                  items:
                    type: object
                    properties:
                      itemCode:
                        type: string
                    required:
                    - itemCode
              required:
              - itemIds
      responses:
        '200':
          description: The requested item prices.
          content:
            application/json:
              schema:
                type: object
                properties:
                  itemPrices:
                    type: array
                    items:
                      $ref: '#/components/schemas/ItemPrice'
components:
  schemas:
    Item:
      allOf:
      - $ref: '#/components/schemas/ItemInput'
      - type: object
        properties:
          itemId:
            type: object
            additionalProperties:
              type: string
    ItemPage:
      type: object
      properties:
        pageContent:
          type: array
          items:
            $ref: '#/components/schemas/Item'
    ItemInput:
      type: object
      properties:
        version:
          type: integer
          description: Optimistic-concurrency version; must increase on each update.
        shortDescription:
          $ref: '#/components/schemas/LocalizedText'
        status:
          $ref: '#/components/schemas/Status'
        merchandiseCategory:
          type: string
        departmentId:
          type: string
      required:
      - version
      - status
    ItemPriceInput:
      type: object
      properties:
        version:
          type: integer
        price:
          type: number
          format: double
        currency:
          type: string
          example: US Dollar
        effectiveDate:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/Status'
      required:
      - version
      - price
    Status:
      type: string
      enum:
      - ACTIVE
      - INACTIVE
    LocalizedText:
      type: object
      description: A set of locale-specific values.
      properties:
        values:
          type: array
          items:
            type: object
            properties:
              locale:
                type: string
                example: en-US
              value:
                type: string
    ItemPrice:
      allOf:
      - $ref: '#/components/schemas/ItemPriceInput'
      - type: object
        properties:
          priceId:
            type: object
            properties:
              itemCode:
                type: string
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
  parameters:
    ItemCode:
      name: itemCode
      in: path
      required: true
      description: The catalog item code (spaces are not permitted).
      schema:
        type: string
  responses:
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    hmacAccessKey:
      type: apiKey
      in: header
      name: Authorization
      description: HMAC authentication. The Authorization header carries "AccessKey {sharedKey}:{signature}", where the signature is a Base64 SHA-512 HMAC computed over the HTTP method, path and query, Content-Type, nep-correlation-id, and nep-organization, keyed by the secret key concatenated with the ISO-8601 request date. See the ncr-bsp-hmac repository for reference implementations.