{ "openapi": "3.0.0", "info": { "title": "Webex Wholesale", "version": "1.0.0", "description": "The Webex Wholesale APIs are designed for service providers to manage wholesale Webex offerings, including customer onboarding, provisioning, billing, reporting, and lifecycle management. These APIs enable automation and integration with provider systems to deliver scalable, multi-tenant collaboration solutions. Use cases include automated partner onboarding, real-time usage reporting, integration with billing platforms, and management of customer entitlements across large portfolios." }, "tags": [], "paths": { "/wholesale/billing/reports": { "get": { "responses": { "200": { "description": "OK", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WholesaleBillingReportsListResponse" }, "example": { "items": [ { "id": "Y2lzY29zcGFyazovL3VzL0JJTExJTkdfUkVQT1JULzViOGQ1MThhLThmMDAtNDUxYi1hNDA2LWVhZjQ5YjRhN2ZhOA", "billingStartDate": "2021-05-21", "billingEndDate": "2021-05-30", "status": "COMPLETED", "type": "PARTNER" }, { "id": "Y2lzY29zcGFyazovL3VzL0JJTExJTkdfUkVQT1JULzViOGQ1MThhLThmMDAtNDUxYi1hNDA2LWVhZjQ5YjRhN2Zh2B", "billingStartDate": "2021-05-21", "billingEndDate": "2021-05-30", "status": "COMPLETED", "type": "PARTNER" }, { "id": "Y2lzY29zcGFyazovL3VzL0JJTExJTkdfUkVQT1JULzViOGQ1MThhLThmMDAtNDUxYi1hNDA2LWVhZjQ5YjRhN2Zh5D", "billingStartDate": "2021-05-21", "billingEndDate": "2021-05-30", "status": "COMPLETED", "type": "PARTNER" } ] } } } }, "400": { "description": "Bad Request: The request was invalid or cannot be otherwise served. An accompanying error message will explain further." }, "401": { "description": "Unauthorized: Authentication credentials were missing or incorrect." }, "403": { "description": "Forbidden: The request is understood, but it has been refused or access is not allowed." }, "404": { "description": "Not Found: The URI requested is invalid or the resource requested, such as a user, does not exist. Also returned when the requested format is not supported by the requested method." }, "405": { "description": "Method Not Allowed: The request was made to a resource using an HTTP request method that is not supported." }, "409": { "description": "Conflict: The request could not be processed because it conflicts with some established rule of the system. For example, a person may not be added to a room more than once." }, "410": { "description": "Gone: The requested resource is no longer available." }, "415": { "description": "Unsupported Media Type: The request was made to a resource without specifying a media type or used a media type that is not supported." }, "423": { "description": "Locked: The requested resource is temporarily unavailable. A Retry-After header may be present that specifies how many seconds you need to wait before attempting the request again." }, "428": { "description": "Precondition Required: File(s) cannot be scanned for malware and need to be force downloaded." }, "429": { "description": "Too Many Requests: Too many requests have been sent in a given amount of time and the request has been rate limited. A Retry-After header should be present that specifies how many seconds you need to wait before a successful request can be made." }, "500": { "description": "Internal Server Error: Something went wrong on the server. If the issue persists, feel free to contact the [Webex Developer Support team](/explore/support)." }, "502": { "description": "Bad Gateway: The server received an invalid response from an upstream server while processing the request. Try again later." }, "503": { "description": "Service Unavailable: Server is overloaded with requests. Try again later." }, "504": { "description": "Gateway Timeout: An upstream server failed to respond on time. If your query uses max parameter, please try to reduce it." } }, "summary": "List Wholesale Billing Reports", "operationId": "List Wholesale Billing Reports", "description": "Search for associated wholesale billing reconciliation reports.", "tags": [ "Wholesale Billing Reports" ], "parameters": [ { "name": "billingStartDate", "in": "query", "description": "Only include billing reports having this billing `startDate`.", "example": "2020-05-21", "schema": { "type": "string" } }, { "name": "billingEndDate", "in": "query", "description": "Only include billing reports having this billing `endDate`.", "example": "2020-05-30", "schema": { "type": "string" } }, { "name": "type", "in": "query", "description": "Only include reports of this type.", "example": "PARTNER", "schema": { "type": "string", "enum": [ "PARTNER", "CUSTOMER", "USER" ] } }, { "name": "sortBy", "in": "query", "description": "Sort the reports.", "example": "billingStartDate", "schema": { "type": "string", "default": "billingStartDate", "enum": [ "id", "billingStartDate", "billingEndDate", "status" ] } }, { "name": "status", "in": "query", "description": "The status of the billing report", "example": "COMPLETED", "schema": { "type": "string", "enum": [ "IN_PROGRESS", "COMPLETED", "FAILED" ] } }, { "name": "max", "in": "query", "description": "Limit the maximum number of reports returned in the response, up to 100 per page. Refer to the [Pagination](/docs/basics#pagination) section of [Webex REST API Basics](/docs/api/basics).", "example": "10", "schema": { "type": "integer", "default": 100 } }, { "name": "subPartnerOrgId", "in": "query", "description": "The Organization ID of the sub partner on Cisco Webex.", "example": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi81MmNmNTc2ZC02MGE4LTQwN2EtYjIyYy00NjdjNTE1OTE5MDg", "schema": { "type": "string" } } ] }, "post": { "responses": { "200": { "description": "OK", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportId" }, "example": { "id": "Y2lzY29zcGFyazovL3VzL0JJTExJTkdfUkVQT1JULzViOGQ1MThhLThmMDAtNDUxYi1hNDA2LWVhZjQ5YjRhN2ZhOA", "billingStartDate": "2021-05-21", "billingEndDate": "2021-05-30", "type": "PARTNER", "internal": true } } } }, "400": { "description": "Bad Request: The request was invalid or cannot be otherwise served. An accompanying error message will explain further." }, "401": { "description": "Unauthorized: Authentication credentials were missing or incorrect." }, "403": { "description": "Forbidden: The request is understood, but it has been refused or access is not allowed." }, "404": { "description": "Not Found: The URI requested is invalid or the resource requested, such as a user, does not exist. Also returned when the requested format is not supported by the requested method." }, "405": { "description": "Method Not Allowed: The request was made to a resource using an HTTP request method that is not supported." }, "409": { "description": "Conflict: The request could not be processed because it conflicts with some established rule of the system. For example, a person may not be added to a room more than once." }, "410": { "description": "Gone: The requested resource is no longer available." }, "415": { "description": "Unsupported Media Type: The request was made to a resource without specifying a media type or used a media type that is not supported." }, "423": { "description": "Locked: The requested resource is temporarily unavailable. A Retry-After header may be present that specifies how many seconds you need to wait before attempting the request again." }, "428": { "description": "Precondition Required: File(s) cannot be scanned for malware and need to be force downloaded." }, "429": { "description": "Too Many Requests: Too many requests have been sent in a given amount of time and the request has been rate limited. A Retry-After header should be present that specifies how many seconds you need to wait before a successful request can be made." }, "500": { "description": "Internal Server Error: Something went wrong on the server. If the issue persists, feel free to contact the [Webex Developer Support team](/explore/support)." }, "502": { "description": "Bad Gateway: The server received an invalid response from an upstream server while processing the request. Try again later." }, "503": { "description": "Service Unavailable: Server is overloaded with requests. Try again later." }, "504": { "description": "Gateway Timeout: An upstream server failed to respond on time. If your query uses max parameter, please try to reduce it." } }, "summary": "Create a Wholesale Billing Report", "operationId": "Create a Wholesale Billing Report", "description": "Generate a wholesale billing reconciliation report.", "tags": [ "Wholesale Billing Reports" ], "parameters": [], "requestBody": { "content": { "application/json": { "example": { "billingStartDate": "2020-05-21", "billingEndDate": "2020-05-30", "type": "PARTNER", "subPartnerOrgId": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi81MmNmNTc2ZC02MGE4LTQwN2EtYjIyYy00NjdjNTE1OTE5MDg" }, "schema": { "type": "object", "required": [ "billingStartDate", "billingEndDate" ], "properties": { "billingStartDate": { "type": "string", "example": "2020-05-21", "description": "The `startDate` (`YYYY-MM-DD`) for which the partner requests the billing report." }, "billingEndDate": { "type": "string", "example": "2020-05-30", "description": "The `endDate` (`YYYY-MM-DD`) for which the partner requests the billing report." }, "type": { "type": "string", "example": "PARTNER", "description": "Create report of the given type, `PARTNER`, `CUSTOMER`, or `USER`. Default: `PARTNER`." }, "subPartnerOrgId": { "type": "string", "example": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi81MmNmNTc2ZC02MGE4LTQwN2EtYjIyYy00NjdjNTE1OTE5MDg", "description": "The Organization ID of the sub partner on Cisco Webex." }, "internal": { "type": "boolean", "example": true, "description": "If true or selected, internal orgs will be included in the billing report. Default: false." } } } } } } } }, "/wholesale/billing/reports/{id}": { "get": { "responses": { "200": { "description": "OK", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Report" }, "example": { "id": "Y2lzY29zcGFyazovL3VzL0JJTExJTkdfUkVQT1JULzViOGQ1MThhLThmMDAtNDUxYi1hNDA2LWVhZjQ5YjRhN2ZhOA", "billingStartDate": "2021-05-21", "billingEndDate": "2021-05-30", "type": "PARTNER", "created": "2021-06-16T12:40:33.109Z", "createdBy": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS8wYWNkMzg3NS00ZTEyLTRkNzctYjk4MS1lMzg5ZmQ4ODQ2YzA", "status": "COMPLETED", "tempDownloadURL": "https://billing-reports-int-us-east-1.webexcontent.com/a366de9b-3204-4140-8181-25808d360e36/WHOLESALE/340177d1-7f25-41e1-a39f-ad63ec1103a5.csv?Expires=1624978489&Signature=Syp3vrVeMx4P6MeMtm8e1bQaeAdHFe-c7NeHERWh5-qJGLZ1T8Dvl2ee-M8OsFf~z6Yepz94e2Hh1HDVailD0Uryl8SgiM~jl0cBh7L0PmSe~i9oFA0eJ0MulkqGSMVf7ZHhxY55xYMgIBZIERkWm3CqQNDg5BS4EaXapKfOnmFegf36OokCM63m5uOK8-csk08IkZhwo2Z0l1JMtuWYEaLh4dgMHoe~xgH3YmDSSCWInFYaEifUAfgi2YAYS6nP9Zq4BTliBq62XBaehOE1gBrhy4RdwD-3WSs2oD-BdpoRpuGzo3FZzDLVEvd0S2D6gTcHljOHodQKxe-u0BXPWQ__&Key-Pair-Id=APKAJADAKLCI2FW2U32Q" } } } }, "400": { "description": "Bad Request: The request was invalid or cannot be otherwise served. An accompanying error message will explain further." }, "401": { "description": "Unauthorized: Authentication credentials were missing or incorrect." }, "403": { "description": "Forbidden: The request is understood, but it has been refused or access is not allowed." }, "404": { "description": "Not Found: The URI requested is invalid or the resource requested, such as a user, does not exist. Also returned when the requested format is not supported by the requested method." }, "405": { "description": "Method Not Allowed: The request was made to a resource using an HTTP request method that is not supported." }, "409": { "description": "Conflict: The request could not be processed because it conflicts with some established rule of the system. For example, a person may not be added to a room more than once." }, "410": { "description": "Gone: The requested resource is no longer available." }, "415": { "description": "Unsupported Media Type: The request was made to a resource without specifying a media type or used a media type that is not supported." }, "423": { "description": "Locked: The requested resource is temporarily unavailable. A Retry-After header may be present that specifies how many seconds you need to wait before attempting the request again." }, "428": { "description": "Precondition Required: File(s) cannot be scanned for malware and need to be force downloaded." }, "429": { "description": "Too Many Requests: Too many requests have been sent in a given amount of time and the request has been rate limited. A Retry-After header should be present that specifies how many seconds you need to wait before a successful request can be made." }, "500": { "description": "Internal Server Error: Something went wrong on the server. If the issue persists, feel free to contact the [Webex Developer Support team](/explore/support)." }, "502": { "description": "Bad Gateway: The server received an invalid response from an upstream server while processing the request. Try again later." }, "503": { "description": "Service Unavailable: Server is overloaded with requests. Try again later." }, "504": { "description": "Gateway Timeout: An upstream server failed to respond on time. If your query uses max parameter, please try to reduce it." } }, "summary": "Get a Wholesale Billing Report", "operationId": "Get a Wholesale Billing Report", "description": "Retrieve a specific wholesale billing reconciliation report.", "tags": [ "Wholesale Billing Reports" ], "parameters": [ { "name": "id", "in": "path", "description": "A unique identifier for the report being requested.", "required": true, "example": "Y2lzY29zcGFyazovL3VzL0JJTExJTkdfUkVQT1JULzViOGQ1MThhLThmMDAtNDUxYi1hNDA2LWVhZjQ5YjRhN2ZhOA", "schema": { "type": "string" } } ] }, "delete": { "responses": { "204": { "description": "No Content", "headers": {}, "content": {} }, "400": { "description": "Bad Request: The request was invalid or cannot be otherwise served. An accompanying error message will explain further." }, "401": { "description": "Unauthorized: Authentication credentials were missing or incorrect." }, "403": { "description": "Forbidden: The request is understood, but it has been refused or access is not allowed." }, "404": { "description": "Not Found: The URI requested is invalid or the resource requested, such as a user, does not exist. Also returned when the requested format is not supported by the requested method." }, "405": { "description": "Method Not Allowed: The request was made to a resource using an HTTP request method that is not supported." }, "409": { "description": "Conflict: The request could not be processed because it conflicts with some established rule of the system. For example, a person may not be added to a room more than once." }, "410": { "description": "Gone: The requested resource is no longer available." }, "415": { "description": "Unsupported Media Type: The request was made to a resource without specifying a media type or used a media type that is not supported." }, "423": { "description": "Locked: The requested resource is temporarily unavailable. A Retry-After header may be present that specifies how many seconds you need to wait before attempting the request again." }, "428": { "description": "Precondition Required: File(s) cannot be scanned for malware and need to be force downloaded." }, "429": { "description": "Too Many Requests: Too many requests have been sent in a given amount of time and the request has been rate limited. A Retry-After header should be present that specifies how many seconds you need to wait before a successful request can be made." }, "500": { "description": "Internal Server Error: Something went wrong on the server. If the issue persists, feel free to contact the [Webex Developer Support team](/explore/support)." }, "502": { "description": "Bad Gateway: The server received an invalid response from an upstream server while processing the request. Try again later." }, "503": { "description": "Service Unavailable: Server is overloaded with requests. Try again later." }, "504": { "description": "Gateway Timeout: An upstream server failed to respond on time. If your query uses max parameter, please try to reduce it." } }, "summary": "Delete a Wholesale Billing Report", "operationId": "Delete a Wholesale Billing Report", "description": "Delete a monthly reconciliation report by report ID.", "tags": [ "Wholesale Billing Reports" ], "parameters": [ { "name": "id", "in": "path", "description": "A unique report ID that corresponds to a billing report.", "required": true, "example": "Y2lzY29zcGFyazovL3VzL0JJTExJTkdfUkVQT1JULzViOGQ1MThhLThmMDAtNDUxYi1hNDA2LWVhZjQ5YjRhN2ZhOA", "schema": { "type": "string" } } ] } }, "/wholesale/customers": { "get": { "responses": { "200": { "description": "OK", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerListResponse" }, "example": { "items": [ { "id": "Y2lzY29zcGFyazovL3VzL0VOVEVSUFJJU0UvNTJjZjU3NmQtNjBhOC00MDdhLWIyMmMtNDY3YzUxNTkxOTA4", "orgId": "Y2lzY29zcGFyazovL3VzL09yZ2FuaXphdGlvbi81MmNmNTc2ZC02MGE4LTQwN2EtYjIyYy00NjdjNTE1OTE5MDk", "externalId": "c1677a16-557a-4fb4-b48f-24adde57ec99", "address": { "addressLine1": "771 Alder Drive", "addressLine2": "Cisco Site 5", "city": "Milpitas", "stateOrProvince": "CA", "zipOrPostalCode": "95035", "country": "US" }, "status": "provisioned_with_errors", "packages": [ "common_area_calling", "webex_calling", "webex_meetings", "webex_suite", "webex_voice", "cx_essentials", "webex_calling_standard" ], "resourceDetails": { "packages": [ { "name": "common_area_calling", "status": "provisioned" }, { "name": "webex_calling", "status": "error", "warnings": [ { "errorCode": 2560, "description": "One or more Webex Calling services are unavailable due to maintenance, unable to start provisioning. Consult status.webex.com and retry later." } ] }, { "name": "webex_meetings", "status": "provisioned" }, { "name": "webex_suite", "status": "provisioned" }, { "name": "webex_voice", "status": "provisioned" }, { "name": "cx_essentials", "status": "provisioned" }, { "name": "webex_calling_standard", "status": "provisioned" } ] } } ] } } } }, "400": { "description": "Bad Request: The request was invalid or cannot be otherwise served. An accompanying error message will explain further." }, "401": { "description": "Unauthorized: Authentication credentials were missing or incorrect." }, "403": { "description": "Forbidden: The request is understood, but it has been refused or access is not allowed." }, "404": { "description": "Not Found: The URI requested is invalid or the resource requested, such as a user, does not exist. Also returned when the requested format is not supported by the requested method." }, "405": { "description": "Method Not Allowed: The request was made to a resource using an HTTP request method that is not supported." }, "409": { "description": "Conflict: The request could not be processed because it conflicts with some established rule of the system. For example, a person may not be added to a room more than once." }, "410": { "description": "Gone: The requested resource is no longer available." }, "415": { "description": "Unsupported Media Type: The request was made to a resource without specifying a media type or used a media type that is not supported." }, "423": { "description": "Locked: The requested resource is temporarily unavailable. A Retry-After header may be present that specifies how many seconds you need to wait before attempting the request again." }, "428": { "description": "Precondition Required: File(s) cannot be scanned for malware and need to be force downloaded." }, "429": { "description": "Too Many Requests: Too many requests have been sent in a given amount of time and the request has been rate limited. A Retry-After header should be present that specifies how many seconds you need to wait before a successful request can be made." }, "500": { "description": "Internal Server Error: Something went wrong on the server. If the issue persists, feel free to contact the [Webex Developer Support team](/explore/support)." }, "502": { "description": "Bad Gateway: The server received an invalid response from an upstream server while processing the request. Try again later." }, "503": { "description": "Service Unavailable: Server is overloaded with requests. Try again later." }, "504": { "description": "Gateway Timeout: An upstream server failed to respond on time. If your query uses max parameter, please try to reduce it." } }, "summary": "List Wholesale Customers", "operationId": "List Wholesale Customers", "description": "Return a list of wholesale customers. There are a number of filter options, which can be combined in a single request.", "tags": [ "Wholesale Provisioning" ], "parameters": [ { "name": "externalId", "in": "query", "description": "Customer external ID.", "example": "c1677a16-557a-4fb4-b48f-24adde57ec99", "schema": { "type": "string" } }, { "name": "orgId", "in": "query", "description": "The encoded Organization ID for the customer.", "example": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi81MmNmNTc2ZC02MGE4LTQwN2EtYjIyYy00NjdjNTE1OTE5MDg", "schema": { "type": "string" } }, { "name": "status", "in": "query", "description": "Customer API status.", "example": "provisioned_with_errors", "schema": { "type": "array", "items": { "type": "string", "example": "provisioned_with_errors" }, "description": "Customer API status." } }, { "name": "offset", "in": "query", "description": "Offset value for implementing pagination.", "example": "10", "schema": { "type": "string" } }, { "name": "max", "in": "query", "description": "The maximum number of customers returned in the response.", "example": "10", "schema": { "type": "string" } }, { "name": "onBehalfOfSubPartnerOrgId", "in": "query", "description": "The encoded organization ID for the sub partner.", "example": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi8wZTE4MmUxNS05ZmNhLTQ0NzgtYmEzOC1jNGFiMmUyN2FlZDA=", "schema": { "type": "string" } } ] }, "post": { "responses": { "202": { "description": "Accepted", "headers": { "Location": { "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceURL" }, "example": { "url": "https://webexapis.com/v1/wholesale/customers/Y2lzY29zcGFyazovL3VzL0VOVEVSUFJJU0UvNTJjZjU3NmQtNjBhOC00MDdhLWIyMmMtNDY3YzUxNTkxOTA4" } } } }, "400": { "description": "Bad Request: The request was invalid or cannot be otherwise served. An accompanying error message will explain further." }, "401": { "description": "Unauthorized: Authentication credentials were missing or incorrect." }, "403": { "description": "Forbidden: The request is understood, but it has been refused or access is not allowed." }, "404": { "description": "Not Found: The URI requested is invalid or the resource requested, such as a user, does not exist. Also returned when the requested format is not supported by the requested method." }, "405": { "description": "Method Not Allowed: The request was made to a resource using an HTTP request method that is not supported." }, "409": { "description": "Conflict: The request could not be processed because it conflicts with some established rule of the system. For example, a person may not be added to a room more than once." }, "410": { "description": "Gone: The requested resource is no longer available." }, "415": { "description": "Unsupported Media Type: The request was made to a resource without specifying a media type or used a media type that is not supported." }, "423": { "description": "Locked: The requested resource is temporarily unavailable. A Retry-After header may be present that specifies how many seconds you need to wait before attempting the request again." }, "428": { "description": "Precondition Required: File(s) cannot be scanned for malware and need to be force downloaded." }, "429": { "description": "Too Many Requests: Too many requests have been sent in a given amount of time and the request has been rate limited. A Retry-After header should be present that specifies how many seconds you need to wait before a successful request can be made." }, "500": { "description": "Internal Server Error: Something went wrong on the server. If the issue persists, feel free to contact the [Webex Developer Support team](/explore/support)." }, "502": { "description": "Bad Gateway: The server received an invalid response from an upstream server while processing the request. Try again later." }, "503": { "description": "Service Unavailable: Server is overloaded with requests. Try again later." }, "504": { "description": "Gateway Timeout: An upstream server failed to respond on time. If your query uses max parameter, please try to reduce it." } }, "summary": "Provision a Wholesale Customer", "operationId": "Provision a Wholesale Customer", "description": "Provision a Wholesale customer for Cisco Webex services.\n\nThis API will allow a Service Provider to map the Wholesale customer and assign the required licenses and entitlements for Webex, Calling and Meetings.\n\nThe Wholesale customer provisioning is asynchronous and thus a background task is created when this endpoint is invoked.\n\n**packages Note:**\n\n* `cisco_calling_plan` is dependent on: `common_area_calling`, `webex_calling`, `webex_suite`, `webex_voice`, `cx_essentials`, `webex_calling_standard`\n\n* `attendant_console` is dependent on: `webex_calling`, `webex_suite`, `cx_essentials`\n\n