Webex Devices
Webex Device API for managing Webex hardware devices, workspaces, and device configurations. Includes endpoints for device inventory, activation, workspace assignments, and device-specific settings.
Webex Device API for managing Webex hardware devices, workspaces, and device configurations. Includes endpoints for device inventory, activation, workspace assignments, and device-specific settings.
{
"openapi": "3.0.0",
"info": {
"title": "Webex Device",
"version": "1.0.0",
"description": "The Webex Device APIs provide endpoints for managing and monitoring Webex devices, including registration, configuration, status retrieval, workspace assignment, and firmware management. These APIs support automation of device onboarding, health monitoring, remote troubleshooting, and bulk configuration updates. Integration scenarios include custom device dashboards, proactive alerting, and seamless workspace management for meeting rooms and shared spaces. The APIs are essential for IT teams managing large fleets of Webex devices across distributed environments."
},
"tags": [],
"paths": {
"/telephony/config/devices/{deviceId}/members": {
"get": {
"responses": {
"200": {
"description": "OK",
"headers": {},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetMemberResponse"
},
"example": {
"model": "DMS Cisco 192",
"members": [
{
"id": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS9jODhiZGIwNC1jZjU5LTRjMjMtODQ4OC00NTNhOTE3ZDFlMjk",
"firstName": "John",
"lastName": "Smith",
"phoneNumber": "2055552221",
"extension": "000",
"routingPrefix": "1234",
"esn": "1234000",
"primaryOwner": true,
"port": 1,
"t38FaxCompressionEnabled": false,
"lineType": "SHARED_CALL_APPEARANCE",
"lineWeight": 1,
"hostIP": "10.0.0.45",
"remoteIP": "192.102.12.84",
"hotlineEnabled": true,
"hotlineDestination": "+12055552222",
"allowCallDeclineEnabled": true,
"lineLabel": "share line label",
"linePort": "[email protected]",
"memberType": "PEOPLE",
"location": {
"name": "MainOffice",
"id": "Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzJiNDkyZmZkLTRjNGItNGVmNS04YzAzLWE1MDYyYzM4NDA5Mw"
}
}
],
"maxLineCount": 2
}
}
}
},
"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 Device Members",
"operationId": "getDeviceMembers",
"description": "Get the list of all the members of the device including primary and secondary users.\n\nA device member can be either a person or a workspace. An admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.",
"tags": [
"Device Call Settings"
],
"parameters": [
{
"name": "deviceId",
"in": "path",
"description": "Unique identifier for the device.",
"required": true,
"example": "Y2lzY29zcGFyazovL3VybjpURUFNOnVzLWVhc3QtMV9pbnQxMy9DQUxMSU5HX0RFVklDRS8zMDAyZWJiZi1iMTVmLTQ1ODktYWNiZS1kZjY3OTA3MTU5NWE=",
"schema": {
"type": "string"
}
},
{
"name": "orgId",
"in": "query",
"description": "Retrieves the list of all members of the device in this organization.",
"example": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi85NmFiYzJhYS0zZGNjLTExZTUtYTE1Mi1mZTM0ODE5Y2RjOWE",
"schema": {
"type": "string"
}
}
]
},
"put": {
"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": "Update Members on the device",
"operationId": "updateMembersOnDevice",
"description": "Modify member details on the device.\n\nA device member can be either a person, virtual line or a workspace. An admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nModifying members on the device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.",
"tags": [
"Device Call Settings"
],
"parameters": [
{
"name": "deviceId",
"in": "path",
"description": "Unique identifier for the device.",
"required": true,
"example": "Y2lzY29zcGFyazovL3VybjpURUFNOnVzLWVhc3QtMV9pbnQxMy9DQUxMSU5HX0RFVklDRS8zMDAyZWJiZi1iMTVmLTQ1ODktYWNiZS1kZjY3OTA3MTU5NWE=",
"schema": {
"type": "string"
}
},
{
"name": "orgId",
"in": "query",
"description": "Modify members on the device in this organization.",
"example": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi85NmFiYzJhYS0zZGNjLTExZTUtYTE1Mi1mZTM0ODE5Y2RjOWE",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"example": {
"members": [
{
"port": 1,
"id": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS9jODhiZGIwNC1jZjU5LTRjMjMtODQ4OC00NTNhOTE3ZDFlMjk",
"t38FaxCompressionEnabled": false,
"primaryOwner": true,
"lineType": "SHARED_CALL_APPEARANCE",
"lineWeight": 1,
"allowCallDeclineEnabled": true,
"hotlineDestination": "",
"hotlineEnabled": false,
"lineLabel": "share line label"
}
]
},
"schema": {
"$ref": "#/components/schemas/PutMembersRequest"
}
}
}
}
}
},
"/telephony/config/devices/{deviceId}/availableMembers": {
"get": {
"responses": {
"200": {
"description": "OK",
"headers": {},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchMemberResponse"
},
"example": {
"members": [
{
"id": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS9jODhiZGIwNC1jZjU5LTRjMjMtODQ4OC00NTNhOTE3ZDFlMjk",
"firstName": "John",
"lastName": "Smith",
"phoneNumber": "+12055552221",
"t38FaxCompressionEnabled": false,
"lineType": "SHARED_CALL_APPEARANCE",
"allowCallDeclineEnabled": true,
"memberType": "PEOPLE",
"location": {
"name": "MainOffice",
"id": "Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzJiNDkyZmZkLTRjNGItNGVmNS04YzAzLWE1MDYyYzM4NDA5Mw"
}
},
{
"id": "Y2lzY29zcGFyazovL3VzL1BFT1BMRS9jODhiZGIwNC1jZjU5LTRjMjMtODQ4OC00NTNhOTE3ZDFlMjk",
"firstName": "Bob",
"lastName": "Smith-ws",
"phoneNumber": "+12055552221",
"t38FaxCompressionEnabled": false,
"lineType": "SHARED_CALL_APPEARANCE",
"allowCallDeclineEnabled": true,
"memberType": "PLACE",
"location": {
"name": "MainOffice",
"id": "Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzJiNDkyZmZkLTRjNGItNGVmNS04YzAzLWE1MDYyYzM4NDA5Mw"
}
}
]
}
}
}
},
"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": "Search Members",
"operationId": "searchMembers",
"description": "Search members that can be assigned to the device.\n\nA device member can be either a person or a workspace. A admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.",
"tags": [
"Device Call Settings"
],
"parameters": [
{
"name": "deviceId",
"in": "path",
"description": "Unique identifier for the device.",
"required": true,
"example": "Y2lzY29zcGFyazovL3VybjpURUFNOnVzLWVhc3QtMV9pbnQxMy9DQUxMSU5HX0RFVklDRS8zMDAyZWJiZi1iMTVmLTQ1ODktYWNiZS1kZjY3OTA3MTU5NWE=",
"schema": {
"type": "string"
}
},
{
"name": "orgId",
"in": "query",
"description": "Retrieves the list of available members on the device in this organization.",
"example": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi85NmFiYzJhYS0zZGNjLTExZTUtYTE1Mi1mZTM0ODE5Y2RjOWE",
"schema": {
"type": "string"
}
},
{
"name": "start",
"in": "query",
"description": "Specifies the offset from the first result that you want to fetch.",
"example": 0,
"schema": {
"type": "number"
}
},
{
"name": "max",
"in": "query",
"description": "Specifies the maximum number of records that you want to fetch.",
"example": 100,
"schema": {
"type": "number",
"default": 2000
}
},
{
"name": "memberName",
"in": "query",
"description": "Search (Contains) numbers based on member name.",
"example": "John",
"schema": {
"type": "string"
}
},
{
"name": "phoneNumber",
"in": "query",
"description": "Search (Contains) based on number.",
"example": "9828282867",
"schema": {
"type": "string"
}
},
{
"name": "locationId",
"in": "query",
"description": "Unique identifier for the location.",
"example": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi85NmFiYzJhYS0zZGNjLTExZTUtYTE1Mi1mZTM0ODE5Y2RjOWE",
"schema": {
"type": "string"
}
},
{
"name": "extension",
"in": "query",
"description": "Search (Contains) based on extension.",
"example": "1234",
"schema": {
"type": "string"
}
},
{
"name": "usageType",
"in": "query",
"description": "Search for members eligible to become the owner of the device, or share line on the device.",
"example": "SHARED_LINE",
"schema": {
"type": "string",
"enum": [
"DEVICE_OWNER",
"SHARED_LINE"
]
}
},
{
"name": "order",
"in": "query",
"description": "Sort the list of available members on the device in ascending order by name, use either last name `lname` or first name `fname`. Default: last name in ascending order.",
"example": "lname",
"schema": {
"type": "string"
}
}
]
}
},
"/telephony/config/devices/{deviceId}/availableMembers/count": {
"get": {
"responses": {
"200": {
"description": "OK",
"headers": {},
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"totalCount"
],
"properties": {
"totalCount": {
"type": "integer",
"example": 100,
"description": "The total count of members that can be assigned to the device."
}
}
},
"example": {
"totalCount": 100
}
}
}
},
"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 Count of Members",
"operationId": "getCountOfMembers",
"description": "Get the count of members that can be assigned to the device.\n\nA device member can be either a person or a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.",
"tags": [
"Device Call Settings"
],
"parameters": [
{
"name": "deviceId",
"in": "path",
"description": "Unique identifier for the device.",
"required": true,
"example": "Y2lzY29zcGFyazovL3VybjpURUFNOnVzLWVhc3QtMV9pbnQxMy9DQUxMSU5HX0RFVklDRS8zMDAyZWJiZi1iMTVmLTQ1ODktYWNiZS1kZjY3OTA3MTU5NWE=",
"schema": {
"type": "string"
}
},
{
"name": "orgId",
"in": "query",
"description": "Retrieves the count of available members on the device in this organization.",
"example": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi85NmFiYzJhYS0zZGNjLTExZTUtYTE1Mi1mZTM0ODE5Y2RjOWE",
"schema": {
"type": "string"
}
},
{
"name": "memberName",
"in": "query",
"description": "Search (Contains) numbers based on member name.",
"example": "John",
"schema": {
"type": "string"
}
},
{
"name": "phoneNumber",
"in": "query",
"description": "Search (Contains) based on number.",
"example": "9828282867",
"schema": {
"type": "string"
}
},
{
"name": "locationId",
"in": "query",
"description": "Unique identifier for the location.",
"example": "Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzAwMDA1ZTAwLTUzYjQtNDBjMy1hN2FkLTU2NTBmZGRkZDUzYw",
"schema": {
"type": "string"
}
},
{
"name": "extension",
"in": "query",
"description": "Search (Contains) based on extension.",
"example": "1234",
"schema": {
"type": "string"
}
},
{
"name": "usageType",
"in": "query",
"description": "Search for members eligible to become the owner of the device, or share line on the device.\n * `DEVICE_OWNER` - Search for members eligible to become the owner of the device.\n * `SHARED_LINE` - Search for members eligible to share line on the device.",
"example": "SHARED_LINE",
"schema": {
"type": "string",
"enum": [
"DEVICE_OWNER",
"SHARED_LINE"
]
}
}
]
}
},
"/telephony/config/devices/availableMembers/count": {
"get": {
"responses": {
"200": {
"description": "OK",
"headers": {},
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"totalCount"
],
"properties": {
"totalCount": {
"type": "integer",
"example": 100,
"description": "The total count of members that can be assigned to devices."
}
}
},
"example": {
"totalCount": 100
}
}
}
},
"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 Count of Available Members",
"operationId": "getCountOfAvailableMembers",
"description": "Get the count of members that can be assigned to devices.\n\nA device member can be either a person or a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.",
"tags": [
"Device Call Settings"
],
"parameters": [
{
"name": "orgId",
"in": "query",
"description": "Retrieves the count of available members in this organization.",
"example": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi85NmFiYzJhYS0zZGNjLTExZTUtYTE1Mi1mZTM0ODE5Y2RjOWE",
"schema": {
"type": "string"
}
},
{
"name": "memberName",
"in": "query",
"description": "Search (Contains) numbers based on member name.",
"example": "John",
"schema": {
"type": "string"
}
},
{
"name": "phoneNumber",
"in": "query",
"description": "Search (Contains) based on number.",
"example": "9828282867",
"schema": {
"type": "string"
}
},
{
"name": "locationId",
"in": "query",
"description": "Unique identifier for the location.",
"example": "Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzAwMDA1ZTAwLTUzYjQtNDBjMy1hN2FkLTU2NTBmZGRkZDUzYw",
"schema": {
"type": "string"
}
},
{
"name": "extension",
"in": "query",
"description": "Search (Contains) based on extension.",
"example": "1234",
"schema": {
"type":
# --- truncated at 32 KB (1017 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/webex/refs/heads/main/openapi/webex-device-openapi.json