TD SYNNEX StreamOne ION API

The StreamOne ION API is TD SYNNEX's interface for cloud vendors and reseller partners to manage cloud subscriptions, product catalogs, end customers, and orders through a unified platform. The API supports end customer management, product operations, order management, subscription lifecycle, shopping cart workflows, and reporting via OAuth 2.0 authentication.

OpenAPI Specification

synnex-streamone-ion-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: TD SYNNEX StreamOne ION API
  description: >-
    The StreamOne ION API is TD SYNNEX's interface for cloud vendors and reseller
    partners to manage cloud subscriptions, product catalogs, end customers, and
    orders through a unified platform. The API uses OAuth 2.0 authentication and
    supports multi-vendor cloud marketplace operations including Microsoft CSP,
    Azure, and Google Workspace.
  version: v3
  contact:
    url: https://docs.streamone.cloud/
servers:
  - url: https://ion.tdsynnex.com/api/v3
    description: Production V3 API
security:
  - bearerAuth: []
tags:
  - name: Customers
    description: End customer account management.
  - name: Products
    description: Product catalog and SKU operations.
  - name: Orders
    description: Order creation and management.
  - name: Subscriptions
    description: Cloud subscription lifecycle management.
  - name: Cart
    description: Shopping cart operations.
  - name: Reports
    description: Usage and billing reports.
