Tech Data Carts API

Shopping cart management

OpenAPI Specification

tech-data-carts-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: TD SYNNEX StreamOne Ion Authentication Carts API
  description: The StreamOne Ion API provides reseller partners with programmatic access to TD SYNNEX's cloud distribution platform. Partners can manage end customers, browse product catalogs, create and manage orders, handle subscriptions, configure cloud provider accounts, manage shopping carts, and access billing reports. The API supports multi-vendor cloud management across Microsoft, Google, and AWS through a unified interface.
  version: v3
  contact:
    name: TD SYNNEX StreamOne Ion
    url: https://docs.streamone.cloud/
  license:
    name: TD SYNNEX Terms of Service
    url: https://eu.tdsynnex.com/CatAdminHtmlContentEditor/uploads/Country/COM/NEW%20Terms-and-Conditions/StreamOne/Partner%20API%20Service%20Specification%20Addendum%20to%20ION%20Platform%20Agreement.pdf
servers:
- url: https://ion.tdsynnex.com/api
  description: TD SYNNEX StreamOne Ion Production
security:
- BearerAuth: []
tags:
- name: Carts
  description: Shopping cart management
paths:
  /v3/accounts/{accountId}/carts:
    get:
      operationId: listCarts
      summary: List Carts
      description: Retrieve all shopping carts for the account.
      tags:
      - Carts
      parameters:
      - $ref: '#/components/parameters/accountId'
      responses:
        '200':
          description: List of 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 the account.
      tags:
      - Carts
      parameters:
      - $ref: '#/components/parameters/accountId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CartCreate'
      responses:
        '201':
          description: Cart created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cart'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v3/accounts/{accountId}/carts/{cartId}:
    get:
      operationId: getCart
      summary: Get Cart
      description: Retrieve details for a specific shopping cart.
      tags:
      - Carts
      parameters:
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/cartId'
      responses:
        '200':
          description: Cart details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cart'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateCart
      summary: Update Cart
      description: Update an existing shopping cart.
      tags:
      - Carts
      parameters:
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/cartId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CartUpdate'
      responses:
        '200':
          description: Cart updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cart'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/accounts/{accountId}/carts/{cartId}/checkout:
    post:
      operationId: checkoutCart
      summary: Checkout Cart
      description: Submit a shopping cart to create an order.
      tags:
      - Carts
      parameters:
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/cartId'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                notes:
                  type: string
                  description: Optional order notes.
      responses:
        '201':
          description: Order created from cart
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Cart:
      type: object
      properties:
        id:
          type: string
        accountId:
          type: string
        customerId:
          type: string
        status:
          type: string
          enum:
          - Active
          - Checked Out
          - Expired
        total:
          type: number
          format: float
        currency:
          type: string
        itemCount:
          type: integer
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        details:
          type: array
          items:
            type: string
    Order:
      type: object
      properties:
        id:
          type: string
        accountId:
          type: string
        customerId:
          type: string
        status:
          type: string
          enum:
          - Draft
          - Submitted
          - Processing
          - Completed
          - Cancelled
        total:
          type: number
          format: float
        currency:
          type: string
        items:
          type: array
          items:
            $ref: '#/components/schemas/OrderItem'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    CartCreate:
      type: object
      required:
      - customerId
      properties:
        customerId:
          type: string
        notes:
          type: string
    CartUpdate:
      type: object
      properties:
        notes:
          type: string
        status:
          type: string
    OrderItem:
      type: object
      properties:
        id:
          type: string
        productId:
          type: string
        productName:
          type: string
        quantity:
          type: integer
        unitPrice:
          type: number
          format: float
        totalPrice:
          type: number
          format: float
  responses:
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Unauthorized - invalid or expired token
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    accountId:
      name: accountId
      in: path
      required: true
      schema:
        type: string
      description: The reseller account identifier.
    cartId:
      name: cartId
      in: path
      required: true
      schema:
        type: string
      description: The cart identifier.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 bearer token obtained via the /oauth/token endpoint.