A Group Service Level Agreement (SLA) is a documented agreement between a support provider and their customers that specifies support performance measures for a group of agents. Group SLAs are often expressed as follows:

*For urgent incidents, the tier 1 group solves or reassigns the ticket to another group within 10 minutes. *For high-priority incidents, the tier 3 group solves or reassign the ticket to another group the ticket within 30 minutes.

Because there may be different Group SLAs for each customer or group of customers, the support provider should define a Group SLA policy for each unique Group SLA's requirements.

All related endpoints are available on the Enterprise plans and above. Only admins are allowed to access the endpoints.

JSON format

Group SLA Policies are represented as JSON objects with the following properties:

Name Type Read-only Mandatory Description
created_at string true false The time the Group SLA policy was created
description string false false The description of the Group SLA policy
filter object false true An object that describes the conditions a ticket must match for a Group SLA policy to be applied to the ticket. SeeFilter.
id string true false Automatically assigned when created
policy_metrics array false false Array ofpolicy metric对象
position integer false false Position of the Group SLA policy. This position determines the order in which policies are matched to tickets. If not specified, the Group SLA policy is added at the last position
title string false true The title of the Group SLA policy
updated_at string true false The time of the last update of the Group SLA policy
url string true false URL of the Group SLA policy record

Filter

A filter checks the value of ticket fields and selects the ticket if the conditions are met. The filter is represented as a JSON object with two arrays of one or more conditions. For Group SLA Policy objects, at least one filter with the field "group_id" is mandatory.

Example

             
{"filter":{"all":[{"field":"group_id","operator":"includes","value":[10001]},]}}

The array lists all the conditions that must be met.

Name Type Description
all array 逻辑。票必须履行所有的赖斯tions to be considered matching

Each condition in an array has the following properties:

Name Type Description
field string The name of a ticket field
operator string A comparison operator
value string The value of a ticket field

Example

             
{"field":"group_id","operator":"includes","value":[10001]}

SeeConditions referencefor the list of fields, allowed operators, and values of the conditions.

Policy Metric

An object that describes the metric targets for each value of the priority field.

Policy metrics are represented as simple flat JSON objects with have the following properties:

Name Type Comment
priority string Priority that a ticket must match
metric string The definition of the time that is being measured. SeeMetrics
target integer The time within which the end-state for a metric should be met
business_hours boolean Whether the metric targets are being measured in business hours or calendar hours

Example

             
{"priority":"low","metric":"group_ownership_time","target":3600,"business_hours":false}

Metrics

Metric Value
Group Ownership Time group_ownership_time

Example

             
{"created_at":"2023-03-17T22:50:26Z","description":"Group: Tier 1","filter":{"all":[]},"id":"01H078CBDY28BZG7P6BONY09DN","policy_metrics":[{"business_hours":false,"metric":"group_ownership_time","priority":"low","target":3600}],"position":3,"title":"Tier 1","updated_at":"2023-03-17T22:50:26Z","url":"https://company.zendesk.com/api/v2/group_slas/policies/01H078CBDY28BZG7P6BONY09DN.json"}

List Group SLA Policies

  • GET /api/v2/group_slas/policies

Allowed For

  • Admins

Code Samples

curl
              
curlhttps://{subdomain}.zendesk.com/api/v2/group_slas/policies.json\-H"Content-Type: application/json"\-v -u{email_address}:{password}
Go
              
