Oracle Retail Merchandising Foundation Cloud Service API

Oracle Retail Merchandising Foundation Cloud Service provides REST APIs for managing merchandise hierarchies, item setup, purchase orders, cost management, and inventory transactions across omnichannel retail operations.

OpenAPI Specification

oracle-retail-merchandising-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Oracle Retail Merchandising Foundation Cloud Service API
  description: >-
    Oracle Retail Merchandising Foundation Cloud Service (RMFCS) provides REST APIs
    for managing merchandise hierarchies, item setup, purchase orders, cost management,
    supplier management, and inventory transactions across omnichannel retail operations.
  version: 26.1.0
  contact:
    name: Oracle Retail Support
    url: https://support.oracle.com
  license:
    name: Oracle Technology Network License
    url: https://www.oracle.com/legal/terms/
servers:
  - url: https://{host}/MerchServices/MerchRes/v1
    description: Oracle Retail Merchandising REST API
    variables:
      host:
        default: retail.example.com
        description: RMFCS hostname

security:
  - oauth2: []

tags:
  - name: Inventory
    description: Inventory and stock on hand
  - name: Items
    description: Item setup and attributes
  - name: PurchaseOrders
    description: Purchase order management
  - name: Suppliers
    description: Supplier management
paths:
  /items:
    get:
      operationId: listItems
      summary: List items
      description: Returns a paginated list of merchandise items with optional filters.
      tags:
        - Items
      parameters:
        - name: department
          in: query
          description: Filter by department number
          schema:
            type: integer
        - name: class
          in: query
          description: Filter by class number
          schema:
            type: integer
        - name: subclass
          in: query
          description: Filter by subclass number
          schema:
            type: integer
        - name: status
          in: query
          description: Filter by item status
          schema:
            type: string
            enum: [A, C, D]
        - name: offset
          in: query
          schema:
            type: integer
            default: 0
        - name: limit
          in: query
          schema:
            type: integer
            default: 100
            maximum: 500
      responses:
        '200':
          description: Item list
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Item'
                  totalCount:
                    type: integer
                  offset:
                    type: integer
                  limit:
                    type: integer
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createItem
      summary: Create an item
      description: Creates a new merchandise item record.
      tags:
        - Items
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemCreate'
      responses:
        '201':
          description: Item created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Item'
        '400':
          $ref: '#/components/responses/BadRequest'

  /items/{item}:
    get:
      operationId: getItem
      summary: Get an item
      description: Returns item details including description, supplier, and hierarchy.
      tags:
        - Items
      parameters:
        - $ref: '#/components/parameters/ItemParam'
      responses:
        '200':
          description: Item details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Item'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateItem
      summary: Update an item
      description: Updates item attributes such as description, status, or hierarchy assignment.
      tags:
        - Items
      parameters:
        - $ref: '#/components/parameters/ItemParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemUpdate'
      responses:
        '200':
          description: Item updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Item'
        '404':
          $ref: '#/components/responses/NotFound'

  /purchaseorders:
    get:
      operationId: listPurchaseOrders
      summary: List purchase orders
      description: Returns purchase orders with status and shipment information.
      tags:
        - PurchaseOrders
      parameters:
        - name: status
          in: query
          description: Filter by order status
          schema:
            type: string
            enum: [W, A, C, T, D]
        - name: supplier
          in: query
          description: Filter by supplier number
          schema:
            type: integer
        - name: fromDate
          in: query
          description: Filter orders not before this date (YYYY-MM-DD)
          schema:
            type: string
            format: date
        - name: toDate
          in: query
          description: Filter orders not after this date (YYYY-MM-DD)
          schema:
            type: string
            format: date
        - name: offset
          in: query
          schema:
            type: integer
            default: 0
        - name: limit
          in: query
          schema:
            type: integer
            default: 100
      responses:
        '200':
          description: Purchase order list
          content:
            application/json:
              schema:
                type: object
                properties:
                  purchaseOrders:
                    type: array
                    items:
                      $ref: '#/components/schemas/PurchaseOrder'
                  totalCount:
                    type: integer
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createPurchaseOrder
      summary: Create a purchase order
      description: Creates a new purchase order for a supplier.
      tags:
        - PurchaseOrders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PurchaseOrderCreate'
      responses:
        '201':
          description: Purchase order created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseOrder'
        '400':
          $ref: '#/components/responses/BadRequest'

  /purchaseorders/{orderId}:
    get:
      operationId: getPurchaseOrder
      summary: Get a purchase order
      description: Returns purchase order header and detail lines.
      tags:
        - PurchaseOrders
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Purchase order details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseOrderDetail'
        '404':
          $ref: '#/components/responses/NotFound'

  /suppliers:
    get:
      operationId: listSuppliers
      summary: List suppliers
      description: Returns supplier master data including contact and payment terms.
      tags:
        - Suppliers
      parameters:
        - name: status
          in: query
          schema:
            type: string
            enum: [A, I]
        - name: offset
          in: query
          schema:
            type: integer
            default: 0
        - name: limit
          in: query
          schema:
            type: integer
            default: 100
      responses:
        '200':
          description: Supplier list
          content:
            application/json:
              schema:
                type: object
                properties:
                  suppliers:
                    type: array
                    items:
                      $ref: '#/components/schemas/Supplier'
                  totalCount:
                    type: integer
        '401':
          $ref: '#/components/responses/Unauthorized'

  /inventory:
    get:
      operationId: getInventory
      summary: Query inventory positions
      description: Returns stock on hand, on order, and available to sell by item and location.
      tags:
        - Inventory
      parameters:
        - name: item
          in: query
          required: true
          description: Item number
          schema:
            type: string
        - name: location
          in: query
          description: Store or warehouse number
          schema:
            type: integer
        - name: locationType
          in: query
          description: Location type (S=Store, W=Warehouse)
          schema:
            type: string
            enum: [S, W]
      responses:
        '200':
          description: Inventory position
          content:
            application/json:
              schema:
                type: object
                properties:
                  inventoryPositions:
                    type: array
                    items:
                      $ref: '#/components/schemas/InventoryPosition'
        '401':
          $ref: '#/components/responses/Unauthorized'

