openapi: 3.0.0 info: title: Webex Admin Address Book Data Sources API version: 1.0.0 description: The Webex Admin APIs provide comprehensive programmatic access to administrative functions for managing Webex organizations, users, licenses, and settings. These APIs enable automation of user provisioning, license assignment, compliance management, and audit event retrieval. Administrators can integrate with enterprise identity systems, enforce security policies, monitor usage, and streamline onboarding/offboarding processes. The APIs support granular control over organizational resources, making them ideal for large-scale deployments and custom admin tooling. tags: - name: Data Sources paths: /dataSources: post: responses: '200': content: application/json: examples: response: value: audience: MedDocVirtualAgent errorMessage: down for maintenance id: f29bb291-5db0-411b-834a-e64f8dee0658 nonce: jeieu38udue83u398 schemaId: 78efc775-dccb-45ca-9acf-989a4a59f788 status: active subject: callAudioData tokenLifetimeMinutes: 60 url: https://www.byods.com/service1 schema: properties: audience: description: The audience field in the JWT token. Usually, the DAPs app name. type: string errorMessage: description: Error Message shown in Control Hub when status is set to `disabled`. type: string id: description: The Data Source Id. type: string nonce: description: Unique nonce used in the encryption of the JWT token. type: string schemaId: description: The schema id used for the data exchange. type: string status: description: The status of the Data Source; `active` or `disabled` type: string subject: description: Rhe subject field in the JWT token. Usually, an indication of the app's function type: string tokenLifetimeMinutes: description: The validity of the created token in minutes. Before the token expiration time, a new token must be provided, or Webex will stop delivering data after the token expiration type: number url: description: The URL of the endpoint where Webex will send the data. type: string type: object description: OK headers: {} '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.' tags: - Data Sources description: 'Register your data source to the Webex BYODS system. Authentication must happen via a Service App with the scope `spark-admin:datasource_write`. The schema IDs determine what data types are sent from Webex to the DAP and the expected responses. The schemas can be inspected on developer.webex.com.' operationId: Register a Data Source requestBody: content: application/json: schema: example: audience: MedDocVirtualAgent nonce: jeieu38udue83u398 schemaId: 78efc775-dccb-45ca-9acf-989a4a59f788 subject: callAudioData tokenLifetimeMinutes: 60 url: https://www.byods.com/service1 properties: audience: description: The audience field in the JWT token. Usually, the DAPs app name. type: string nonce: description: Unique nonce used in the encryption of the JWT token. type: string schemaId: description: The schema id used for the data exchange. type: string subject: description: Rhe subject field in the JWT token. Usually, an indication of the app's function type: string tokenLifetimeMinutes: description: The validity of the created token in minutes. Before the token expiration time, a new token must be provided, or Webex will stop delivering data after the token expiration. Must be equal or less to 1440. type: number url: description: The URL of the endpoint where Webex will send the data. type: string type: object summary: Register a Data Source /dataSources/: get: responses: '200': content: application/json: examples: response: value: items: - DataSource: '' applicationId: Cf2e954e018f2de8c1403e2618323551df65 createdAt: '2022-01-01T00:00:00Z' createdBy: 3e4d3b27-1bf1-4916-8d0c-d27fd765fa52 jwsToken: eyJraWQiOiIxOWFmMzYxYS0zYWI0LTU0NzEtYTViMC03MmQxODQyOTRjMmYiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJNeUFwcDIiLCJzdWIiOiJNeUFwcHNQdXJwb3NlMiIsImlzcyI6Imh0dHBzOlwvXC9pZGJyb2tlci53ZWJleC5jb21cL2lkYiIsImV4cCI6MTcyOTIyMDUxNSwiY29tLmNpc2NvLmRhdGFzb3VyY2UudXJsIjoiaHR0cHM6XC9cL3NjaGlmZmVydC5tZVwvZHMyIiwiY29tLmNpc2NvLmRhdGFzb3VyY2Uuc2NoZW1hLnV1aWQiOiI3OGVmYzc3NS1kY2NiLTQ1Y2EtOWFjZi05ODlhNGE1OWY3ODgiLCJpYXQiOjE3MjkyMTMzMTUsImNvbS5jaXNjby5vcmcudXVpZCI6ImNlODYxZmJhLTZlMmYtNDlmOS05YTg0LWIzNTQwMDhmYWM5ZSIsImp0aSI6IjEyMzQ1NiJ9.QxWYQCXOTLTNBx1Mr8qtd1rpx5uqHYcow1l_oiqMQ_2LorPor3wnEW9_dmMFUs-yAizpayTB4XJpU0ga9E-GY3XaiXz4CGW0G5f3566j3AvmfviMVCFgQFnMd0LpwgPIHhQGX-z2Y6KgzjTCLqm76WpSylAomOPEpgs8dqChfuC9aVHyuB2FfV77J265q-pLp8RSJa_EoSZ_05tpQHxxrDrB-qnn-WQoCFFlb88f3kKdyzPqQhvdWQuouyaP4YyMd_C8a6N_F1dk3cBUjSOtnHDm9WoGwYd8wUcjtZVk5g-z7coc656OooRvDQ0-JRdh7TVUfkzdQS79d4UfmRAhYQ orgId: 63b02f90-9cc6-43b8-aa6d-cad425ac554c schema: properties: items: items: {} type: array type: object description: OK headers: {} '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.' tags: - Data Sources description: Show all data sources registered for this Service App with the scope `spark-admin:datasource_read`. operationId: Retrieve All Data Sources summary: Retrieve All Data Sources /dataSources/schemas: get: responses: '200': content: application/json: examples: response: value: items: - appType: serviceApp createdAt: '2024-09-05T01:35:04.772Z' id: 78efc775-dccb-45ca-9acf-989a4a59f788 protocol: gRPC serviceType: webService url: /path/to/definition/file3 schema: properties: items: items: {} type: array type: object description: OK headers: {} '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.' tags: - Data Sources description: Show available schemas. No specific scope is needed to retrieve the dataSource schemas, but a valid API token should be presented. operationId: Retrieve Data Source Schemas summary: Retrieve Data Source Schemas /dataSources/schemas/{schemaId}: get: parameters: - description: The unique identifier for the schema. example: 78efc775-dccb-45ca-9acf-989a4a59f788 in: path name: schemaId required: true schema: type: string responses: '200': content: application/json: examples: response: value: appType: serviceApp createdAt: '2024-09-05T01:35:04.772Z' id: 78efc775-dccb-45ca-9acf-989a4a59f788 protocol: gRPC serviceType: webService url: /path/to/definition/file3 schema: properties: appType: description: The app type used for this schema type: string createdAt: description: datetime when the schema was created type: string id: description: The Schema Id type: string protocol: description: The connection protocol for this schema type: string serviceType: description: The service type web or contact center type: string url: description: the URL location where this schema can be inspected type: string type: object description: OK headers: {} '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.' tags: - Data Sources description: Retrieve details of a specific data source schema by schema id. No specific scope is needed to retrieve the dataSource schemas, but a valid API token should be presented. operationId: Retrieve Details of a Specific Data Source Schema summary: Retrieve Details of a Specific Data Source Schema /dataSources/{dataSourceId}: delete: parameters: - description: The unique identifier for the dataSource. example: f29bb291-5db0-411b-834a-e64f8dee0658 in: path name: dataSourceId required: true schema: type: string responses: '204': description: No Content headers: {} '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.' tags: - Data Sources description: 'Delete a Data Source, by Data Source ID. Specify the Data Source ID in the `dataSourceId` parameter in the URI.' operationId: Delete a Data Source summary: Delete a Data Source get: parameters: - description: The unique identifier for the dataSource. example: f29bb291-5db0-411b-834a-e64f8dee0658 in: path name: dataSourceId required: true schema: type: string responses: '200': content: application/json: examples: response: value: audience: MedDocVirtualAgent errorMessage: down for maintenance id: f29bb291-5db0-411b-834a-e64f8dee0658 nonce: jeieu38udue83u398 schemaId: 78efc775-dccb-45ca-9acf-989a4a59f788 status: active subject: callAudioData tokenLifetimeMinutes: 60 url: https://www.byods.com/service1 schema: properties: audience: description: The audience field in the JWT token. Usually, the DAPs app name. type: string errorMessage: description: Error Message shown in Control Hub when status is set to `disabled`. type: string id: description: The Data Source Id. type: string nonce: description: Unique nonce used in the encryption of the JWT token. type: string schemaId: description: The schema id used for the data exchange. type: string status: description: The status of the Data Source; `active` or `disabled` type: string subject: description: Rhe subject field in the JWT token. Usually, an indication of the app's function type: string tokenLifetimeMinutes: description: The validity of the created token in minutes. Before the token expiration time, a new token must be provided, or Webex will stop delivering data after the token expiration type: number url: description: The URL of the endpoint where Webex will send the data. type: string type: object description: OK headers: {} '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.' tags: - Data Sources description: 'Show details for a data source, by dataSource id. To see details for a data source, use the Service App token with the `spark-admin:datasource_read` scope.' operationId: Retrieve Data Source Details summary: Retrieve Data Source Details put: parameters: - description: The unique identifier for the data source. example: f29bb291-5db0-411b-834a-e64f8dee0658 in: path name: dataSourceId required: true schema: type: string responses: '200': content: application/json: examples: response: value: audience: MedDocVirtualAgent errorMessage: down for maintenance id: f29bb291-5db0-411b-834a-e64f8dee0658 nonce: jeieu38udue83u398 schemaId: 78efc775-dccb-45ca-9acf-989a4a59f788 status: active subject: callAudioData tokenLifetimeMinutes: 60 url: https://www.byods.com/service1 schema: properties: audience: description: The audience field in the JWT token. Usually, the DAPs app name. type: string errorMessage: description: Error Message shown in Control Hub when status is set to `disabled`. type: string id: description: The Data Source Id. type: string nonce: description: Unique nonce used in the encryption of the JWT token. type: string schemaId: description: The schema id used for the data exchange. type: string status: description: The status of the Data Source; `active` or `disabled` type: string subject: description: Rhe subject field in the JWT token. Usually, an indication of the app's function type: string tokenLifetimeMinutes: description: The validity of the created token in minutes. Before the token expiration time, a new token must be provided, or Webex will stop delivering data after the token expiration type: number url: description: The URL of the endpoint where Webex will send the data. type: string type: object description: OK headers: {} '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.' tags: - Data Sources description: "Updates a Data Source. The updateable fields are the `audience,` `subject,` `nonce,` `url` and `tokenLifetimeMinutes.`\nYou can update the `status` from `active` to `disabled` only when providing an `errorMessage` that may be shown to the customer admin in Control Hub. \nTokens must be regularly updated before their expiration to maintain system uptime." operationId: Update a Data Source requestBody: content: application/json: schema: properties: audience: description: The audience field in the JWT token. Usually, the DAPs app name. example: MedDocVirtualAgent type: string errorMessage: description: Error Message shown in Control Hub when status is set to `disabled`. example: down for maintenance type: string nonce: description: Unique nonce used in the encryption of the JWT token. example: jeieu38udue83u398 type: string schemaId: description: The schema id used for the data exchange. example: 78efc775-dccb-45ca-9acf-989a4a59f788 type: string status: description: The status of the Data Source; `active` or `disabled`. example: active type: string subject: description: The subject field in the JWT token. Usually, an indication of the app's function example: callAudioData type: string tokenLifetimeMinutes: description: The validity of the created token in minutes. Before the token expiration time, a new token must be provided, or Webex will stop delivering data after the token expiration. Must be equal or less to 1440. example: 60 type: number url: description: The URL of the endpoint where Webex will send the data. example: https://www.byods.com/service1 type: string type: object summary: Update a Data Source components: securitySchemes: oauth2: flows: authorizationCode: authorizationUrl: / scopes: {} tokenUrl: / type: oauth2 bearer-key: type: http description: e.g. Bearer YOUR_AUTHORIZATION_TOKEN scheme: bearer bearerFormat: JWT bearerAuth: type: oauth2 description: OAuth 2.0 Bearer token authentication flows: authorizationCode: authorizationUrl: https://webexapis.com/v1/authorize tokenUrl: https://webexapis.com/v1/access_token scopes: spark:applications_token: Create access tokens for Service Apps