TD SYNNEX Carts API

Shopping cart management

OpenAPI Specification

td-synnex-carts-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: TD SYNNEX StreamOne Ion Partner Authentication Carts API
  description: The StreamOne Ion Partner API provides partners with programmatic access to TD SYNNEX cloud distribution services. Partners can manage end customers, browse product catalogs, create and manage orders, track subscriptions, manage shopping carts, and access business intelligence reports through a unified REST interface supporting multiple cloud vendors. The API enables MSPs, resellers, and technology partners to automate their cloud distribution workflows.
  version: '3'
  contact:
    name: TD SYNNEX StreamOne Support
    url: https://www.tdsynnex.com/ion/api/
servers:
- url: https://ion.tdsynnex.com
  description: TD SYNNEX StreamOne Ion Production API
security:
- OAuth2: []
tags:
- name: Carts
  description: Shopping cart management
paths:
  /v3/accounts/{accountId}/customers/{customerId}/carts:
    get:
      operationId: listCarts
      summary: List Carts
      description: List all shopping carts for a specific customer.
      tags:
      - Carts
      parameters:
      - $ref: '#/components/parameters/AccountId'
      - $ref: '#/components/parameters/CustomerId'
      responses:
        '200':
          description: List of shopping carts
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Cart'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createCart
      summary: Create Cart
      description: Create a new shopping cart for a customer.
      tags:
      - Carts
      parameters:
      - $ref: '#/components/parameters/AccountId'
      - $ref: '#/components/parameters/CustomerId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CartRequest'
      responses:
        '201':
          description: Cart created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cart'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v3/accounts/{accountId}/customers/{customerId}/carts/{cartId}:
    get:
      operationId: getCart
      summary: Get Cart
      description: Retrieve a specific shopping cart.
      tags:
      - Carts
      parameters:
      - $ref: '#/components/parameters/AccountId'
      - $ref: '#/components/parameters/CustomerId'
      - $ref: '#/components/parameters/CartId'
      responses:
        '200':
          description: Cart details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cart'
        '401':
          $ref: '#/components/responses/Unauthorized'
    put:
      operationId: updateCart
      summary: Update Cart
      description: Update an existing shopping cart.
      tags:
      - Carts
      parameters:
      - $ref: '#/components/parameters/AccountId'
      - $ref: '#/components/parameters/CustomerId'
      - $ref: '#/components/parameters/CartId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CartRequest'
      responses:
        '200':
          description: Cart updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cart'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v3/accounts/{accountId}/customers/{customerId}/carts/{cartId}/checkout:
    post:
      operationId: checkoutCart
      summary: Checkout Cart
      description: Process the shopping cart and create an order from its contents.
      tags:
      - Carts
      parameters:
      - $ref: '#/components/parameters/AccountId'
      - $ref: '#/components/parameters/CustomerId'
      - $ref: '#/components/parameters/CartId'
      responses:
        '200':
          description: Checkout successful, order created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    Order:
      type: object
      description: A technology product order
      properties:
        orderId:
          type: string
        customerId:
          type: string
        status:
          type: string
          enum:
          - PENDING
          - PROCESSING
          - COMPLETED
          - CANCELLED
          - FAILED
        items:
          type: array
          items:
            $ref: '#/components/schemas/OrderItem'
        totalAmount:
          type: number
          format: double
        currency:
          type: string
        createdDate:
          type: string
          format: date-time
        modifiedDate:
          type: string
          format: date-time
    Error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Human-readable error message
        details:
          type: array
          items:
            type: string
    OrderItem:
      type: object
      properties:
        productId:
          type: string
        quantity:
          type: integer
        unitPrice:
          type: number
          format: double
        totalPrice:
          type: number
          format: double
    Cart:
      type: object
      description: A shopping cart for order preparation
      properties:
        cartId:
          type: string
        customerId:
          type: string
        status:
          type: string
          enum:
          - OPEN
          - CHECKED_OUT
          - ABANDONED
        items:
          type: array
          items:
            $ref: '#/components/schemas/CartItem'
        totalAmount:
          type: number
          format: double
        createdDate:
          type: string
          format: date-time
    CartItem:
      type: object
      properties:
        itemId:
          type: string
        productId:
          type: string
        productName:
          type: string
        quantity:
          type: integer
        unitPrice:
          type: number
          format: double
        totalPrice:
          type: number
          format: double
    CartRequest:
      type: object
      properties:
        notes:
          type: string
  responses:
    BadRequest:
      description: Bad Request - Invalid request parameters or body
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Unauthorized - Valid OAuth 2.0 token required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    CartId:
      name: cartId
      in: path
      required: true
      description: Shopping cart identifier
      schema:
        type: string
    CustomerId:
      name: customerId
      in: path
      required: true
      description: End customer identifier
      schema:
        type: string
    AccountId:
      name: accountId
      in: path
      required: true
      description: Partner account identifier
      schema:
        type: string
  securitySchemes:
    OAuth2:
      type: oauth2
      description: TD SYNNEX StreamOne Ion uses OAuth 2.0 with refresh token flow
      flows:
        clientCredentials:
          tokenUrl: https://ion.tdsynnex.com/oauth/token
          scopes:
            read: Read access to partner resources
            write: Write access to create and update resources