Listar, ver, abrir, comentar e mover chamados e consultar as fases e o catálogo de serviços, com curl, steel CLI e SDK, respostas de exemplo e os erros de cada operação.
Nesta página
Todas as rotas desta página exigem um token com o módulo ServiceDesk e
rodam com as suas permissões no ServiceDesk: agentes veem a fila do workspace,
solicitantes só os próprios chamados, como no portal. Os exemplos usam
$STEEL_URL e $STEEL_TOKEN (veja Antes da primeira chamada).
Operação
Rota
Escopo
CLI
SDK
Listar chamados
GET /api/v1/servicedesk/tickets
api:read
steel sd ticket list
servicedesk.tickets.list()
Ver chamado
GET /api/v1/servicedesk/tickets/{ticketId}
api:read
steel sd ticket view
servicedesk.tickets.get()
Abrir chamado
POST /api/v1/servicedesk/tickets
api:write
steel sd ticket create
servicedesk.tickets.create()
Comentar
POST /api/v1/servicedesk/tickets/{ticketId}/comments
api:write
steel sd ticket comment
servicedesk.tickets.comment()
Mudar de fase
POST /api/v1/servicedesk/tickets/{ticketId}/phase
api:write
steel sd ticket move
servicedesk.tickets.move()
Fases
GET /api/v1/servicedesk/phases
api:read
—
—
Catálogo
GET /api/v1/servicedesk/catalog
api:read
steel sd catalog
servicedesk.catalog()
Onde a rota pede {ticketId}, vale o id, o número (123) ou o código
(INC-000123).
Listar chamados
Mais novos primeiro. Sem status, só os abertos (fases das categorias
NEW, IN_PROGRESS e WAITING).
Parâmetro
Valores
status
Categorias de fase, separadas por vírgula: NEW, IN_PROGRESS, WAITING, RESOLVED, CLOSED, CANCELED
type
INCIDENT, SERVICE_REQUEST, CHANGE, PROBLEM (vírgula para vários)
assigneeId
Ids de usuário, me (você) ou unassigned (sem responsável)
phaseId, priorityId
Ids, separados por vírgula (até 100)
q
Texto no título, na descrição ou no código (até 200 caracteres)
O chamado completo tem mais campos (categoria, serviço, departamento, cliente,
campos personalizados, planos de mudança, causa raiz, CSAT); a lista de cada um
está na referência. sla.*.state é ok, at_risk,
breached, met, paused ou none; remainingMinutes conta minutos úteis
do calendário do SLA e fica negativo quando atrasa. risk é null para
solicitantes e enquanto não há previsão.
No CLI, --status e --type aceitam os nomes em português (novo,
andamento, aguardando, resolvido, fechado, cancelado; incidente,
requisicao, mudanca, problema) ou os valores da API:
steel sd ticket list --assignee me
steel sd ticket list --status aguardando --type incidente --all
steel sd ticket list -s "vpn" --json | jq -r '.items[].code'
No SDK, os filtros de lista vão como texto separado por vírgula ou lista:
const page = await steel.servicedesk.tickets.list({
assigneeId: ['me'],
status: ['NEW', 'IN_PROGRESS', 'WAITING'],
limit: 10,
})
if (page.ok) for (const t of page.data.items) console.log(t.code, t.sla.resolution.state)
Erros: 404 SD_TICKET_NOT_FOUND (não existe neste workspace) e
403 SD_TICKET_FORBIDDEN (existe, mas você não pode vê-lo; por exemplo, um
solicitante pedindo o chamado de outra pessoa).
Abrir um chamado
Valem as mesmas regras da abertura no aplicativo: o modelo, a matriz de
prioridade (impacto × urgência), o roteamento, o SLA e as automações. O canal
é API quando o corpo não diz outro. Quem é solicitante abre como no portal.
Obrigatórios: type (INCIDENT, SERVICE_REQUEST, CHANGE ou PROBLEM) e
title (até 200 caracteres). Os mais usados entre os opcionais:
curl -X POST "$STEEL_URL/api/v1/servicedesk/tickets" \
-H "Authorization: Bearer $STEEL_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "INCIDENT",
"title": "VPN fora do ar na filial",
"description": "Desde as 9h ninguém da filial Centro conecta.",
"tags": ["vpn", "filial-centro"]
}'
A resposta é 201 com o chamado criado, no formato acima, já com code,
phase e os prazos de SLA calculados.
steel sd ticket create --type incidente --title "VPN fora do ar na filial" \
--description @descricao.md --tag vpn --tag filial-centro --yes
No terminal, o que faltar (tipo, título) é perguntado e a criação pede
confirmação; --yes pula a confirmação. Num script, faltar --type ou
--title é erro de uso (código de saída 2).
const created = await steel.servicedesk.tickets.create({
type: 'INCIDENT',
title: 'VPN fora do ar na filial',
tags: ['vpn'],
})
if (created.ok) console.log(created.data.code)
A configuração do ServiceDesk do workspace não foi encontrada. Fale com um administrador do workspace
422 SD_CUSTOM_FIELD_INVALID
Um campo personalizado obrigatório faltou ou veio no formato errado
403 SD_PORTAL_DISABLED
Você é solicitante e o portal está desligado
403 SD_TICKET_FORBIDDEN
Você é solicitante e o tipo não pode ser aberto pelo portal
Comentar
Uma mensagem no histórico do chamado. visibility é PUBLIC (padrão: o
solicitante vê e é avisado) ou INTERNAL (só os agentes). Até 10.000
caracteres; sem anexos na v1.
curl -X POST "$STEEL_URL/api/v1/servicedesk/tickets/INC-000123/comments" \
-H "Authorization: Bearer $STEEL_TOKEN" \
-H "Content-Type: application/json" \
-d '{"body":"Link da operadora caiu; previsão de volta às 14h.","visibility":"INTERNAL"}'
O fluxo não permite ir da fase atual para essa. Veja as transições em Configurações do ServiceDesk › Fluxos
422 SD_PHASE_REQUIREMENTS_UNMET
A fase pede algo que falta (solução, classificação, campo). A mensagem diz o quê
422 SD_APPROVAL_REQUIRED
A mudança precisa de aprovação antes
422 SD_SIGNATURE_REQUIRED
A fase exige assinatura digital, feita no aplicativo
404 SD_PHASE_NOT_FOUND
O phaseId não existe neste workspace
Listar fases
As fases ativas de cada tipo de chamado, na ordem do quadro, para escolher
o phaseId de Mudar de fase. Qualquer membro do ServiceDesk
lê a lista; mover continua só para agentes.
Parâmetro
Valores
ticketType
INCIDENT, SERVICE_REQUEST, CHANGE ou PROBLEM. Omitido = todos os tipos
nextPhaseIds diz para onde um chamado nesta fase pode ir:
Valor
Significado
null
O tipo não tem transições cadastradas: vale qualquer fase ativa do mesmo tipo
["…"]
Só estas fases. Transições limitadas a departamentos são conferidas na hora de mover (SD_PHASE_TRANSITION_NOT_ALLOWED)
[]
Nenhuma saída cadastrada a partir desta fase
requiredFields lista o que a fase exige preenchido para receber o chamado
(solution, solutionClassificationId, customFields.<chave>…).
Erro
Quando e como resolver
422 VALIDATION_ERROR
ticketType fora da lista, ou cursor inválido
Catálogo de serviços
Categorias, subcategorias e serviços ativos numa lista plana e ordenada. Cada
item diz o nível (level: CATEGORY, SUBCATEGORY ou SERVICE) e o pai
(parentId). Solicitantes veem só o que está visível no portal. ticketType
filtra os itens que aparecem num tipo de chamado.