paths:
  /accounts/{accountId}/customers:
    get:
      operationId: listCustomers
      summary: List Customers
      description: >-
        Retrieves a list of end customers associated with the reseller account.
        Supports pagination and filtering.
      tags:
        - Customers
      parameters:
        - $ref: '#/components/parameters/accountId'
        - name: page
          in: query
          schema:
            type: integer
        - name: pageSize
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: Customer list returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerList'
        '401':
          description: Unauthorized
    post:
      operationId: createCustomer
      summary: Create Customer
      description: >-
        Creates a new end customer account under the reseller organization.
      tags:
        - Customers
      parameters:
        - $ref: '#/components/parameters/accountId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerRequest'
      responses:
        '201':
          description: Customer created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer'
  /accounts/{accountId}/customers/{customerId}:
    get:
      operationId: getCustomer
      summary: Get Customer
      description: Retrieves detailed information about a specific end customer.
      tags:
        - Customers
      parameters:
        - $ref: '#/components/parameters/accountId'
        - $ref: '#/components/parameters/customerId'
      responses:
        '200':
          description: Customer details returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer'
    put:
      operationId: updateCustomer
      summary: Update Customer
      description: Updates an existing end customer's account 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'
  /accounts/{accountId}/products:
    get:
      operationId: listProducts
      summary: List Products
      description: >-
        Retrieves the product catalog available to the reseller, with filtering
        by vendor, category, vertical, and currency.
      tags:
        - Products
      parameters:
        - $ref: '#/components/parameters/accountId'
        - name: vendor
          in: query
          schema:
            type: string
          description: Filter by vendor name.
        - name: category
          in: query
          schema:
            type: string
        - name: currency
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Product list returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductList'
  /accounts/{accountId}/products/{productId}:
    get:
      operationId: getProduct
      summary: Get Product
      description: Retrieves detailed information about a specific product including SKUs and pricing.
      tags:
        - Products
      parameters:
        - $ref: '#/components/parameters/accountId'
        - name: productId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Product details returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
  /accounts/{accountId}/orders:
    get:
      operationId: listOrders
      summary: List Orders
      description: Retrieves a list of orders for the reseller account.
      tags:
        - Orders
      parameters:
        - $ref: '#/components/parameters/accountId'
        - name: status
          in: query
          schema:
            type: string
            enum: [pending, completed, cancelled]
      responses:
        '200':
          description: Order list returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderList'
    post:
      operationId: createOrder
      summary: Create Order
      description: >-
        Creates a new order for cloud products on behalf of an end customer.
        Supports new tenants, existing tenants, and subscription updates.
      tags:
        - Orders
      parameters:
        - $ref: '#/components/parameters/accountId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderRequest'
      responses:
        '201':
          description: Order created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
  /accounts/{accountId}/orders/{orderId}:
    get:
      operationId: getOrder
      summary: Get Order
      description: Retrieves details for a specific order.
      tags:
        - Orders
      parameters:
        - $ref: '#/components/parameters/accountId'
        - $ref: '#/components/parameters/orderId'
      responses:
        '200':
          description: Order details returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
  /accounts/{accountId}/customers/{customerId}/subscriptions:
    get:
      operationId: listSubscriptions
      summary: List Subscriptions
      description: Retrieves cloud subscriptions for a specific end customer.
      tags:
        - Subscriptions
      parameters:
        - $ref: '#/components/parameters/accountId'
        - $ref: '#/components/parameters/customerId'
      responses:
        '200':
          description: Subscription list returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionList'
  /accounts/{accountId}/customers/{customerId}/subscriptions/{subscriptionId}:
    get:
      operationId: getSubscription
      summary: Get Subscription
      description: Retrieves details for a specific cloud subscription.
      tags:
        - Subscriptions
      parameters:
        - $ref: '#/components/parameters/accountId'
        - $ref: '#/components/parameters/customerId'
        - $ref: '#/components/parameters/subscriptionId'
      responses:
        '200':
          description: Subscription details returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscription'
    put:
      operationId: updateSubscription
      summary: Update Subscription
      description: >-
        Updates a subscription's seat count, renewal settings, or status.
        Supports suspend, reactivate, upgrade, and downgrade operations.
      tags:
        - Subscriptions
      parameters:
        - $ref: '#/components/parameters/accountId'
        - $ref: '#/components/parameters/customerId'
        - $ref: '#/components/parameters/subscriptionId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionUpdate'
      responses:
        '200':
          description: Subscription updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscription'
  /accounts/{accountId}/cart:
    post:
      operationId: createCart
      summary: Create Cart
      description: Creates a new shopping cart for processing customer orders.
      tags:
        - Cart
      parameters:
        - $ref: '#/components/parameters/accountId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CartRequest'
      responses:
        '201':
          description: Cart created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cart'
  /accounts/{accountId}/cart/{cartId}/checkout:
    post:
      operationId: checkoutCart
      summary: Checkout Cart
      description: Processes the cart and converts it to an order.
      tags:
        - Cart
      parameters:
        - $ref: '#/components/parameters/accountId'
        - name: cartId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Checkout completed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
  /accounts/{accountId}/reports:
    get:
      operationId: listReports
      summary: List Reports
      description: Retrieves available reports with metadata for the reseller account.
      tags:
        - Reports
      parameters:
        - $ref: '#/components/parameters/accountId'
        - name: format
          in: query
          schema:
            type: string
            enum: [json, csv]
      responses:
        '200':
          description: Reports list returned
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Report'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 bearer token
  parameters:
    accountId:
      name: accountId
      in: path
      required: true
      schema:
        type: string
      description: The reseller's TD SYNNEX account identifier.
    customerId:
      name: customerId
      in: path
      required: true
      schema:
        type: string
      description: End customer identifier.
    orderId:
      name: orderId
      in: path
      required: true
      schema:
        type: string
    subscriptionId:
      name: subscriptionId
      in: path
      required: true
      schema:
        type: string
  schemas:
    CustomerList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Customer'
        totalCount:
          type: integer
        page:
          type: integer
        pageSize:
          type: integer
    Customer:
      type: object
      properties:
        customerId:
          type: string
        companyName:
          type: string
        email:
          type: string
          format: email
        country:
          type: string
        status:
          type: string
          enum: [active, inactive]
        createdAt:
          type: string
          format: date-time
    CustomerRequest:
      type: object
      required:
        - companyName
        - email
        - country
      properties:
        companyName:
          type: string
        email:
          type: string
          format: email
        country:
          type: string
        phone:
          type: string
        address:
          type: object
    ProductList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Product'
        totalCount:
          type: integer
    Product:
      type: object
      properties:
        productId:
          type: string
        name:
          type: string
        vendor:
          type: string
        category:
          type: string
        sku:
          type: string
        price:
          type: number
        currency:
          type: string
        description:
          type: string
    OrderList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Order'
        totalCount:
          type: integer
    Order:
      type: object
      properties:
        orderId:
          type: string
        customerId:
          type: string
        status:
          type: string
          enum: [pending, completed, cancelled]
        totalAmount:
          type: number
        currency:
          type: string
        createdAt:
          type: string
          format: date-time
        items:
          type: array
          items:
            $ref: '#/components/schemas/OrderItem'
    OrderRequest:
      type: object
      required:
        - customerId
        - items
      properties:
        customerId:
          type: string
        items:
          type: array
          items:
            $ref: '#/components/schemas/OrderItem'
    OrderItem:
      type: object
      properties:
        productId:
          type: string
        sku:
          type: string
        quantity:
          type: integer
        price:
          type: number
    SubscriptionList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Subscription'
        totalCount:
          type: integer
    Subscription:
      type: object
      properties:
        subscriptionId:
          type: string
        productName:
          type: string
        vendor:
          type: string
        quantity:
          type: integer
        status:
          type: string
          enum: [active, suspended, cancelled]
        renewalDate:
          type: string
          format: date
        createdAt:
          type: string
          format: date-time
    SubscriptionUpdate:
      type: object
      properties:
        quantity:
          type: integer
        status:
          type: string
          enum: [active, suspended, cancelled]
        autoRenew:
          type: boolean
    CartRequest:
      type: object
      required:
        - customerId
      properties:
        customerId:
          type: string
        items:
          type: array
          items:
            $ref: '#/components/schemas/OrderItem'
    Cart:
      type: object
      properties:
        cartId:
          type: string
        customerId:
          type: string
        items:
          type: array
          items:
            $ref: '#/components/schemas/OrderItem'
        totalAmount:
          type: number
        createdAt:
          type: string
          format: date-time
    Report:
      type: object
      properties:
        reportId:
          type: string
        name:
          type: string
        description:
          type: string
        availableFormats:
          type: array
          items:
            type: string
        generatedAt:
          type: string
          format: date-time