Represents the availability state of an agent and call status.
Availabilities are represented as JSON objects with the following properties:
agent_state string false false The availability state of the agent. If omnichannel routing is enabled, agent_state can not be updated through the API. Allowed values are "online", "offline", "away", or "transfers_only". call_status string false false The call status of the agent. Allowed values are "on_call", "wrap_up", or "null". via string false false The channel (client/phone) the agent is registered to. If omnichannel routing is enabled, only via can be updated through the API.
Example
{
"agent_state" : "online" ,
"call_status" : "wrap_up" ,
"via" : "phone"
}
Show Availability
GET /api/v2/channels/voice/availabilities/{agent_id}
Allowed For
Parameters
agent_id integer Path true ID of an agent
Code Samples
curl
curl https:// { subdomain } .zendesk.com/api/v2/channels/voice/availabilities/ { agent_id } .json \
-v -u { email_address } /token: { api_token } -X GET
Go
import (
"fmt"
"io"
"net/http"
)
func main ( ) {
url := "https://support.zendesk.com/api/v2/channels/voice/availabilities/385473779372"
method := "GET"
req , err := http . NewRequest ( method , url , nil )
if err != nil {
fmt . Println ( err )
return
}
req . Header . Add ( "Content-Type" , "application/json" )
req . Header . Add ( "Authorization" , "Basic <auth-value>" )
client := & http . Client { }
res , err := client . Do ( req )
if err != nil {
fmt . Println ( err )
return
}
defer res . Body . Close ( )
body , err := io . ReadAll ( res . Body )
if err != nil {
fmt . Println ( err )
return
}
fmt . Println ( string ( body ) )
}
Java
import com . squareup . okhttp . * ;
OkHttpClient client = new OkHttpClient ( ) ;
HttpUrl . Builder urlBuilder = HttpUrl . parse ( "https://support.zendesk.com/api/v2/channels/voice/availabilities/385473779372" )
. newBuilder ( ) ;
String userCredentials = "your_email_address" + "/token:" + "your_api_token" ;
String basicAuth = "Basic " + java . util . Base64 . getEncoder ( ) . encodeToString ( userCredentials . getBytes ( ) ) ;
Request request = new Request . Builder ( )
. url ( urlBuilder . build ( ) )
. method ( "GET" , null )
. addHeader ( "Content-Type" , "application/json" )
. addHeader ( "Authorization" , basicAuth )
. build ( ) ;
Response response = client . newCall ( request ) . execute ( ) ;
Nodejs
var axios = require ( 'axios' ) ;
var config = {
method : 'GET' ,
url : 'https://support.zendesk.com/api/v2/channels/voice/availabilities/385473779372' ,
headers : {
'Content-Type' : 'application/json' ,
'Authorization' : 'Basic <auth-value>' ,
} ,
} ;
axios ( config )
. then ( function ( response ) {
console . log ( JSON . stringify ( response . data ) ) ;
} )
. catch ( function ( error ) {
console . log ( error ) ;
} ) ;
Python
import requests
from requests . auth import HTTPBasicAuth
url = "https://support.zendesk.com/api/v2/channels/voice/availabilities/385473779372"
headers = {
"Content-Type" : "application/json" ,
}
email_address = 'your_email_address'
api_token = 'your_api_token'
auth = HTTPBasicAuth ( f' { email_address } /token' , api_token )
response = requests . request (
"GET" ,
url ,
auth = auth ,
headers = headers
)
print ( response . text )
Ruby
require "net/http"
require "base64"
uri = URI ( "https://support.zendesk.com/api/v2/channels/voice/availabilities/385473779372" )
request = Net : : HTTP : : Get . new ( uri , "Content-Type" : "application/json" )
email = "your_email_address"
api_token = "your_api_token"
credentials = "#{email}/token:#{api_token}"
encoded_credentials = Base64 . strict_encode64 ( credentials )
request [ "Authorization" ] = "Basic #{encoded_credentials}"
response = Net : : HTTP . start uri . hostname , uri . port , use_ssl : true do | http |
http . request ( request )
end
Example response(s)
200 OK
{
"availability" : {
"agent_state" : "online" ,
"via" : "client"
}
}
Update Availability
PUT /api/v2/channels/voice/availabilities/{agent_id}
Allowed For
Parameters
agent_id integer Path true ID of an agent
Example body
{
"availability" : {
"agent_state" : "online" ,
"via" : "client"
}
}
Code Samples
curl
curl https:// { subdomain } .zendesk.com/api/v2/channels/voice/availabilities/ { agent_id } .json \
-H "Content-Type: application/json" -d '{"availability": {"via": "client", "agent_state": "online"}}' \
-v -u { email_address } /token: { api_token } -X PUT
Go
import (
"fmt"
"io"
"net/http"
"strings"
)
func main ( ) {
url := "https://support.zendesk.com/api/v2/channels/voice/availabilities/385473779372"
method := "PUT"
payload := strings . NewReader ( `{
"availability": {
"agent_state": "online",
"via": "client"
}
}` )
req , err := http . NewRequest ( method , url , payload )
if err != nil {
fmt . Println ( err )
return
}
req . Header . Add ( "Content-Type" , "application/json" )
req . Header . Add ( "Authorization" , "Basic <auth-value>" )
client := & http . Client { }
res , err := client . Do ( req )
if err != nil {
fmt . Println ( err )
return
}
defer res . Body . Close ( )
body , err := io . ReadAll ( res . Body )
if err != nil {
fmt . Println ( err )
return
}
fmt . Println ( string ( body ) )
}
Java
import com . squareup . okhttp . * ;
OkHttpClient client = new OkHttpClient ( ) ;
HttpUrl . Builder urlBuilder = HttpUrl . parse ( "https://support.zendesk.com/api/v2/channels/voice/availabilities/385473779372" )
. newBuilder ( ) ;
RequestBody body = RequestBody . create ( MediaType . parse ( "application/json" ) ,
"" "
{
\"availability\" : {
\"agent_state\" : \"online\" ,
\"via\" : \"client\"
}
} "" " ) ;
String userCredentials = "your_email_address" + "/token:" + "your_api_token" ;
String basicAuth = "Basic " + java . util . Base64 . getEncoder ( ) . encodeToString ( userCredentials . getBytes ( ) ) ;
Request request = new Request . Builder ( )
. url ( urlBuilder . build ( ) )
. method ( "PUT" , body )
. addHeader ( "Content-Type" , "application/json" )
. addHeader ( "Authorization" , basicAuth )
. build ( ) ;
Response response = client . newCall ( request ) . execute ( ) ;
Nodejs
var axios = require ( 'axios' ) ;
var data = JSON . stringify ( {
"availability" : {
"agent_state" : "online" ,
"via" : "client"
}
} ) ;
var config = {
method : 'PUT' ,
url : 'https://support.zendesk.com/api/v2/channels/voice/availabilities/385473779372' ,
headers : {
'Content-Type' : 'application/json' ,
'Authorization' : 'Basic <auth-value>' ,
} ,
data : data ,
} ;
axios ( config )
. then ( function ( response ) {
console . log ( JSON . stringify ( response . data ) ) ;
} )
. catch ( function ( error ) {
console . log ( error ) ;
} ) ;
Python
import requests
import json
from requests . auth import HTTPBasicAuth
url = "https://support.zendesk.com/api/v2/channels/voice/availabilities/385473779372"
payload = json . loads ( """{
"availability": {
"agent_state": "online",
"via": "client"
}
}""" )
headers = {
"Content-Type" : "application/json" ,
}
email_address = 'your_email_address'
api_token = 'your_api_token'
auth = HTTPBasicAuth ( f' { email_address } /token' , api_token )
response = requests . request (
"PUT" ,
url ,
auth = auth ,
headers = headers ,
json = payload
)
print ( response . text )
Ruby
require "net/http"
require "base64"
uri = URI ( "https://support.zendesk.com/api/v2/channels/voice/availabilities/385473779372" )
request = Net : : HTTP : : Put . new ( uri , "Content-Type" : "application/json" )
request . body = % q ( {
"availability" : {
"agent_state" : "online" ,
"via" : "client"
}
} )
email = "your_email_address"
api_token = "your_api_token"
credentials = "#{email}/token:#{api_token}"
encoded_credentials = Base64 . strict_encode64 ( credentials )
request [ "Authorization" ] = "Basic #{encoded_credentials}"
response = Net : : HTTP . start uri . hostname , uri . port , use_ssl : true do | http |
http . request ( request )
end
Example response(s)
200 OK
{
"availability" : {
"agent_state" : "online" ,
"via" : "client"
}
}