curl --request PATCH \
--url https://api.voxo.co/v2/admin/devices/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>"
}
'import requests
url = "https://api.voxo.co/v2/admin/devices/{id}"
payload = { "name": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>'})
};
fetch('https://api.voxo.co/v2/admin/devices/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.voxo.co/v2/admin/devices/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.voxo.co/v2/admin/devices/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.voxo.co/v2/admin/devices/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.voxo.co/v2/admin/devices/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"name": "<string>",
"mac": "<string>",
"tenant": {
"id": 123,
"name": "<string>"
},
"deviceModel": {
"id": 123,
"name": "<string>"
},
"extensions": [
{
"lineNumber": 123,
"id": 123,
"name": "<string>",
"number": "<string>",
"peerName": "<string>"
}
],
"buttonLayouts": [
{
"id": 123,
"type": "<string>",
"name": "<string>",
"startKey": 123,
"endKey": 123
}
],
"phonebooks": [
{
"id": 123,
"name": "<string>"
}
],
"config": [
{
"name": "<string>",
"label": "<string>",
"value": "<string>",
"displayValue": "<string>"
}
],
"userAgent": "<string>"
}{
"name": "<string>",
"message": "<string>",
"code": 123,
"validationErrors": [
"<string>"
]
}{
"name": "<string>",
"message": "<string>",
"code": 123,
"validationErrors": [
"<string>"
]
}{
"name": "<string>",
"message": "<string>",
"code": 123,
"validationErrors": [
"<string>"
]
}{
"name": "<string>",
"message": "<string>",
"code": 123,
"validationErrors": [
"<string>"
]
}Update Device
Sparse update at the top level: only keys present in the body are touched. Each present key is treated literally (full replacement of that collection). Extensions also rewrite the device’s LINE-type autoprovision values for peername and sip_password.
curl --request PATCH \
--url https://api.voxo.co/v2/admin/devices/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>"
}
'import requests
url = "https://api.voxo.co/v2/admin/devices/{id}"
payload = { "name": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>'})
};
fetch('https://api.voxo.co/v2/admin/devices/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.voxo.co/v2/admin/devices/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.voxo.co/v2/admin/devices/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.voxo.co/v2/admin/devices/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.voxo.co/v2/admin/devices/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"name": "<string>",
"mac": "<string>",
"tenant": {
"id": 123,
"name": "<string>"
},
"deviceModel": {
"id": 123,
"name": "<string>"
},
"extensions": [
{
"lineNumber": 123,
"id": 123,
"name": "<string>",
"number": "<string>",
"peerName": "<string>"
}
],
"buttonLayouts": [
{
"id": 123,
"type": "<string>",
"name": "<string>",
"startKey": 123,
"endKey": 123
}
],
"phonebooks": [
{
"id": 123,
"name": "<string>"
}
],
"config": [
{
"name": "<string>",
"label": "<string>",
"value": "<string>",
"displayValue": "<string>"
}
],
"userAgent": "<string>"
}{
"name": "<string>",
"message": "<string>",
"code": 123,
"validationErrors": [
"<string>"
]
}{
"name": "<string>",
"message": "<string>",
"code": 123,
"validationErrors": [
"<string>"
]
}{
"name": "<string>",
"message": "<string>",
"code": 123,
"validationErrors": [
"<string>"
]
}{
"name": "<string>",
"message": "<string>",
"code": 123,
"validationErrors": [
"<string>"
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Device ID
^[1-9]\d*$Body
Device name
255Full replacement of the device's line extensions. When present, all 26 line slots are rewritten from this list (omitted slots are cleared). Also rewrites the device's LINE-type autoprovision values (peername + sip_password).
Show child attributes
Show child attributes
Full replacement of the device's phonebook associations. Order in the array is preserved.
x <= 9007199254740991Full replacement of the device's PHONE button layout assignments. If either this or sidecarButtonLayoutIds is present, BOTH sets are rewritten from whatever is sent (omit = clear).
x <= 9007199254740991Full replacement of the device's SIDECAR button layout assignments (Yealink only).
x <= 9007199254740991Partial upsert of the device's outside-loop autoprovision overrides (av_type = 'PHONE'). Each entry overwrites the value for that field; fields not included are left untouched. Names must match outside-loop fields in the phone-model template. Send an empty array to reset every outside-loop override back to the phone-model template defaults.
Show child attributes
Show child attributes
Response
Updated device with full settings profile
Device ID
Device name
MAC address
Owning tenant
Show child attributes
Show child attributes
Phone model
Show child attributes
Show child attributes
Assigned line extensions
Show child attributes
Show child attributes
Assigned button layouts
Show child attributes
Show child attributes
Assigned phonebooks
Show child attributes
Show child attributes
Device-level configurable fields. One entry per av_autoprovisionvalues row of av_type = 'PHONE' for this device, joined to its al_autoprovisionlabels row for the human-readable label. displayValue is the mapped label for select/bool/checkbox/radio fields (per the template's options); equals value otherwise.
Show child attributes
Show child attributes
SIP user agent of the device's primary line (phLine1ExId). Empty string when no primary line is set or the phone is not currently registered.
Was this page helpful?