OpenAPI Specification
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