Tech Data Customers API

End customer account management

OpenAPI Specification

tech-data-customers-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: TD SYNNEX StreamOne Ion Authentication Customers 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: Customers
  description: End customer account management
paths:
  /v3/accounts/{accountId}/customers:
    get:
      operationId: listCustomers
      summary: List Customers
      description: Retrieve a paginated list of all end customers for the reseller account.
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/accountId'
      - name: page
        in: query
        schema:
          type: integer
          default: 1
        description: Page number for pagination.
      - name: pageSize
        in: query
        schema:
          type: integer
          default: 20
        description: Number of records per page.
      - name: status
        in: query
        schema:
          type: string
        description: Filter customers by status.
      responses:
        '200':
          description: List of customers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    post:
      operationId: createCustomer
      summary: Create Customer
      description: Create a new end customer account under the reseller account.
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/accountId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerCreate'
      responses:
        '201':
          description: Customer created
          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: Update an existing end customer account.
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/customerId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerUpdate'
      responses:
        '200':
          description: Customer updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer'
        '400':
          $ref: '#/components/responses/BadRequest'
        '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: Retrieve cloud provider profiles associated with a 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'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    Forbidden:
      description: Forbidden - insufficient permissions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Unauthorized - invalid or expired token
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Customer:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        email:
          type: string
          format: email
        status:
          type: string
          enum:
          - Active
          - Inactive
          - Suspended
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        address:
          $ref: '#/components/schemas/Address'
    Pagination:
      type: object
      properties:
        page:
          type: integer
        pageSize:
          type: integer
        totalRecords:
          type: integer
        totalPages:
          type: integer
    CustomerUpdate:
      type: object
      properties:
        name:
          type: string
        email:
          type: string
          format: email
        phone:
          type: string
        status:
          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
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        details:
          type: array
          items:
            type: string
    CloudProfile:
      type: object
      properties:
        id:
          type: string
        provider:
          type: string
          enum:
          - Microsoft
          - Google
          - AWS
        externalId:
          type: string
        status:
          type: string
    CustomerCreate:
      type: object
      required:
      - name
      - email
      properties:
        name:
          type: string
        email:
          type: string
          format: email
        phone:
          type: string
        address:
          $ref: '#/components/schemas/Address'
    CustomerList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Customer'
        pagination:
          $ref: '#/components/schemas/Pagination'
  parameters:
    accountId:
      name: accountId
      in: path
      required: true
      schema:
        type: string
      description: The reseller account identifier.
    customerId:
      name: customerId
      in: path
      required: true
      schema:
        type: string
      description: The customer account identifier.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 bearer token obtained via the /oauth/token endpoint.