Whiplash Orders API

Order processing — full CRUD, bulk creation, actions, customs info, history, documents, items, serial numbers, shipping details, and wholesale

OpenAPI Specification

whiplash-orders-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Whiplash (Rydership) Bundle Items Orders API
  description: The Whiplash REST API (now RyderShip API under Ryder System) enables developers to manage orders, items, inventory, shipments, consumer returns, customers, notification subscriptions, and documents programmatically. The API uses OAuth 2.0 Bearer token authentication and supports both authorization code and client credentials flows. The V2 API is open by invite only.
  version: '2.0'
  contact:
    name: Rydership Development Team
    email: tech@whiplash.com
    url: https://www.getwhiplash.com
  x-logo:
    url: https://wl-s3-assets.s3.amazonaws.com/rydership/RyderShip-horizontal-safe-padding.svg
servers:
- url: https://api.getwhiplash.com
  description: Whiplash Production API
security:
- bearerAuth: []
tags:
- name: Orders
  description: Order processing — full CRUD, bulk creation, actions, customs info, history, documents, items, serial numbers, shipping details, and wholesale
paths:
  /v2/orders:
    get:
      operationId: listOrders
      summary: List orders
      description: Returns a paginated list of orders.
      tags:
      - Orders
      parameters:
      - $ref: '#/components/parameters/PageParam'
      - $ref: '#/components/parameters/LimitParam'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Order'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createOrder
      summary: Create an order
      description: Creates a new order.
      tags:
      - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderInput'
      responses:
        '201':
          description: Order created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /v2/orders/bulk:
    post:
      operationId: bulkCreateOrders
      summary: Bulk create orders
      description: Creates multiple orders in a single request.
      tags:
      - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/OrderInput'
      responses:
        '201':
          description: Orders created
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/orders/count:
    get:
      operationId: countOrders
      summary: Count orders
      description: Returns the total count of orders.
      tags:
      - Orders
      responses:
        '200':
          description: Count response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/orders/actions:
    get:
      operationId: listOrderActions
      summary: List available order actions
      description: Returns available actions that can be performed on orders.
      tags:
      - Orders
      responses:
        '200':
          description: Available actions
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/orders/{id}:
    get:
      operationId: getOrder
      summary: Retrieve an order
      description: Returns details for a specific order by ID.
      tags:
      - Orders
      parameters:
      - $ref: '#/components/parameters/IdParam'
      responses:
        '200':
          description: Order details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateOrder
      summary: Update an order
      description: Updates an existing order.
      tags:
      - Orders
      parameters:
      - $ref: '#/components/parameters/IdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderInput'
      responses:
        '200':
          description: Order updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/orders/{id}/call/{action}:
    post:
      operationId: performOrderAction
      summary: Perform an action on an order
      description: Performs a named action on a specific order (e.g., cancel, ship).
      tags:
      - Orders
      parameters:
      - $ref: '#/components/parameters/IdParam'
      - name: action
        in: path
        required: true
        schema:
          type: string
        description: The action to perform on the order
      responses:
        '200':
          description: Action performed
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/orders/{id}/customs_info:
    get:
      operationId: getOrderCustomsInfo
      summary: Get order customs information
      description: Returns customs information for a specific order.
      tags:
      - Orders
      parameters:
      - $ref: '#/components/parameters/IdParam'
      responses:
        '200':
          description: Customs information
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/orders/{id}/events:
    get:
      operationId: listOrderEvents
      summary: List order events
      description: Returns the history/events for a specific order.
      tags:
      - Orders
      parameters:
      - $ref: '#/components/parameters/IdParam'
      responses:
        '200':
          description: Order events
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/orders/{id}/events/count:
    get:
      operationId: countOrderEvents
      summary: Count order events
      tags:
      - Orders
      parameters:
      - $ref: '#/components/parameters/IdParam'
      responses:
        '200':
          description: Event count
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/orders/{id}/order_items:
    get:
      operationId: listOrderItems
      summary: List items in an order
      tags:
      - Orders
      parameters:
      - $ref: '#/components/parameters/IdParam'
      responses:
        '200':
          description: Order items
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/orders/{id}/order_items/count:
    get:
      operationId: countOrderItems
      summary: Count items in an order
      tags:
      - Orders
      parameters:
      - $ref: '#/components/parameters/IdParam'
      responses:
        '200':
          description: Item count
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/orders/{id}/serial_numbers:
    get:
      operationId: listOrderSerialNumbers
      summary: List serial numbers for an order
      tags:
      - Orders
      parameters:
      - $ref: '#/components/parameters/IdParam'
      responses:
        '200':
          description: Serial numbers
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/orders/{id}/order_documents:
    get:
      operationId: listOrderDocuments
      summary: List documents for an order
      tags:
      - Orders
      parameters:
      - $ref: '#/components/parameters/IdParam'
      responses:
        '200':
          description: Order documents
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/orders/{id}/order_documents/count:
    get:
      operationId: countOrderDocuments
      summary: Count documents for an order
      tags:
      - Orders
      parameters:
      - $ref: '#/components/parameters/IdParam'
      responses:
        '200':
          description: Document count
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/orders/{id}/shipping_documents:
    get:
      operationId: listOrderShippingDocuments
      summary: List shipping documents for an order
      tags:
      - Orders
      parameters:
      - $ref: '#/components/parameters/IdParam'
      responses:
        '200':
          description: Shipping documents
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/orders/{id}/meta_fields:
    get:
      operationId: listOrderMetaFields
      summary: List meta fields for an order
      tags:
      - Orders
      parameters:
      - $ref: '#/components/parameters/IdParam'
      responses:
        '200':
          description: Meta fields
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  parameters:
    IdParam:
      name: id
      in: path
      required: true
      schema:
        type: string
      description: Unique identifier of the resource
    LimitParam:
      name: limit
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 500
      description: Number of results per page
    PageParam:
      name: page
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        default: 1
      description: Page number for pagination
  schemas:
    Order:
      type: object
      properties:
        id:
          type: string
          readOnly: true
          description: System-generated unique identifier
        externalId:
          type: string
          description: ID in the client's system; must be unique within the tenant
        createdAt:
          type: string
          format: date-time
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        tenantId:
          type: string
          readOnly: true
        name:
          type: string
          description: Order name
        status:
          type: string
          description: Order status
        currency:
          type: string
          description: Order currency code
        billingAddress:
          $ref: '#/components/schemas/Address'
        shippingAddress:
          $ref: '#/components/schemas/Address'
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/CustomField'
        tags:
          type: array
          items:
            type: string
    ErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            type: string
    CustomField:
      type: object
      required:
      - name
      - value
      properties:
        name:
          type: string
        value:
          type: string
    CountResponse:
      type: object
      properties:
        count:
          type: integer
          description: Total number of matching resources
    Address:
      type: object
      properties:
        address1:
          type: string
          description: Primary street address
        address2:
          type: string
          description: Secondary address (apartment, suite, unit)
        city:
          type: string
          description: City or town
        company:
          type: string
          description: Company name
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code (e.g., US, CA, GB)
        email:
          type: string
          format: email
        firstName:
          type: string
        lastName:
          type: string
        phone:
          type: string
          description: Phone including country code (e.g., +1-555-123-4567)
        stateOrProvince:
          type: string
          description: State/province; use 2-letter code for US (e.g., CA, NY)
        zipCodeOrPostalCode:
          type: string
    OrderInput:
      type: object
      properties:
        externalId:
          type: string
        name:
          type: string
        currency:
          type: string
        billingAddress:
          $ref: '#/components/schemas/Address'
        shippingAddress:
          $ref: '#/components/schemas/Address'
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/CustomField'
        tags:
          type: array
          items:
            type: string
  responses:
    NotFound:
      description: Resource not found
    UnprocessableEntity:
      description: Validation error — the request body contains invalid data
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Unauthorized — invalid or missing Bearer token
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: OAuth2
      description: OAuth 2.0 Bearer token. Obtain via authorization code or client credentials flow. See https://help.whiplash.com/hc/en-us/articles/360050870691-Authentication-for-the-V2-API
externalDocs:
  description: Whiplash API Developer Documentation
  url: https://help.whiplash.com/hc/en-us/categories/13378954544411-Whiplash-Application-Developers