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