OpenAPI Specification
openapi: 3.0.3
info:
title: TD SYNNEX StreamOne Ion Partner Authentication Orders 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: Orders
description: Order creation and management
paths:
/v3/accounts/{accountId}/orders:
get:
operationId: listOrders
summary: List Orders
description: Retrieve all orders associated with the partner account.
tags:
- Orders
parameters:
- $ref: '#/components/parameters/AccountId'
- name: status
in: query
description: Filter by order status
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: List of orders
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 Order
description: Create a new technology product order.
tags:
- Orders
parameters:
- $ref: '#/components/parameters/AccountId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OrderRequest'
responses:
'201':
description: Order created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/v3/accounts/{accountId}/customers/{customerId}/orders:
get:
operationId: listCustomerOrders
summary: List Customer Orders
description: Fetch all orders for a specific customer.
tags:
- Orders
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/CustomerId'
responses:
'200':
description: List of customer orders
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Order'
'401':
$ref: '#/components/responses/Unauthorized'
/v3/accounts/{accountId}/orders/{orderId}:
get:
operationId: getOrder
summary: Get Order
description: Retrieve details for a specific order.
tags:
- Orders
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/OrderId'
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 Order
description: Modify an existing order (e.g., update license counts, renewal settings).
tags:
- Orders
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/OrderId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OrderRequest'
responses:
'200':
description: Order updated
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
'401':
$ref: '#/components/responses/Unauthorized'
delete:
operationId: cancelOrder
summary: Cancel Order
description: Cancel a pending order.
tags:
- Orders
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/OrderId'
responses:
'200':
description: Order cancelled
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
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
OrderRequest:
type: object
required:
- customerId
- items
properties:
customerId:
type: string
items:
type: array
items:
type: object
properties:
productId:
type: string
quantity:
type: integer
notes:
type: string
OrderItem:
type: object
properties:
productId:
type: string
quantity:
type: integer
unitPrice:
type: number
format: double
totalPrice:
type: number
format: double
responses:
NotFound:
description: Not Found - Requested resource does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
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:
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
OrderId:
name: orderId
in: path
required: true
description: Order 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