TD SYNNEX Customers API

End customer account management

OpenAPI Specification

td-synnex-customers-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: TD SYNNEX StreamOne Ion Partner Authentication Customers 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: Customers
  description: End customer account management
paths:
  /v3/accounts/{accountId}/customers:
    get:
      operationId: listCustomers
      summary: List Customers
      description: List all end customers associated with the partner account.
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/AccountId'
      - name: page
        in: query
        description: Page number for pagination
        schema:
          type: integer
          default: 1
      - name: pageSize
        in: query
        description: Number of results per page
        schema:
          type: integer
          default: 25
      responses:
        '200':
          description: List of customers
          content:
            application/json:
              schema:
                type: object
                properties:
                  customers:
                    type: array
                    items:
                      $ref: '#/components/schemas/Customer'
                  totalCount:
                    type: integer
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createCustomer
      summary: Create Customer
      description: Add a new end customer to the platform.
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/AccountId'
      requestBody:
        required: true
        description: New customer details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerRequest'
      responses:
        '201':
          description: Customer created successfully
          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: Modify an existing end customer's 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'
        '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: Fetch linked cloud provider profile details for a specific 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'
components:
  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'
  schemas:
    Error:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Human-readable error message
        details:
          type: array
          items:
            type: string
    CustomerRequest:
      type: object
      required:
      - companyName
      - email
      properties:
        companyName:
          type: string
        email:
          type: string
        phone:
          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
    Customer:
      type: object
      description: An end customer account
      properties:
        customerId:
          type: string
          description: Unique customer identifier
        companyName:
          type: string
          description: Customer's company name
        email:
          type: string
          description: Primary contact email
        phone:
          type: string
          description: Primary contact phone
        address:
          $ref: '#/components/schemas/Address'
        status:
          type: string
          enum:
          - ACTIVE
          - INACTIVE
          - SUSPENDED
        createdDate:
          type: string
          format: date-time
        modifiedDate:
          type: string
          format: date-time
    CloudProfile:
      type: object
      description: A customer's cloud provider account profile
      properties:
        profileId:
          type: string
        vendor:
          type: string
          example: Microsoft
        tenantId:
          type: string
        status:
          type: string
  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
  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