Oracle Retail Order Management Suite Cloud Service API

Oracle Retail Order Management Suite Cloud Service provides REST APIs for omnichannel order orchestration, fulfillment, sourcing, and customer service across digital and physical retail channels.

OpenAPI Specification

oracle-retail-order-management-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Oracle Retail Order Management Suite Cloud Service API
  description: >-
    Oracle Retail Order Management Suite Cloud Service (OMS) provides REST APIs for
    omnichannel order orchestration, fulfillment, sourcing, returns management, and
    customer service across digital and physical retail channels.
  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}/oms/api/v1
    description: Oracle Retail OMS REST API
    variables:
      host:
        default: retail-oms.example.com

security:
  - oauth2: []

tags:
  - name: Fulfillment
    description: Fulfillment and sourcing operations
  - name: Orders
    description: Customer order management
  - name: Returns
    description: Returns and refunds management
paths:
  /orders:
    get:
      operationId: listOrders
      summary: List orders
      description: Returns customer orders with status, line items, and fulfillment details.
      tags:
        - Orders
      parameters:
        - name: status
          in: query
          description: Filter by order status
          schema:
            type: string
            enum: [CREATED, PAYMENT_PENDING, CONFIRMED, PROCESSING, SHIPPED, DELIVERED, CANCELLED, RETURNED]
        - name: channelId
          in: query
          description: Filter by sales channel
          schema:
            type: string
        - name: customerId
          in: query
          description: Filter by customer ID
          schema:
            type: string
        - name: fromDate
          in: query
          schema:
            type: string
            format: date-time
        - name: toDate
          in: query
          schema:
            type: string
            format: date-time
        - name: offset
          in: query
          schema:
            type: integer
            default: 0
        - name: limit
          in: query
          schema:
            type: integer
            default: 50
            maximum: 200
      responses:
        '200':
          description: Order list
          content:
            application/json:
              schema:
                type: object
                properties:
                  orders:
                    type: array
                    items:
                      $ref: '#/components/schemas/Order'
                  totalCount:
                    type: integer
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createOrder
      summary: Create an order
      description: Creates a new customer order for fulfillment.
      tags:
        - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderCreate'
      responses:
        '201':
          description: Order created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '400':
          $ref: '#/components/responses/BadRequest'

  /orders/{orderId}:
    get:
      operationId: getOrder
      summary: Get an order
      description: Returns full order details including lines, fulfillment nodes, and payment.
      tags:
        - Orders
      parameters:
        - $ref: '#/components/parameters/OrderId'
      responses:
        '200':
          description: Order detail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderDetail'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateOrder
      summary: Update an order
      description: Updates mutable fields on an order such as shipping address or contact info.
      tags:
        - Orders
      parameters:
        - $ref: '#/components/parameters/OrderId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderUpdate'
      responses:
        '200':
          description: Order updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'

  /orders/{orderId}/cancel:
    post:
      operationId: cancelOrder
      summary: Cancel an order
      description: Cancels an order or selected line items if order is in a cancellable state.
      tags:
        - Orders
      parameters:
        - $ref: '#/components/parameters/OrderId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                cancelReason:
                  type: string
                lineIds:
                  type: array
                  description: Specific line IDs to cancel; omit to cancel all
                  items:
                    type: string
      responses:
        '200':
          description: Cancellation processed
        '409':
          description: Order cannot be cancelled in current state

  /fulfillment/ship-order:
    post:
      operationId: shipOrder
      summary: Record a shipment
      description: Records a shipment event for fulfillment nodes, advancing order status.
      tags:
        - Fulfillment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentRequest'
      responses:
        '200':
          description: Shipment recorded
        '400':
          $ref: '#/components/responses/BadRequest'

  /returns:
    post:
      operationId: createReturn
      summary: Create a return
      description: Initiates a customer return authorization for one or more order lines.
      tags:
        - Returns
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReturnCreate'
      responses:
        '201':
          description: Return authorization created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Return'
        '400':
          $ref: '#/components/responses/BadRequest'

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

  parameters:
    OrderId:
      name: orderId
      in: path
      required: true
      description: Order identifier
      schema:
        type: string

  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:
    Order:
      type: object
      properties:
        orderId:
          type: string
        externalOrderId:
          type: string
          description: Order ID from originating channel
        status:
          type: string
          enum: [CREATED, PAYMENT_PENDING, CONFIRMED, PROCESSING, SHIPPED, DELIVERED, CANCELLED, RETURNED]
        channelId:
          type: string
        customerId:
          type: string
        orderDate:
          type: string
          format: date-time
        currencyCode:
          type: string
          maxLength: 3
        subtotal:
          type: number
          format: double
        taxTotal:
          type: number
          format: double
        shippingTotal:
          type: number
          format: double
        discountTotal:
          type: number
          format: double
        orderTotal:
          type: number
          format: double
        shippingAddress:
          $ref: '#/components/schemas/Address'
        createDatetime:
          type: string
          format: date-time
        lastUpdateDatetime:
          type: string
          format: date-time

    OrderCreate:
      type: object
      required:
        - externalOrderId
        - channelId
        - customerId
        - currencyCode
        - lines
      properties:
        externalOrderId:
          type: string
        channelId:
          type: string
        customerId:
          type: string
        currencyCode:
          type: string
          maxLength: 3
        shippingAddress:
          $ref: '#/components/schemas/Address'
        lines:
          type: array
          items:
            $ref: '#/components/schemas/OrderLineCreate'

    OrderDetail:
      allOf:
        - $ref: '#/components/schemas/Order'
        - type: object
          properties:
            lines:
              type: array
              items:
                $ref: '#/components/schemas/OrderLine'

    OrderLine:
      type: object
      properties:
        lineId:
          type: string
        itemId:
          type: string
        itemDescription:
          type: string
        quantity:
          type: integer
        unitPrice:
          type: number
          format: double
        lineTotal:
          type: number
          format: double
        status:
          type: string
        fulfillmentType:
          type: string
          enum: [SHIP_TO_HOME, SHIP_TO_STORE, PICKUP_IN_STORE, DELIVERY]

    OrderLineCreate:
      type: object
      required:
        - itemId
        - quantity
        - unitPrice
      properties:
        itemId:
          type: string
        quantity:
          type: integer
        unitPrice:
          type: number
          format: double
        fulfillmentType:
          type: string
          enum: [SHIP_TO_HOME, SHIP_TO_STORE, PICKUP_IN_STORE, DELIVERY]
          default: SHIP_TO_HOME

    OrderUpdate:
      type: object
      properties:
        shippingAddress:
          $ref: '#/components/schemas/Address'
        contactEmail:
          type: string
          format: email
        contactPhone:
          type: string

    ShipmentRequest:
      type: object
      required:
        - orderId
        - trackingNumber
        - carrier
      properties:
        orderId:
          type: string
        lineIds:
          type: array
          items:
            type: string
        trackingNumber:
          type: string
        carrier:
          type: string
        shipDate:
          type: string
          format: date-time
        estimatedDeliveryDate:
          type: string
          format: date-time

    Return:
      type: object
      properties:
        returnId:
          type: string
        orderId:
          type: string
        status:
          type: string
          enum: [PENDING, APPROVED, RECEIVED, REFUNDED]
        lines:
          type: array
          items:
            type: object
            properties:
              lineId:
                type: string
              quantity:
                type: integer
              reason:
                type: string
        createDatetime:
          type: string
          format: date-time

    ReturnCreate:
      type: object
      required:
        - orderId
        - lines
      properties:
        orderId:
          type: string
        lines:
          type: array
          items:
            type: object
            required:
              - lineId
              - quantity
              - reason
            properties:
              lineId:
                type: string
              quantity:
                type: integer
              reason:
                type: string

    Address:
      type: object
      properties:
        firstName:
          type: string
        lastName:
          type: string
        address1:
          type: string
        address2:
          type: string
        city:
          type: string
        state:
          type: string
        postalCode:
          type: string
        country:
          type: string
          maxLength: 3
        phone:
          type: string
        email:
          type: string
          format: email

    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string