zendesk
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTroubleshooting
故障排查
If requests fail, run or
zero doctor check-connector --env-name ZENDESK_API_TOKENzero doctor check-connector --url https://your-subdomain.zendesk.com/api/v2/tickets.json --method GET如果请求失败,请运行或
zero doctor check-connector --env-name ZENDESK_API_TOKENzero doctor check-connector --url https://your-subdomain.zendesk.com/api/v2/tickets.json --method GETHow to Use
使用方法
All examples assume environment variables are set.
Base URL:
https://{subdomain}.zendesk.com/api/v2/Authentication: API Token via flag
-ubash
-u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN"Note: The flag automatically handles Base64 encoding for you.
-u所有示例均假设已设置环境变量。
基础URL:
https://{subdomain}.zendesk.com/api/v2/身份验证:通过标志使用API Token
-ubash
-u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN"注意:标志会自动为您处理Base64编码。
-uCore APIs
核心API
1. List Tickets
1. 列出工单
Get all tickets (paginated):
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" | jq '.tickets[] | {id, subject, status, priority}With pagination:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets.json?page=1&per_page=50" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN"获取所有工单(分页):
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" | jq '.tickets[] | {id, subject, status, priority}分页查询:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets.json?page=1&per_page=50" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN"2. Get Ticket
2. 获取工单详情
Retrieve a specific ticket:
bash
TICKET_ID="123"
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/${TICKET_ID}.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN"检索特定工单:
bash
TICKET_ID="123"
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/${TICKET_ID}.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN"3. Create Ticket
3. 创建工单
Create a new support ticket:
Write to :
/tmp/zendesk_request.jsonjson
{
"ticket": {
"subject": "My printer is on fire!",
"comment": {
"body": "The smoke is very colorful."
},
"priority": "urgent"
}
}Then run:
bash
curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.jsonCreate ticket with more details:
Write to :
/tmp/zendesk_request.jsonjson
{
"ticket": {
"subject": "Need help with account",
"comment": {
"body": "I cannot access my account settings."
},
"priority": "high",
"status": "open",
"type": "problem",
"tags": ["account", "access"]
}
}Then run:
bash
curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json创建新的支持工单:
写入文件:
/tmp/zendesk_request.jsonjson
{
"ticket": {
"subject": "My printer is on fire!",
"comment": {
"body": "The smoke is very colorful."
},
"priority": "urgent"
}
}然后运行:
bash
curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json创建包含更多详情的工单:
写入文件:
/tmp/zendesk_request.jsonjson
{
"ticket": {
"subject": "Need help with account",
"comment": {
"body": "I cannot access my account settings."
},
"priority": "high",
"status": "open",
"type": "problem",
"tags": ["account", "access"]
}
}然后运行:
bash
curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json4. Update Ticket
4. 更新工单
Update an existing ticket:
bash
TICKET_ID="123"Write to :
/tmp/zendesk_request.jsonjson
{
"ticket": {
"status": "solved",
"comment": {
"body": "Issue has been resolved. Thank you!",
"public": true
}
}
}Then run:
bash
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/${TICKET_ID}.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.jsonChange priority and assignee:
bash
TICKET_ID="123"
ASSIGNEE_ID="456"Write to :
/tmp/zendesk_request.jsonjson
{
"ticket": {
"priority": "high",
"assignee_id": ASSIGNEE_ID_PLACEHOLDER
}
}Then run:
bash
sed -i '' "s/ASSIGNEE_ID_PLACEHOLDER/${ASSIGNEE_ID}/" /tmp/zendesk_request.json
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/${TICKET_ID}.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json更新现有工单:
bash
TICKET_ID="123"写入文件:
/tmp/zendesk_request.jsonjson
{
"ticket": {
"status": "solved",
"comment": {
"body": "Issue has been resolved. Thank you!",
"public": true
}
}
}然后运行:
bash
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/${TICKET_ID}.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json修改优先级与经办人:
bash
TICKET_ID="123"
ASSIGNEE_ID="456"写入文件:
/tmp/zendesk_request.jsonjson
{
"ticket": {
"priority": "high",
"assignee_id": ASSIGNEE_ID_PLACEHOLDER
}
}然后运行:
bash
sed -i '' "s/ASSIGNEE_ID_PLACEHOLDER/${ASSIGNEE_ID}/" /tmp/zendesk_request.json
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/${TICKET_ID}.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json5. Delete Ticket
5. 删除工单
Permanently delete a ticket:
bash
TICKET_ID="123"
curl -s -X DELETE "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/${TICKET_ID}.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN"永久删除工单:
bash
TICKET_ID="123"
curl -s -X DELETE "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/${TICKET_ID}.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN"6. Create Multiple Tickets
6. 批量创建工单
Bulk create tickets:
Write to :
/tmp/zendesk_request.jsonjson
{
"tickets": [
{
"subject": "Ticket 1",
"comment": {
"body": "First ticket"
}
},
{
"subject": "Ticket 2",
"comment": {
"body": "Second ticket"
}
}
]
}Then run:
bash
curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/create_many.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json批量创建工单:
写入文件:
/tmp/zendesk_request.jsonjson
{
"tickets": [
{
"subject": "Ticket 1",
"comment": {
"body": "First ticket"
}
},
{
"subject": "Ticket 2",
"comment": {
"body": "Second ticket"
}
}
]
}然后运行:
bash
curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/create_many.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json7. List Users
7. 列出用户
Get all users:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/users.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" | jq '.users[] | {id, name, email, role}获取所有用户:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/users.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" | jq '.users[] | {id, name, email, role}8. Get Current User
8. 获取当前用户
Get authenticated user details:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/users/me.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN"获取已认证用户的详情:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/users/me.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN"9. Create User
9. 创建用户
Create an end-user:
Write to :
/tmp/zendesk_request.jsonjson
{
"user": {
"name": "John Customer",
"email": "john@example.com",
"role": "end-user"
}
}Then run:
bash
curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/users.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.jsonCreate an agent:
Write to :
/tmp/zendesk_request.jsonjson
{
"user": {
"name": "Jane Agent",
"email": "jane@company.com",
"role": "agent"
}
}Then run:
bash
curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/users.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json创建终端用户:
写入文件:
/tmp/zendesk_request.jsonjson
{
"user": {
"name": "John Customer",
"email": "john@example.com",
"role": "end-user"
}
}然后运行:
bash
curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/users.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json创建客服专员:
写入文件:
/tmp/zendesk_request.jsonjson
{
"user": {
"name": "Jane Agent",
"email": "jane@company.com",
"role": "agent"
}
}然后运行:
bash
curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/users.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json10. Update User
10. 更新用户信息
Update user information:
bash
USER_ID="456"Write to :
/tmp/zendesk_request.jsonjson
{
"user": {
"name": "Updated Name",
"phone": "+1234567890"
}
}Then run:
bash
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/users/${USER_ID}.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json更新用户信息:
bash
USER_ID="456"写入文件:
/tmp/zendesk_request.jsonjson
{
"user": {
"name": "Updated Name",
"phone": "+1234567890"
}
}然后运行:
bash
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/users/${USER_ID}.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json11. Search Users
11. 搜索用户
Search for users by query:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/users/search.json?query=john" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" | jq '.users[] | {id, name, email}按查询条件搜索用户:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/users/search.json?query=john" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" | jq '.users[] | {id, name, email}12. List Organizations
12. 列出组织
Get all organizations:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/organizations.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" | jq '.organizations[] | {id, name, domain_names}获取所有组织:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/organizations.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" | jq '.organizations[] | {id, name, domain_names}13. Create Organization
13. 创建组织
Create a new organization:
Write to :
/tmp/zendesk_request.jsonjson
{
"organization": {
"name": "Acme Inc",
"domain_names": ["acme.com", "acmeinc.com"],
"details": "Important customer"
}
}Then run:
bash
curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/organizations.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json创建新组织:
写入文件:
/tmp/zendesk_request.jsonjson
{
"organization": {
"name": "Acme Inc",
"domain_names": ["acme.com", "acmeinc.com"],
"details": "Important customer"
}
}然后运行:
bash
curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/organizations.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json14. Update Organization
14. 更新组织信息
Update organization details:
bash
ORG_ID="789"Write to :
/tmp/zendesk_request.jsonjson
{
"organization": {
"name": "Acme Corporation",
"notes": "Premium customer since 2020"
}
}Then run:
bash
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/organizations/${ORG_ID}.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json更新组织详情:
bash
ORG_ID="789"写入文件:
/tmp/zendesk_request.jsonjson
{
"organization": {
"name": "Acme Corporation",
"notes": "Premium customer since 2020"
}
}然后运行:
bash
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/organizations/${ORG_ID}.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json15. List Groups
15. 列出客服组
Get all agent groups:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/groups.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" | jq '.groups[] | {id, name}获取所有客服组:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/groups.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" | jq '.groups[] | {id, name}16. Create Group
16. 创建客服组
Create a new agent group:
Write to :
/tmp/zendesk_request.jsonjson
{
"group": {
"name": "Support Team"
}
}Then run:
bash
curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/groups.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json创建新客服组:
写入文件:
/tmp/zendesk_request.jsonjson
{
"group": {
"name": "Support Team"
}
}然后运行:
bash
curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/groups.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json17. Search API
17. 搜索API
Search for open tickets:
Write to :
/tmp/zendesk_query.txttype:ticket status:openbash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/search.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -G --data-urlencode "query@/tmp/zendesk_query.txt" | jq '.results[] | {id, subject, status}Search for high priority tickets:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/search.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -G --data-urlencode "query@/tmp/zendesk_query.txt" | jq '.results[]Search tickets with keywords:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/search.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -G --data-urlencode "query@/tmp/zendesk_query.txt" | jq '.results[]Search users by email domain:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/search.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -G --data-urlencode "query@/tmp/zendesk_query.txt" | jq '.results[]搜索未关闭的工单:
写入文件:
/tmp/zendesk_query.txttype:ticket status:openbash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/search.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -G --data-urlencode "query@/tmp/zendesk_query.txt" | jq '.results[] | {id, subject, status}搜索高优先级工单:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/search.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -G --data-urlencode "query@/tmp/zendesk_query.txt" | jq '.results[]搜索包含关键词的工单:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/search.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -G --data-urlencode "query@/tmp/zendesk_query.txt" | jq '.results[]按邮箱域名搜索用户:
bash
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/search.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -G --data-urlencode "query@/tmp/zendesk_query.txt" | jq '.results[]18. Get Ticket Comments
18. 获取工单评论
List all comments on a ticket:
bash
TICKET_ID="123"
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/${TICKET_ID}/comments.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" | jq '.comments[] | {id, body, author_id, public}列出工单的所有评论:
bash
TICKET_ID="123"
curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/${TICKET_ID}/comments.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" | jq '.comments[] | {id, body, author_id, public}19. Assign Ticket to Group
19. 将工单分配给客服组
Assign a ticket to a group:
bash
TICKET_ID="123"
GROUP_ID="456"Write to :
/tmp/zendesk_request.jsonjson
{
"ticket": {
"group_id": GROUP_ID_PLACEHOLDER
}
}Then run:
bash
sed -i '' "s/GROUP_ID_PLACEHOLDER/${GROUP_ID}/" /tmp/zendesk_request.json
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/${TICKET_ID}.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json将工单分配给指定客服组:
bash
TICKET_ID="123"
GROUP_ID="456"写入文件:
/tmp/zendesk_request.jsonjson
{
"ticket": {
"group_id": GROUP_ID_PLACEHOLDER
}
}然后运行:
bash
sed -i '' "s/GROUP_ID_PLACEHOLDER/${GROUP_ID}/" /tmp/zendesk_request.json
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/${TICKET_ID}.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json20. Bulk Update Tickets
20. 批量更新工单
Update multiple tickets at once:
Write to :
/tmp/zendesk_request.jsonjson
{
"ticket": {
"status": "solved"
}
}Then run:
bash
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/update_many.json?ids=123,124,125" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json一次性更新多个工单:
写入文件:
/tmp/zendesk_request.jsonjson
{
"ticket": {
"status": "solved"
}
}然后运行:
bash
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/update_many.json?ids=123,124,125" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.jsonCommon Workflows
常见工作流
Create Ticket and Assign to Agent
创建工单并分配给客服专员
Write to :
/tmp/zendesk_request.jsonjson
{
"ticket": {
"subject": "New issue",
"comment": {
"body": "Need help"
}
}
}Then run:
bash
undefined写入文件:
/tmp/zendesk_request.jsonjson
{
"ticket": {
"subject": "New issue",
"comment": {
"body": "Need help"
}
}
}然后运行:
bash
undefinedCreate ticket
创建工单
TICKET_RESPONSE=$(curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json)
TICKET_ID=$(echo $TICKET_RESPONSE | jq -r '.ticket.id')
TICKET_RESPONSE=$(curl -s -X POST "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json)
TICKET_ID=$(echo $TICKET_RESPONSE | jq -r '.ticket.id')
Assign to agent
分配给客服专员
ASSIGNEE_ID="789"
Write to `/tmp/zendesk_request.json`:
```json
{
"ticket": {
"assignee_id": ASSIGNEE_ID_PLACEHOLDER,
"status": "open"
}
}Then run:
bash
sed -i '' "s/ASSIGNEE_ID_PLACEHOLDER/${ASSIGNEE_ID}/" /tmp/zendesk_request.json
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/${TICKET_ID}.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.jsonASSIGNEE_ID="789"
写入文件`/tmp/zendesk_request.json`:
```json
{
"ticket": {
"assignee_id": ASSIGNEE_ID_PLACEHOLDER,
"status": "open"
}
}然后运行:
bash
sed -i '' "s/ASSIGNEE_ID_PLACEHOLDER/${ASSIGNEE_ID}/" /tmp/zendesk_request.json
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/${TICKET_ID}.json" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.jsonFind and Close Old Tickets
查找并关闭旧工单
bash
undefinedbash
undefinedSearch for old open tickets (30+ days)
搜索30天以上的未关闭工单
OLD_TICKETS="$(curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/search.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -G --data-urlencode "query@/tmp/zendesk_query.txt" | jq -r '.results[].id' | paste -sd "," -)"
Write to `/tmp/zendesk_request.json`:
```json
{
"ticket": {
"status": "closed"
}
}Then run:
bash
undefinedOLD_TICKETS="$(curl -s "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/search.json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -G --data-urlencode "query@/tmp/zendesk_query.txt" | jq -r '.results[].id' | paste -sd "," -)"
写入文件`/tmp/zendesk_request.json`:
```json
{
"ticket": {
"status": "closed"
}
}然后运行:
bash
undefinedBulk close them
批量关闭
curl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/update_many.json?ids=${OLD_TICKETS}" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json
undefinedcurl -s -X PUT "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets/update_many.json?ids=${OLD_TICKETS}" -H "Content-Type: application/json" -u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN" -d @/tmp/zendesk_request.json
undefinedSearch Query Syntax
搜索查询语法
Ticket Search Operators
工单搜索操作符
- - Search tickets only
type:ticket - - Filter by status (open, pending, solved, closed)
status:open - - Filter by priority (low, normal, high, urgent)
priority:high - - Find tickets assigned to specific agent
assignee:name - - Find tickets in specific group
group:name - - Search by tag
tags:keyword - - Created after date
created>2024-01-01 - - Created in last 30 days
created<30 - - Search exact text
"exact phrase"
- - 仅搜索工单
type:ticket - - 按状态过滤(open、pending、solved、closed)
status:open - - 按优先级过滤(low、normal、high、urgent)
priority:high - - 查找分配给特定客服专员的工单
assignee:name - - 查找特定客服组的工单
group:name - - 按标签搜索
tags:keyword - - 搜索指定日期之后创建的工单
created>2024-01-01 - - 搜索过去30天内创建的工单
created<30 - - 搜索精确文本
"exact phrase"
User Search Operators
用户搜索操作符
- - Search users only
type:user - - Filter by role (end-user, agent, admin)
role:agent - - Search by email domain
email:*@domain.com - - Search by name
name:john
- - 仅搜索用户
type:user - - 按角色过滤(end-user、agent、admin)
role:agent - - 按邮箱域名搜索
email:*@domain.com - - 按姓名搜索
name:john
Combining Operators
组合操作符
Use spaces for AND logic:
bash
query=type:ticket status:open priority:high使用空格表示AND逻辑:
bash
query=type:ticket status:open priority:highRate Limits
请求速率限制
| Plan | Requests/Minute |
|---|---|
| Team | 200 |
| Growth | 400 |
| Professional | 400 |
| Enterprise | 700 |
| Enterprise Plus | 2,500 |
Special Limits:
- Update Ticket: 30 updates per 10 minutes per user per ticket
- Account-wide ceiling: 100,000 requests/minute
| 套餐 | 每分钟请求数 |
|---|---|
| Team | 200 |
| Growth | 400 |
| Professional | 400 |
| Enterprise | 700 |
| Enterprise Plus | 2,500 |
特殊限制:
- 更新工单:每个用户对每个工单每10分钟最多30次更新
- 账户全局上限:每分钟100,000次请求
Rate Limit Headers
速率限制响应头
X-Rate-Limit: 700 # Your account's limit
X-Rate-Limit-Remaining: 685 # Requests remaining
Retry-After: 45 # Seconds to wait if exceededX-Rate-Limit: 700 # 您的账户限制
X-Rate-Limit-Remaining: 685 # 剩余请求数
Retry-After: 45 # 超出限制后需等待的秒数Handling Rate Limits
处理速率限制
bash
undefinedbash
undefinedUse curl retry flags
使用curl重试标志
curl "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets.json"
-u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN"
--retry 3 --retry-delay 5
-u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN"
--retry 3 --retry-delay 5
undefinedcurl "https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/tickets.json"
-u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN"
--retry 3 --retry-delay 5
-u "$ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN"
--retry 3 --retry-delay 5
undefinedGuidelines
指南
- Enable API token access first: In Admin Center, ensure Token Access is enabled before using tokens
- Always use HTTPS: TLS 1.2+ required
- Monitor rate limits: Check header
X-Rate-Limit-Remaining - Use bulk operations: ,
create_manyendpoints save API callsupdate_many - Implement exponential backoff: Honor header on 429 responses
Retry-After - Paginate large datasets: Default limit is 100, max per_page is 100
- Secure your tokens: Store in environment variables, never in code
- Use specific searches: Narrow queries with filters to reduce response size
- Verify with reliable endpoints: Use or
/tickets.jsonto test tokens (not/users.json)/users/me.json - Status values: open, pending, hold, solved, closed
- Priority values: low, normal, high, urgent
- User roles: end-user, agent, admin (need agent or admin role for API access)
- Ticket types: problem, incident, question, task
- Authentication format: email/token:api_token (curl -u handles encoding)
- New workspaces: Fresh Zendesk accounts come with sample tickets for testing
- 先启用API Token访问:在管理中心,使用Token前确保已启用Token访问
- 始终使用HTTPS:要求TLS 1.2+版本
- 监控速率限制:检查响应头
X-Rate-Limit-Remaining - 使用批量操作:、
create_many端点可减少API调用次数update_many - 实现指数退避:收到429响应时遵循头的指示
Retry-After - 对大型数据集分页:默认限制为100,最大每页100条
- 妥善保管Token:存储在环境变量中,切勿写入代码
- 使用精准搜索:通过过滤器缩小查询范围以减少响应数据量
- 使用可靠端点验证:使用或
/tickets.json测试Token(不要用/users.json)/users/me.json - 状态值:open、pending、hold、solved、closed
- 优先级值:low、normal、high、urgent
- 用户角色:end-user、agent、admin(需要agent或admin角色才能访问API)
- 工单类型:problem、incident、question、task
- 身份验证格式:email/token:api_token(curl的-u参数会处理编码)
- 新工作区:全新Zendesk账户会提供示例工单用于测试
API Reference
API参考
- Main Documentation: https://developer.zendesk.com/api-reference/
- Tickets API: https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/
- Users API: https://developer.zendesk.com/api-reference/ticketing/users/users/
- Organizations API: https://developer.zendesk.com/api-reference/ticketing/organizations/organizations/
- Groups API: https://developer.zendesk.com/api-reference/ticketing/groups/groups/
- Search API: https://developer.zendesk.com/documentation/ticketing/using-the-zendesk-api/searching-with-the-zendesk-api/
- Rate Limits: https://developer.zendesk.com/api-reference/introduction/rate-limits/
- Authentication: https://developer.zendesk.com/api-reference/introduction/security-and-auth/
- Admin Center: https://www.zendesk.com/admin/
- 主文档:https://developer.zendesk.com/api-reference/
- 工单API:https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/
- 用户API:https://developer.zendesk.com/api-reference/ticketing/users/users/
- 组织API:https://developer.zendesk.com/api-reference/ticketing/organizations/organizations/
- 客服组API:https://developer.zendesk.com/api-reference/ticketing/groups/groups/
- 搜索API:https://developer.zendesk.com/documentation/ticketing/using-the-zendesk-api/searching-with-the-zendesk-api/
- 速率限制:https://developer.zendesk.com/api-reference/introduction/rate-limits/
- 身份验证:https://developer.zendesk.com/api-reference/introduction/security-and-auth/
- 管理中心:https://www.zendesk.com/admin/