Tech Data Products API

Product catalog browsing and filtering

OpenAPI Specification

tech-data-products-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: TD SYNNEX StreamOne Ion Authentication Products 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: Products
  description: Product catalog browsing and filtering
paths:
  /v3/accounts/{accountId}/products:
    get:
      operationId: listProducts
      summary: List Products
      description: Retrieve a paginated list of products available to the reseller.
      tags:
      - Products
      parameters:
      - $ref: '#/components/parameters/accountId'
      - name: page
        in: query
        schema:
          type: integer
          default: 1
      - name: pageSize
        in: query
        schema:
          type: integer
          default: 20
      - name: vendorId
        in: query
        schema:
          type: string
        description: Filter by vendor identifier.
      - name: category
        in: query
        schema:
          type: string
        description: Filter by product category.
      responses:
        '200':
          description: List of products
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductList'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v3/accounts/{accountId}/products/{productId}:
    get:
      operationId: getProduct
      summary: Get Product
      description: Retrieve details for a specific product.
      tags:
      - Products
      parameters:
      - $ref: '#/components/parameters/accountId'
      - name: productId
        in: path
        required: true
        schema:
          type: string
        description: The unique product identifier.
      responses:
        '200':
          description: Product details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/accounts/{accountId}/products/verticals:
    post:
      operationId: getProductVerticals
      summary: Get Product Verticals
      description: Retrieve product vertical classifications and categories.
      tags:
      - Products
      parameters:
      - $ref: '#/components/parameters/accountId'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                vendorIds:
                  type: array
                  items:
                    type: string
      responses:
        '200':
          description: Product verticals
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    Pagination:
      type: object
      properties:
        page:
          type: integer
        pageSize:
          type: integer
        totalRecords:
          type: integer
        totalPages:
          type: integer
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        details:
          type: array
          items:
            type: string
    Product:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        vendorId:
          type: string
        vendorName:
          type: string
        category:
          type: string
        vertical:
          type: string
        price:
          type: number
          format: float
        currency:
          type: string
        billingPeriod:
          type: string
          enum:
          - Monthly
          - Annual
          - One-Time
    ProductList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Product'
        pagination:
          $ref: '#/components/schemas/Pagination'
  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'
  parameters:
    accountId:
      name: accountId
      in: path
      required: true
      schema:
        type: string
      description: The reseller account identifier.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 bearer token obtained via the /oauth/token endpoint.