import("fmt""io""net/http")funcmain(){url:="https://example.zendesk.com/api/v2/group_slas/policies"method:="GET"req,err:=http.NewRequest(method,url,nil)iferr!=nil{fmt.Println(err)return}req.Header.Add("Content-Type","application/json")req.Header.Add("Authorization","Basic ")// Base64 encoded "username:password"client:=&http.Client{}res,err:=client.Do(req)iferr!=nil{fmt.Println(err)return}deferres.Body.Close()body,err:=io.ReadAll(res.Body)iferr!=nil{fmt.Println(err)return}fmt.Println(string(body))}
Java
              
importcom.squareup.okhttp.*;OkHttpClientclient=newOkHttpClient();HttpUrl.BuilderurlBuilder=HttpUrl.parse("https://example.zendesk.com/api/v2/group_slas/policies").newBuilder();Requestrequest=newRequest.Builder().url(urlBuilder.build()).method("GET",null).addHeader("Content-Type","application/json").addHeader("Authorization",Credentials.basic("your-email","your-password")).build();Responseresponse=client.newCall(request).execute();
Nodejs
              
varaxios=require('axios');varconfig={method:'GET',url:'https://example.zendesk.com/api/v2/group_slas/policies',headers:{'Content-Type':'application/json','Authorization':'Basic ',// Base64 encoded "username:password"},};axios(config).then(function(response){console.log(JSON.stringify(response.data));}).catch(function(error){console.log(error);});
Python
              
importrequestsurl="https://example.zendesk.com/api/v2/group_slas/policies"headers={"Content-Type":"application/json",}response=requests.request("GET",url,auth=('',''),headers=headers)print(response.text)
Ruby
              
require"net/http"uri=URI("https://example.zendesk.com/api/v2/group_slas/policies")request=Net::HTTP::Get.new(uri,"Content-Type":"application/json")request.basic_auth"username","password"response=Net::HTTP.start uri.hostname,uri.port,use_ssl:truedo|http|http.request(request)end

Example response(s)

200 OK
              
// Status 200 OK{"count":1,"group_sla_policies":[{"description":"For low priority tickets, the Tier 1 group will solve or reassign the ticket in one hour.","filter":{"all":[{"field":"group_ownership_time","operator":"includes","value":[6]}]},"id":"01H078CBDY28BZG7P6BONY09DN","policy_metrics":[{"business_hours":false,"metric":"group_ownership_time","priority":"low","target":3600}],"position":3,"title":"Incidents","url":“https://{子domain}.zendesk.com/api/v2/group_sla/policies/01H078CBDY28BZG7P6BONY09DN.json"}],"next_page":null,"previous_page":null}

Show Group SLA Policy

  • GET /api/v2/group_slas/policies/{group_sla_policy_id}

Allowed For

  • Admins

Parameters

Name Type In Required Description
group_sla_policy_id integer Path true The id of the Group SLA policy

Code Samples

curl
              
curlhttps://{subdomain}.zendesk.com/api/v2/group_slas/policies/{group_sla_policy_id}\-H"Content-Type: application/json"\-v -u{email_address}:{password}
Go
              
import("fmt""io""net/http")funcmain(){url:="https://example.zendesk.com/api/v2/group_slas/policies/36"method:="GET"req,err:=http.NewRequest(method,url,nil)iferr!=nil{fmt.Println(err)return}req.Header.Add("Content-Type","application/json")req.Header.Add("Authorization","Basic ")// Base64 encoded "username:password"client:=&http.Client{}res,err:=client.Do(req)iferr!=nil{fmt.Println(err)return}deferres.Body.Close()body,err:=io.ReadAll(res.Body)iferr!=nil{fmt.Println(err)return}fmt.Println(string(body))}
Java
              
importcom.squareup.okhttp.*;OkHttpClientclient=newOkHttpClient();HttpUrl.BuilderurlBuilder=HttpUrl.parse("https://example.zendesk.com/api/v2/group_slas/policies/36").newBuilder();Requestrequest=newRequest.Builder().url(urlBuilder.build()).method("GET",null).addHeader("Content-Type","application/json").addHeader("Authorization",Credentials.basic("your-email","your-password")).build();Responseresponse=client.newCall(request).execute();
Nodejs
              
varaxios=require('axios');varconfig={method:'GET',url:'https://example.zendesk.com/api/v2/group_slas/policies/36',headers:{'Content-Type':'application/json','Authorization':'Basic ',// Base64 encoded "username:password"},};axios(config).then(function(response){console.log(JSON.stringify(response.data));}).catch(function(error){console.log(error);});
Python
              
importrequestsurl="https://example.zendesk.com/api/v2/group_slas/policies/36"headers={"Content-Type":"application/json",}response=requests.request("GET",url,auth=('',''),headers=headers)print(response.text)
Ruby
              
require"net/http"uri=URI("https://example.zendesk.com/api/v2/group_slas/policies/36")request=Net::HTTP::Get.new(uri,"Content-Type":"application/json")request.basic_auth"username","password"response=Net::HTTP.start uri.hostname,uri.port,use_ssl:truedo|http|http.request(request)end

Example response(s)

200 OK
              
// Status 200 OK{"group_sla_policy":{"description":"Low priority tickets assigned to the group with id 6 will be completed or reassigned in one hour.","filter":{"all":[{"field":"group_id","operator":"includes","value":[6]}]},"id":"01H078CBDY28BZG7P6BONY09DN","policy_metrics":[{"business_hours":false,"metric":"group_ownership_time","priority":"low","target":3600}],"position":3,"title":"Incidents","url":“https://{子domain}.zendesk.com/api/v2/group_sla/policies/01H078CBDY28BZG7P6BONY09DN.json"}}

Create Group SLA Policy

  • POST /api/v2/group_slas/policies

Allowed For

  • Admins

Code Samples

curl
              
curlhttps://{subdomain}.zendesk.com/api/v2/group_slas/policies\-H"Content-Type: application/json"\-d'{"group_sla_policy": {"title": "Tier 1 Group SLA","description": "Tier 1 Group SLA","position": 3,"filter": {"all": [{ "field": "group_id", "operator": "includes", "value": [6] }]},"policy_metrics": [{ "priority": "normal", "metric": "group_ownership_time", "target": 1800, "business_hours": true },{ "priority": "urgent", "metric": "group_ownership_time", "target": 600, "business_hours": false },]}}'\-v -u{email_address}:{password}-X POST
Go
              
import("fmt""io""net/http")funcmain(){url:="https://example.zendesk.com/api/v2/group_slas/policies"method:="POST"req,err:=http.NewRequest(method,url,nil)iferr!=nil{fmt.Println(err)return}req.Header.Add("Content-Type","application/json")req.Header.Add("Authorization","Basic ")// Base64 encoded "username:password"client:=&http.Client{}res,err:=client.Do(req)iferr!=nil{fmt.Println(err)return}deferres.Body.Close()body,err:=io.ReadAll(res.Body)iferr!=nil{fmt.Println(err)return}fmt.Println(string(body))}
Java
              
importcom.squareup.okhttp.*;OkHttpClientclient=newOkHttpClient();HttpUrl.BuilderurlBuilder=HttpUrl.parse("https://example.zendesk.com/api/v2/group_slas/policies").newBuilder();RequestBodybody=RequestBody.create(MediaType.parse("application/json"),"""""");Requestrequest=newRequest.Builder().url(urlBuilder.build()).method("POST",body).addHeader("Content-Type","application/json").addHeader("Authorization",Credentials.basic("your-email","your-password")).build();Responseresponse=client.newCall(request).execute();
Nodejs
              
varaxios=require('axios');varconfig={method:'POST',url:'https://example.zendesk.com/api/v2/group_slas/policies',headers:{'Content-Type':'application/json','Authorization':'Basic ',// Base64 encoded "username:password"},};axios(config).then(function(response){console.log(JSON.stringify(response.data));}).catch(function(error){console.log(error);});
Python
              
importrequestsurl="https://example.zendesk.com/api/v2/group_slas/policies"headers={"Content-Type":"application/json",}response=requests.request("POST",url,auth=('',''),headers=headers)print(response.text)
Ruby
              
require"net/http"uri=URI("https://example.zendesk.com/api/v2/group_slas/policies")request=Net::HTTP::Post.new(uri,"Content-Type":"application/json")request.basic_auth"username","password"response=Net::HTTP.start uri.hostname,uri.port,use_ssl:truedo|http|http.request(request)end

Example response(s)

201 Created
              
// Status 201 Created{"group_sla_policy":{"description":"The group with id 6 will have to solve or reassign normal priority tickets in 30 minutes and urgent tickets in 10.","filter":{"all":[{"field":"group_ownership_time","operator":"includes","value":[6]}]},"id":"01H078CBDY28BZG7P6BONY09DN","policy_metrics":[{"business_hours":false,"metric":"group_ownership_time","priority":"normal","target":1800},{"business_hours":false,"metric":"group_ownership_time","priority":"urgent","target":600}],"position":3,"title":"Incidents","url":“https://{子domain}.zendesk.com/api/v2/group_slas/policies/01H078CBDY28BZG7P6BONY09DN.json"}}

Update Group SLA Policy

  • PUT /api/v2/group_slas/policies/{group_sla_policy_id}

Updates the specified policy.

Allowed For

  • Admins

Parameters

Name Type In Required Description
group_sla_policy_id integer Path true The id of the Group SLA policy

Code Samples

curl
              
curlhttps://{subdomain}.zendesk.com/api/v2/group_slas/policies/{group_sla_policy_id}\-H"Content-Type: application/json"\-d'{"group_sla_policy": {"title": "Tier 1 Group SLA","description": "Tier 1 Group SLA","position": 3,"filter": {"all": [{ "field": "group_id", "operator": "includes", "value": [6] }]},"policy_metrics": [{ "priority": "normal", "metric": "group_ownership_time", "target": 1800, "business_hours": true },{ "priority": "urgent", "metric": "group_ownership_time", "target": 600, "business_hours": false },]}}'\-v -u{email_address}:{password}-X PUT
Go
              
import("fmt""io""net/http")funcmain(){url:="https://example.zendesk.com/api/v2/group_slas/policies/36"method:="PUT"req,err:=http.NewRequest(method,url,nil)iferr!=nil{fmt.Println(err)return}req.Header.Add("Content-Type","application/json")req.Header.Add("Authorization","Basic ")// Base64 encoded "username:password"client:=&http.Client{}res,err:=client.Do(req)iferr!=nil{fmt.Println(err)return}deferres.Body.Close()body,err:=io.ReadAll(res.Body)iferr!=nil{fmt.Println(err)return}fmt.Println(string(body))}
Java
              
importcom.squareup.okhttp.*;OkHttpClientclient=newOkHttpClient();HttpUrl.BuilderurlBuilder=HttpUrl.parse("https://example.zendesk.com/api/v2/group_slas/policies/36").newBuilder();RequestBodybody=RequestBody.create(MediaType.parse("application/json"),"""""");Requestrequest=newRequest.Builder().url(urlBuilder.build()).method("PUT",body).addHeader("Content-Type","application/json").addHeader("Authorization",Credentials.basic("your-email","your-password")).build();Responseresponse=client.newCall(request).execute();
Nodejs
              
varaxios=require('axios');varconfig={method:'PUT',url:'https://example.zendesk.com/api/v2/group_slas/policies/36',headers:{'Content-Type':'application/json','Authorization':'Basic ',// Base64 encoded "username:password"},};axios(config).then(function(response){console.log(JSON.stringify(response.data));}).catch(function(error){console.log(error);});
Python
              
importrequestsurl="https://example.zendesk.com/api/v2/group_slas/policies/36"headers={"Content-Type":"application/json",}response=requests.request("PUT",url,auth=('',''),headers=headers)print(response.text)
Ruby
              
require"net/http"uri=URI("https://example.zendesk.com/api/v2/group_slas/policies/36")request=Net::HTTP::Put.new(uri,"Content-Type":"application/json")request.basic_auth"username","password"response=Net::HTTP.start uri.hostname,uri.port,use_ssl:truedo|http|http.request(request)end

Example response(s)

200 OK
              
// Status 200 OK{"group_sla_policy":{"description":"Normal priority tickets assigned to the groups 6 or 7 will be completed or reassigned in 30 minutes.","filter":{"all":[{"field":"group_id","operator":"includes","value":[6,7]}]},"id":"01H078CBDY28BZG7P6BONY09DN","policy_metrics":[{"business_hours":false,"metric":"group_ownership_time","priority":"normal","target":1800}],"position":3,"title":"Urgent Incidents","url":“https://{子domain}.zendesk.com/api/v2/group_slas/policies/01H078CBDY28BZG7P6BONY09DN.json"}}

删除Group SLA Policy

  • DELETE /api/v2/group_slas/policies/{group_sla_policy_id}

Allowed For

  • Admins

Parameters

Name Type In Required Description
group_sla_policy_id integer Path true The id of the Group SLA policy

Code Samples

curl
              
curlhttps://{subdomain}.zendesk.com/api/v2/group_slas/policies/{group_sla_policy_id}\-H"Content-Type: application/json"\-v -u{email_address}:{password}-X DELETE
Go
              
import("fmt""io""net/http")funcmain(){url:="https://example.zendesk.com/api/v2/group_slas/policies/36"method:="DELETE"req,err:=http.NewRequest(method,url,nil)iferr!=nil{fmt.Println(err)return}req.Header.Add("Content-Type","application/json")req.Header.Add("Authorization","Basic ")// Base64 encoded "username:password"client:=&http.Client{}res,err:=client.Do(req)iferr!=nil{fmt.Println(err)return}deferres.Body.Close()body,err:=io.ReadAll(res.Body)iferr!=nil{fmt.Println(err)return}fmt.Println(string(body))}
Java
              
importcom.squareup.okhttp.*;OkHttpClientclient=newOkHttpClient();HttpUrl.BuilderurlBuilder=HttpUrl.parse("https://example.zendesk.com/api/v2/group_slas/policies/36").newBuilder();Requestrequest=newRequest.Builder().url(urlBuilder.build()).method("DELETE",null).addHeader("Content-Type","application/json").addHeader("Authorization",Credentials.basic("your-email","your-password")).build();Responseresponse=client.newCall(request).execute();
Nodejs
              
varaxios=require('axios');varconfig={method:'DELETE',url:'https://example.zendesk.com/api/v2/group_slas/policies/36',headers:{'Content-Type':'application/json','Authorization':'Basic ',// Base64 encoded "username:password"},};axios(config).then(function(response){console.log(JSON.stringify(response.data));}).catch(function(error){console.log(error);});
Python
              
importrequestsurl="https://example.zendesk.com/api/v2/group_slas/policies/36"headers={"Content-Type":"application/json",}response=requests.request("DELETE",url,auth=('',''),headers=headers)print(response.text)
Ruby
              
require"net/http"uri=URI("https://example.zendesk.com/api/v2/group_slas/policies/36")request=Net::HTTP::删除.new(uri,"Content-Type":"application/json")request.basic_auth"username","password"response=Net::HTTP.start uri.hostname,uri.port,use_ssl:truedo|http|http.request(request)end

Example response(s)

204 No Content
              
// Status 204 No Contentnull

Reorder Group SLA Policies

  • PUT /api/v2/group_slas/policies/reorder

Allowed For

  • Admins

Parameters

Name Type In Required Description
group_sla_policy_ids array 查询 false The ids of the Group SLA policies to reorder

Code Samples

curl
              
curlhttps://{subdomain}.zendesk.com/api/v2/group_slas/policies/reorder.json\-H"Content-Type: application/json"-X PUT\-d'{"group_sla_policy_ids": ["01H078CBDY28BZG7P6BONY09DN", "01K078CBDY28BZG7P9BONY09DN"]}'\-v -u{email}:{password}
Go
              
import("fmt""io""net/http")funcmain(){url:="https://example.zendesk.com/api/v2/group_slas/policies/reorder?group_sla_policy_ids="method:="PUT"req,err:=http.NewRequest(method,url,nil)iferr!=nil{fmt.Println(err)return}req.Header.Add("Content-Type","application/json")req.Header.Add("Authorization","Basic ")// Base64 encoded "username:password"client:=&http.Client{}res,err:=client.Do(req)iferr!=nil{fmt.Println(err)return}deferres.Body.Close()body,err:=io.ReadAll(res.Body)iferr!=nil{fmt.Println(err)return}fmt.Println(string(body))}
Java
              
importcom.squareup.okhttp.*;OkHttpClientclient=newOkHttpClient();HttpUrl.BuilderurlBuilder=HttpUrl.parse("https://example.zendesk.com/api/v2/group_slas/policies/reorder").newBuilder().addQueryParameter("group_sla_policy_ids","");RequestBodybody=RequestBody.create(MediaType.parse("application/json"),"""""");Requestrequest=newRequest.Builder().url(urlBuilder.build()).method("PUT",body).addHeader("Content-Type","application/json").addHeader("Authorization",Credentials.basic("your-email","your-password")).build();Responseresponse=client.newCall(request).execute();
Nodejs
              
varaxios=require('axios');varconfig={method:'PUT',url:'https://example.zendesk.com/api/v2/group_slas/policies/reorder',headers:{'Content-Type':'application/json','Authorization':'Basic ',// Base64 encoded "username:password"},params:{'group_sla_policy_ids':'',},};axios(config).then(function(response){console.log(JSON.stringify(response.data));}).catch(function(error){console.log(error);});
Python
              
importrequestsurl="https://example.zendesk.com/api/v2/group_slas/policies/reorder?group_sla_policy_ids="headers={"Content-Type":"application/json",}response=requests.request("PUT",url,auth=('',''),headers=headers)print(response.text)
Ruby
              
require"net/http"uri=URI("https://example.zendesk.com/api/v2/group_slas/policies/reorder")uri.query=URI.encode_www_form("group_sla_policy_ids":"")request=Net::HTTP::Put.new(uri,"Content-Type":"application/json")request.basic_auth"username","password"response=Net::HTTP.start uri.hostname,uri.port,use_ssl:truedo|http|http.request(request)end

Example response(s)

200 OK
              
// Status 200 OKnull

Retrieve Supported Filter Definition Items

  • GET /api/v2/group_slas/policies/definitions

Allowed For

  • Admins

Code Samples

curl
              
curlhttps://{subdomain}.zendesk.com/api/v2/group_slas/policies/definitions.json\-H"Content-Type: application/json"\-v -u{email_address}:{password}-X GET
Go
              
import("fmt""io""net/http")funcmain(){url:="https://example.zendesk.com/api/v2/group_slas/policies/definitions"method:="GET"req,err:=http.NewRequest(method,url,nil)iferr!=nil{fmt.Println(err)return}req.Header.Add("Content-Type","application/json")req.Header.Add("Authorization","Basic ")// Base64 encoded "username:password"client:=&http.Client{}res,err:=client.Do(req)iferr!=nil{fmt.Println(err)return}deferres.Body.Close()body,err:=io.ReadAll(res.Body)iferr!=nil{fmt.Println(err)return}fmt.Println(string(body))}
Java
              
importcom.squareup.okhttp.*;OkHttpClientclient=newOkHttpClient();HttpUrl.BuilderurlBuilder=HttpUrl.parse("https://example.zendesk.com/api/v2/group_slas/policies/definitions").newBuilder();Requestrequest=newRequest.Builder().url(urlBuilder.build()).method("GET",null).addHeader("Content-Type","application/json").addHeader("Authorization",Credentials.basic("your-email","your-password")).build();Responseresponse=client.newCall(request).execute();
Nodejs
              
varaxios=require('axios');varconfig={method:'GET',url:'https://example.zendesk.com/api/v2/group_slas/policies/definitions',headers:{'Content-Type':'application/json','Authorization':'Basic ',// Base64 encoded "username:password"},};axios(config).then(function(response){console.log(JSON.stringify(response.data));}).catch(function(error){console.log(error);});
Python
              
importrequestsurl="https://example.zendesk.com/api/v2/group_slas/policies/definitions"headers={"Content-Type":"application/json",}response=requests.request("GET",url,auth=('',''),headers=headers)print(response.text)
Ruby
              
require"net/http"uri=URI("https://example.zendesk.com/api/v2/group_slas/policies/definitions")request=Net::HTTP::Get.new(uri,"Content-Type":"application/json")request.basic_auth"username","password"response=Net::HTTP.start uri.hostname,uri.port,use_ssl:truedo|http|http.request(request)end

Example response(s)

200 OK
              
// Status 200 OK{"definitions":{"all":[{"group":"ticket","operators":[{"title":"Contains at least one of the following","value":"includes"},{"title":"Contains at least none of the following","value":"not_includes"}],"title":"Group ID","value":"group_id","values":{"list":[{"title":"Tier 1","value":6}],"type":"list"}}]}}