openapi: 3.2.0 info: title: Teliax Bulk Operations API version: v1 contact: name: Ringer API Support url: https://ringer.tel email: api-support@ringer.tel description: 'Operations tagged Bulk Operations across 2 of this provider''s published API definitions: teliax-tniq-openapi.json, teliax-tniq-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: https://api.tniq.ringer.tel description: Production - url: https://tniq-api.ringer.tel description: Production (legacy alias) - url: https://staging-api.ringer.tel description: Staging tags: - name: Bulk Operations description: Submit and track bulk inventory operations (metadata, PIN, CNAM) with order references. paths: /v1/inventory/bulk/{id}/retry-failed: post: tags: - Bulk Operations summary: Retry failed items as a new linked order operationId: retryFailed parameters: - name: id in: path required: true schema: type: string format: uuid responses: '200': description: OK content: '*/*': schema: type: object servers: - url: https://api.tniq.ringer.tel description: Production - url: https://tniq-api.ringer.tel description: Production (legacy alias) - url: https://staging-api.ringer.tel description: Staging /v1/inventory/bulk/{id}/cancel: post: tags: - Bulk Operations summary: Cancel a queued/running bulk operation description: Stops at the next per-TN boundary. Processed items stay done (PARTIAL accounting). operationId: cancel_1 parameters: - name: id in: path required: true schema: type: string format: uuid responses: '200': description: OK content: '*/*': schema: type: object servers: - url: https://api.tniq.ringer.tel description: Production - url: https://tniq-api.ringer.tel description: Production (legacy alias) - url: https://staging-api.ringer.tel description: Staging /v1/inventory/bulk/{action}: post: tags: - Bulk Operations summary: Submit a bulk operation description: Body carries exactly one of tns[] or query (Query Builder DSL). Returns 202 with the order; execution is asynchronous. operationId: submit_1 parameters: - name: action in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateBulkOperationRequest' required: true responses: '200': description: OK content: '*/*': schema: type: object servers: - url: https://api.tniq.ringer.tel description: Production - url: https://tniq-api.ringer.tel description: Production (legacy alias) - url: https://staging-api.ringer.tel description: Staging /v1/inventory/bulk/{action}/preview: post: tags: - Bulk Operations summary: Preview a bulk operation description: Resolves the selection to a count, a sample, and advisory warnings (e.g. non-wireless OCN for P2P SET_NNID). Persists nothing. operationId: preview parameters: - name: action in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateBulkOperationRequest' required: true responses: '200': description: OK content: '*/*': schema: type: object servers: - url: https://api.tniq.ringer.tel description: Production - url: https://tniq-api.ringer.tel description: Production (legacy alias) - url: https://staging-api.ringer.tel description: Staging /v1/inventory/bulk: get: tags: - Bulk Operations summary: List bulk operations description: Customer-scoped, newest first. Optional exact-match `reference` (e.g. "BO-2026-000123") resolves a single order for direct lookup (e.g. ⌘K search) instead of paging the full list. operationId: list_7 parameters: - name: reference in: query required: false schema: type: string - name: page in: query required: false schema: type: integer format: int32 default: 0 - name: size in: query required: false schema: type: integer format: int32 default: 25 responses: '200': description: OK content: '*/*': schema: $ref: '#/components/schemas/PageBulkOperationResponse' servers: - url: https://api.tniq.ringer.tel description: Production - url: https://tniq-api.ringer.tel description: Production (legacy alias) - url: https://staging-api.ringer.tel description: Staging /v1/inventory/bulk/{id}: get: tags: - Bulk Operations summary: Get a bulk operation description: Order detail with live counts. operationId: get_3 parameters: - name: id in: path required: true schema: type: string format: uuid responses: '200': description: OK content: '*/*': schema: $ref: '#/components/schemas/BulkOperationResponse' servers: - url: https://api.tniq.ringer.tel description: Production - url: https://tniq-api.ringer.tel description: Production (legacy alias) - url: https://staging-api.ringer.tel description: Staging /v1/inventory/bulk/{id}/items: get: tags: - Bulk Operations summary: Page a bulk operation's per-TN results operationId: items parameters: - name: id in: path required: true schema: type: string format: uuid - name: status in: query required: false schema: type: string - name: page in: query required: false schema: type: integer format: int32 default: 0 - name: size in: query required: false schema: type: integer format: int32 default: 50 responses: '200': description: OK content: '*/*': schema: $ref: '#/components/schemas/PageBulkOperationItemResponse' servers: - url: https://api.tniq.ringer.tel description: Production - url: https://tniq-api.ringer.tel description: Production (legacy alias) - url: https://staging-api.ringer.tel description: Staging components: schemas: BulkOperationItemResponse: type: object properties: telephoneNumber: type: string status: type: string errorMessage: type: string processedAt: type: string format: date-time SortObject: type: object properties: empty: type: boolean sorted: type: boolean unsorted: type: boolean PageBulkOperationItemResponse: type: object properties: totalElements: type: integer format: int64 totalPages: type: integer format: int32 size: type: integer format: int32 content: type: array items: $ref: '#/components/schemas/BulkOperationItemResponse' number: type: integer format: int32 sort: $ref: '#/components/schemas/SortObject' numberOfElements: type: integer format: int32 first: type: boolean pageable: $ref: '#/components/schemas/PageableObject' last: type: boolean empty: type: boolean BulkOperationResponse: type: object properties: id: type: string format: uuid reference: type: string action: type: string status: type: string selectionQuery: type: string changeSummary: type: string totalCount: type: integer format: int32 processedCount: type: integer format: int32 successCount: type: integer format: int32 failureCount: type: integer format: int32 requestedBy: type: string parentOperationId: type: string format: uuid errorMessage: type: string createdAt: type: string format: date-time startedAt: type: string format: date-time completedAt: type: string format: date-time PageableObject: type: object properties: offset: type: integer format: int64 sort: $ref: '#/components/schemas/SortObject' pageSize: type: integer format: int32 pageNumber: type: integer format: int32 paged: type: boolean unpaged: type: boolean PageBulkOperationResponse: type: object properties: totalElements: type: integer format: int64 totalPages: type: integer format: int32 size: type: integer format: int32 content: type: array items: $ref: '#/components/schemas/BulkOperationResponse' number: type: integer format: int32 sort: $ref: '#/components/schemas/SortObject' numberOfElements: type: integer format: int32 first: type: boolean pageable: $ref: '#/components/schemas/PageableObject' last: type: boolean empty: type: boolean CreateBulkOperationRequest: type: object properties: tns: type: array items: type: string query: type: string params: type: object additionalProperties: type: object customerId: type: string format: uuid securitySchemes: bearerAuth: type: http description: 'Bearer token authentication. Pass your API token or user JWT in the Authorization header: Authorization: Bearer YOUR_TOKEN' scheme: bearer bearerFormat: JWT x-refined-from: - teliax-tniq-openapi.json - teliax-tniq-openapi.yml