OpenAPI Specification
openapi: 3.0.3
info:
title: TD SYNNEX StreamOne Ion Partner Authentication Customers 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: Customers
description: End customer account management
paths:
/v3/accounts/{accountId}/customers:
get:
operationId: listCustomers
summary: List Customers
description: List all end customers associated with the partner account.
tags:
- Customers
parameters:
- $ref: '#/components/parameters/AccountId'
- name: page
in: query
description: Page number for pagination
schema:
type: integer
default: 1
- name: pageSize
in: query
description: Number of results per page
schema:
type: integer
default: 25
responses:
'200':
description: List of customers
content:
application/json:
schema:
type: object
properties:
customers:
type: array
items:
$ref: '#/components/schemas/Customer'
totalCount:
type: integer
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createCustomer
summary: Create Customer
description: Add a new end customer to the platform.
tags:
- Customers
parameters:
- $ref: '#/components/parameters/AccountId'
requestBody:
required: true
description: New customer details
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerRequest'
responses:
'201':
description: Customer created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/v3/accounts/{accountId}/customers/{customerId}:
get:
operationId: getCustomer
summary: Get Customer
description: Retrieve details for a specific end customer.
tags:
- Customers
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/CustomerId'
responses:
'200':
description: Customer details
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateCustomer
summary: Update Customer
description: Modify an existing end customer's information.
tags:
- Customers
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/CustomerId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerRequest'
responses:
'200':
description: Customer updated
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/v3/accounts/{accountId}/customers/{customerId}/cloudProfiles:
get:
operationId: getCustomerCloudProfiles
summary: Get Customer Cloud Profiles
description: Fetch linked cloud provider profile details for a specific customer.
tags:
- Customers
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/CustomerId'
responses:
'200':
description: Customer cloud profiles
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CloudProfile'
'401':
$ref: '#/components/responses/Unauthorized'
components:
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'
schemas:
Error:
type: object
properties:
code:
type: string
description: Error code
message:
type: string
description: Human-readable error message
details:
type: array
items:
type: string
CustomerRequest:
type: object
required:
- companyName
- email
properties:
companyName:
type: string
email:
type: string
phone:
type: string
address:
$ref: '#/components/schemas/Address'
Address:
type: object
properties:
street:
type: string
city:
type: string
state:
type: string
postalCode:
type: string
country:
type: string
Customer:
type: object
description: An end customer account
properties:
customerId:
type: string
description: Unique customer identifier
companyName:
type: string
description: Customer's company name
email:
type: string
description: Primary contact email
phone:
type: string
description: Primary contact phone
address:
$ref: '#/components/schemas/Address'
status:
type: string
enum:
- ACTIVE
- INACTIVE
- SUSPENDED
createdDate:
type: string
format: date-time
modifiedDate:
type: string
format: date-time
CloudProfile:
type: object
description: A customer's cloud provider account profile
properties:
profileId:
type: string
vendor:
type: string
example: Microsoft
tenantId:
type: string
status:
type: string
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
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