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.