components:
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://identity.oraclecloud.com/oauth2/v1/token
          scopes:
            retail.read: Read retail data
            retail.write: Write retail data

  parameters:
    ItemParam:
      name: item
      in: path
      required: true
      description: Item number (up to 25 chars)
      schema:
        type: string
        maxLength: 25

  responses:
    BadRequest:
      description: Invalid request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'

  schemas:
    Item:
      type: object
      description: A retail merchandise item
      properties:
        item:
          type: string
          maxLength: 25
          description: Item number
        itemDesc:
          type: string
          maxLength: 250
          description: Item description
        itemDescSecond:
          type: string
          maxLength: 250
          description: Secondary item description
        status:
          type: string
          enum: [A, C, D]
          description: "A=Active, C=Discontinued, D=Deleted"
        dept:
          type: integer
          description: Department number
        class:
          type: integer
          description: Class number
        subclass:
          type: integer
          description: Subclass number
        itemType:
          type: string
          enum: [REG, CON, TFM, RB, SB, T]
          description: "REG=Regular, CON=Consignment, TFM=Transform"
        sellable:
          type: string
          enum: [Y, N]
        orderable:
          type: string
          enum: [Y, N]
        inventoryInd:
          type: string
          enum: [Y, N]
        retailLabel:
          type: string
        unitRetail:
          type: number
          format: double
          description: Current retail price
        currencyCode:
          type: string
          maxLength: 3
        supplier:
          type: integer
          description: Primary supplier number
        originCountry:
          type: string
          maxLength: 3
        unitCost:
          type: number
          format: double
        createDatetime:
          type: string
          format: date-time
        lastUpdateDatetime:
          type: string
          format: date-time

    ItemCreate:
      type: object
      required:
        - item
        - itemDesc
        - dept
        - class
        - subclass
      properties:
        item:
          type: string
          maxLength: 25
        itemDesc:
          type: string
          maxLength: 250
        dept:
          type: integer
        class:
          type: integer
        subclass:
          type: integer
        itemType:
          type: string
          enum: [REG, CON, TFM, RB, SB, T]
          default: REG
        unitRetail:
          type: number
          format: double
        currencyCode:
          type: string
          maxLength: 3

    ItemUpdate:
      type: object
      properties:
        itemDesc:
          type: string
          maxLength: 250
        status:
          type: string
          enum: [A, C, D]
        unitRetail:
          type: number
          format: double

    PurchaseOrder:
      type: object
      description: A purchase order header
      properties:
        orderId:
          type: integer
          description: Order number
        supplier:
          type: integer
          description: Supplier number
        status:
          type: string
          enum: [W, A, C, T, D]
          description: "W=Worksheet, A=Approved, C=Closed, T=Terminated, D=Deleted"
        orderDate:
          type: string
          format: date
        notBeforeDate:
          type: string
          format: date
        notAfterDate:
          type: string
          format: date
        freightTerms:
          type: string
        paymentTerms:
          type: string
        currencyCode:
          type: string
          maxLength: 3
        totalCost:
          type: number
          format: double
        totalRetail:
          type: number
          format: double
        createDatetime:
          type: string
          format: date-time
        lastUpdateDatetime:
          type: string
          format: date-time

    PurchaseOrderCreate:
      type: object
      required:
        - supplier
        - orderDate
        - currencyCode
      properties:
        supplier:
          type: integer
        orderDate:
          type: string
          format: date
        notBeforeDate:
          type: string
          format: date
        notAfterDate:
          type: string
          format: date
        currencyCode:
          type: string
          maxLength: 3
        freightTerms:
          type: string
        paymentTerms:
          type: string

    PurchaseOrderDetail:
      allOf:
        - $ref: '#/components/schemas/PurchaseOrder'
        - type: object
          properties:
            lines:
              type: array
              items:
                $ref: '#/components/schemas/PurchaseOrderLine'

    PurchaseOrderLine:
      type: object
      properties:
        seqNo:
          type: integer
        item:
          type: string
        location:
          type: integer
        locationType:
          type: string
          enum: [S, W]
        unitCost:
          type: number
          format: double
        unitRetail:
          type: number
          format: double
        qtyOrdered:
          type: number
          format: double
        qtyReceived:
          type: number
          format: double
        shipDate:
          type: string
          format: date
        cancelAfterDate:
          type: string
          format: date

    Supplier:
      type: object
      description: A merchandise supplier
      properties:
        supplier:
          type: integer
          description: Supplier number
        supplierName:
          type: string
          description: Supplier name
        status:
          type: string
          enum: [A, I]
          description: "A=Active, I=Inactive"
        primaryContactName:
          type: string
        primaryPhone:
          type: string
        primaryEmail:
          type: string
          format: email
        remitAddress:
          type: string
        remitCity:
          type: string
        remitState:
          type: string
        remitCountry:
          type: string
          maxLength: 3
        remitZip:
          type: string
        currencyCode:
          type: string
          maxLength: 3
        paymentTerms:
          type: string
        freightTerms:
          type: string
        createDatetime:
          type: string
          format: date-time

    InventoryPosition:
      type: object
      description: Inventory quantity position at a location
      properties:
        item:
          type: string
        location:
          type: integer
        locationType:
          type: string
          enum: [S, W]
        stockOnHand:
          type: number
          format: double
        stockOnOrder:
          type: number
          format: double
        stockInTransit:
          type: number
          format: double
        availableToSell:
          type: number
          format: double
        nonSellable:
          type: number
          format: double
        lastUpdateDatetime:
          type: string
          format: date-time

    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        details:
          type: array
          items:
            type: string