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