Informações Gerais - APIs Service Desk - v0.5
Especificação API Service Desk Open Finance Brasil
O objetivo desse documento é prover material para publicação das informações referentes a APIs do Service Desk no portal do Open Finance Brasil.
A Documentação completa e também utilizada como fonte deste conteúdo pode ser encontrada em: https://community.sysaid.com/Sysforums/templates/default/help/files/Guide_REST_API.htm
1. Modelo de Fluxo de atendimento:
2. URLs de acesso:
https://servicedesk.openfinancebrasil.org.br/ : Ambiente Produtivo do Service Desk Open Finance.
https://servicedesksandbox.openfinancebrasil.org.br/ : Ambiente Sandbox (Homologação) do Service Desk Open Finance.
3. Tabela DE/PARA front-end para API
Nome do Campo | API | Detalhes |
Categoria | problem_type | 1ºNível_2ºNível_3ºNível / Na resposta: 1º Nível de Categoria |
Subcategoria | problem_sub_type | Na resposta: 2º Nível de Categoria |
Categoria de 3º Nível | third_level_category | Na resposta: 3º Nível de Categoria |
Título | title |
|
Descrição | description |
|
Anotações | notes | {“userName”:{NOME DO USUÁRIO},”createDate”:{DATA EM MILISEGUNDOS},”text”:{TEXTO}} |
Solução | solution |
|
Atividades | activities | Iterações entre N1 e N2 |
Data de solicitação | insert_time | Em milisegundos |
Data de modificação | uptade_time | Em milisegundos |
Data de encerramento | close_time | Em milisegundos |
Prazo de SLA | due_date | Em milisegundos |
Data Prevista para Implementação da Correção |
CustomColumn82sr | Necessária quando utilizado o status “AGUARDANDO CORREÇÃO N2” em categorias de Incidentes |
Usuário Solicitante | request_user |
|
Equipe de Atendimento | assigned_group |
|
Instituição Requerente | CustomColumn155sr | Nome da instituição que está abrindo o chamado |
Especialista Atribuído | responsibility |
|
Status | status | Conferir lista de status |
Contador de Reabertura | reopen_counter | Número de vezes que o chamado foi reaberto |
Anexos | attachments |
|
Tipo de Registro de Serviço | sr_type |
|
Arquivado | arquive | Tipo Booleano |
Nível de Suporte Atual | current_support_level |
|
Tipo do Chamado | type | Incidentes = 1; Solicitação de Serviço = 10 |
Formulário Utilizado | template | Padrão Incidente = 20; Padrão Solicitação de Serviço = 12 |
O conteúdo da reclamação é procedente? | CustomColumn129sr | Necessário o preenchimento ao encerrar um chamado tipo Incidente (status: ATENDIMENTO ENCERRADO) |
Tipo de Erro | CustomColumn119sr | Disponível apenas para consulta nos chamados da categoria “Erro na Jornada ou Dados” |
4. APIs
Tipo de API: REST
Formato dos dados de retorno e envio: JSON Fonte do conteúdo:
https://community.sysaid.com/Sysforums/templates/default/help/files/Guide_REST_API.htm
FAQ Service Desk: https://servicedesk.openfinancebrasil.org.br/KBFAQTree.jsp
4.1 Login
Responsável pela autenticação na API, é pré-requisito para a execução de qualquer requisição. As credenciais devem ser solicitadas via Portal do Service Desk Open Finance.
É necessário um usuário Administrador (Atendimento N2) para a utilização da API.
POST - {URL}/api/v1/login
Campos Obrigatórios:
“user_name” = Nome de usuário de integração “password” = Senha do usuário de integração
Exemplo de Body:
{"user_name":"{NOME DO USUÁRIO}", "password":"{SENHA}"}
No retorno é necessário armazenar o Cookie JSESSIONID para consumo dos demais métodos.
Nesta requisição de login, também é necessário identificar o ID do Grupo de Atendimento que será utilizado nas requisições de consulta de chamados, para identificar este número na resposta deve ser capturado o valor do "id" na key "user_groups". De acordo com o exemplo a seguir:
"key": "user_groups",
"value": [
{
"id": 10,
"name": "N1 Service Desk", "type": 1,
"supportLevel": 1, "visible": true
}
4.2 Consulta de Chamados
Retorna todos os chamados, ativos e encerrados, que se encontram na equipe de atendimento do usuário autenticado, com exceção dos chamados que já foram arquivados. Neste tipo de requisição é necessário passar o parâmetro “assigned_group” para que apenas os tickets pertencentes ao grupo de atendimento do usuário sejam retornados.
GET – {URL}/api/v1/sr?assigned_group={ID do Grupo}
Body: Manter vazio
Para refinar a busca é necessário incluir parâmetros na requisição.
Estes são alguns exemplos de keys comuns a serem utilizadas:
“problem_type” = Categoria: 1º nível_2º nível_3ºnível “status” = Qual status que o chamado se encontra “insert_time” = Abertura do chamado
“due_date” = SLA
Consultar a Tabela DE/PARA (Tópico 3.)
Exemplo de requisição:
GET – {URL}/api/v1/sr?problem_type=Incidentes_APIs_Erros&assigned_group=10
Body: Manter vazio
O retorno virá com todas as informações referentes aos chamados que entrarem nos parâmetros estabelecidos. Para retornar campos específicos na reposta é necessário utilizar a key “fields" na requisição e selecionar os parâmetros de retorno.
Estes são alguns exemplos de keys comuns a serem utilizadas:
“id” = ID do chamado
“update_time” = Data e hora da última modificação “solution” = Solução do chamado
“request_user” = Usuário Solicitante Consultar a Tabela DE/PARA (Tópico 3.)
Exemplo de requisição:
GET – {URL}/api/v1/sr?problem_type=Incidentes_APIs_Erros&fields=id,update_time&assigned_group=10
Aplicando os mesmos parâmetros da requisição anterior, os chamados exibidos serão os mesmos, porém agora apenas a informações indicadas em “fields” serão exibidas em cada chamado respectivamente.
Existem outros parâmetros que podem ser consultados na Documentação Completa do SysAid (Tópico 4.)
Exemplo de retorno:
[ {
"id": "1273",
"canUpdate": true, "canDelete": true, "canArchive": true, "hasChildren": false, "info": [
{
"key": "update_time", "value": 1646856953697,
"valueClass": "",
"keyCaption": "Data de modificação", "valueCaption": "09-03-2022 17:15:53"
}
]
},
{
"id": "1274",
"canUpdate": true, "canDelete": true, "canArchive": true, "hasChildren": false, "info": [
{
"key": "update_time", "value": 1646862779347,
"valueClass": "",
"keyCaption": "Data de modificação", "valueCaption": "09-03-2022 18:52:59"
} ]
Para uma consulta que considere os chamados arquivados, deve ser passado um parâmetro a mais no endpoint da requisição: "archive=1".
Portanto, caso o objetivo seja trazer toda a base de chamados (arquivados e não) o ideal é que seja executada a query da seguinte forma:
GET – {URL}/api/v1/sr?assigned_group={idgrupo}&archive=0,1
4.3 Consulta de chamado específico
Traz todas as informações de um chamado específico, possível aplicar parâmetros de busca e de retorno para customizar a consulta.
GET – {URL}/api/v1/sr/{ID DO CHAMADO}
4.4 Abertura de Chamados
Abre um chamado para o Service Desk. Todos os campos a serem inseridos no chamado devem ser passados no Body da requisição.
Consultar a Tabela DE/PARA (Tópico 3.) para informar o “type” e “template”
Algumas categorias podem possuir formulários customizados, sendo necessário utilizar templates específicos e informar campos customizados. Nestes casos deve-se acessar a FAQ do Service Desk e consultar a categoria específica no seguinte link:
https://servicedesk.openfinancebrasil.org.br/KBFAQTree.jsp
POST – {URL}/api/v1/sr?type={TIPO DE CHAMADO}&template={ID DO FORMULÁRIO}
Campos Obrigatórios:
“problem_type” = Categoria (São 3 níveis de categorização, devem ser separados utilizando “_”)
“title” = Título
“description” = Descrição
Exemplo de requisição:
POST – {URL}/api/v1/sr?type=1&template=20
Exemplo de Body:
{
"info": [{"key":"problem_type", "value":"Incidentes_Diretório_Erro"},
{"key":"title", "value":"Abertura de Chamado via API"},
{"key":"description", "value":"Teste de abertura de incidente através de API."}]
}4.5 Alteração no Chamado
Alterar um chamado, modificando as informações. Todos os campos a serem modificados no chamado devem ser passados no Body da requisição.
(Para consultar a lista com os IDs dos Status, visite a FAQ).
PUT - {URL}/api/v1/sr/{ID DO CHAMADO}
Exemplo de Body:
{
"id": "1275",
"info": [
{"key":"status", "value": "8"},
{"key":"notes", "value":
[{"userName":"João Teste","createDate":1647019229000,"text":"Teste Nota"}]}
]
}4.6 Recuperado Anexos
Para consultar os anexos dentro do chamado é necessário a utilização do campo "attachments" na chave "fields", de acordo com o exemplo a seguir:
GET - {URL}/api/v1/sr/{ID do CHAMADO}?fields=attachments
Body: Manter vazio
Exemplo de retorno:
"key": "attachments", "value": [
{
"fileId": "{ID do ANEXO}", "fileName": "nome_do_anexo.pdf", "realFileName": null, "chatSessionId": null,
"fileDate": "22-10-2021 09:35"
}
],Com o ID do anexo contido no campo "fileId" você vai poder utilizar a URL de Download para obter o arquivo.
URL de download:
{URL}/getFile?table=service_req&id={ID do CHAMADO}&getFile={ID do ANEXO}
4.7 Inserindo Atividades
Para utilizar o campo de atividades, deve ser feita a seguinte requisição:
POST – {URL}/api/v1/sr/{ID DO CHAMADO}/activity
Campos obrigatórios:
"id" = ID do chamado onde será adicionada a atividade "userId" = ID do usuário que está inserindo a atividade "fromTime" = Data e hora do início da atividade "toTime” = Data e hora do término da atividade "description” = Descrição da Atividade
Obs: A data e hora de início e término da atividade podem ser as mesmas, mas devem indicar o momento em que foi inserida a atividade.
Exemplo do Body:
{
"id": "2507",
"userId":123456, "fromTime":1652904309000, "toTime":1652904309000,
"description":"Adicionando Atividade via API"
}4.8 Consulta de chamados como solicitante
Além das consultas que podem ser feitas como Equipe de Atendimento dos chamados, para aqueles chamados que são abertos pelo seu usuário, tanto via API quanto via Portal do Usuário Final, também é possível fazer a consulta dos mesmos via API, para isso deve-se acrescentar um Header na requisição.
Header:
Key: Referer
Value: /servicePortalPortanto ambas as requisições dos tópicos 4.2 e 4.3 podem ser executadas adicionando este novo header para efetuar as consultas no papel de usuário solicitante. Lembrando que mesmo efetuando a consulta como solicitante é pré-requisito que o seu usuário seja N2 (Administrador) e tenha as permissões necessárias para o consumo da API.
Caso o usuário seja supervisor, também será possível obter os chamados abertos por outros membros da instituição utilizando um parâmetro adicional no endpoint:
Key: supervisedRequests
Value: YComo no exemplo a seguir:
GET - {URL}/v1/sr?status=1&fields=id,insert_time,status&supervisedRequests=Y
4.9 Adição de notas como solicitante
Seguindo o que foi instruído no item 4.8 além de fazer a consulta das informações, também é possível fazer a adição de notas ao chamado no papel de requisitante via API. Para isso é necessário a utilização do Header e executar o processo descrito no item 4.5 seguindo os parâmetros para a adição de notas contida na Tabela DE/PARA no item 3.0 deste documento:
Key: notes
Value: {“userName”:{NOME DO USUÁRIO},”createDate”:{DATA EM MILISEGUNDOS},”text”:{TEXTO}}
Requisição: PUT - {URL}/api/v1/sr/{ID DO CHAMADO}
Exemplo do Body:
{
"id": "1234",
"info": [
{"key":"notes", "value":
[{"userName":"João Teste","createDate":1647019229000,"text":"Teste Nota"}]}
]
}
É importante ressaltar que não devem ser alterados os demais campos do chamado incluindo o status, apenas a adição da nota deve ser executada e o chamado já terá o status alterado de forma automática pelo SysAid.
4.10 Adição de anexos
Para adicionar anexos a um chamado é necessário a utilização do body como “form-data” e a key como “file”, de acordo com o exemplo a seguir:
Key: file
Value: exemplo.txt
POST - {URL}/api/v1/sr/{ID do CHAMADO}/attachment
Importante: No value da requisição, é necessário informar o nome e a extensão do arquivo a ser adicionado.
4.11 Consulta de Chamados Supervisionados
Caso o usuário seja supervisor, também será possível obter os chamados abertos por outros membros da instituição utilizando um parâmetro adicional no endpoint.
Essa requisição retorna todos os chamados, ativos e encerrados com exceção dos chamados que já foram arquivados.
GET – {URL}/api/v1/sr/supervisor
Body: Manter vazio
Para refinar a busca é necessário incluir parâmetros na requisição.
Estes são alguns exemplos de keys comuns a serem utilizadas:
“problem_type” = Categoria: 1º nível_2º nível_3ºnível
“status” = Qual status que o chamado se encontra
“insert_time” = Abertura do chamado
“due_date” = SLA
Consultar a Tabela DE/PARA (Tópico 3.)
Exemplo de requisição:
GET – {URL}/api/v1/sr/supervisor?problem_type=Incidentes_APIs_Erros
Body: Manter vazio
O retorno virá com todas as informações referentes aos chamados que entrarem nos parâmetros estabelecidos. Para retornar campos específicos na reposta é necessário utilizar a key “fields" na requisição e selecionar os parâmetros de retorno.
Estes são alguns exemplos de keys comuns a serem utilizadas:
“id” = ID do chamado
“update_time” = Data e hora da última modificação
“solution” = Solução do chamado
“request_user” = Usuário Solicitante
Consultar a Tabela DE/PARA (Tópico 3.)
Exemplo de requisição:
GET – {URL}/api/v1/sr/supervisor?problem_type=Incidentes_APIs_Erros&fields=id,update_time
Aplicando os mesmos parâmetros da requisição anterior, os chamados exibidos serão os mesmos, porém agora apenas a informações indicadas em “fields” serão exibidas em cada chamado respectivamente.
Existem outros parâmetros que podem ser consultados na Documentação Completa do SysAid (Tópico 4.)
Exemplo de retorno:
[
{
"id": "1273",
"canUpdate": true,
"canDelete": true,
"canArchive": true,
"hasChildren": false,
"info": [
{
"key": "update_time",
"value": 1646856953697,
"valueClass": "",
"keyCaption": "Data de modificação",
"valueCaption": "09-03-2022 17:15:53"
}
]
},
{
"id": "1274",
"canUpdate": true,
"canDelete": true,
"canArchive": true,
"hasChildren": false,
"info": [
{
"key": "update_time",
"value": 1646862779347,
"valueClass": "",
"keyCaption": "Data de modificação",
"valueCaption": "09-03-2022 18:52:59"
}
]
Para uma consulta que considere os chamados arquivados, deve ser passado um parâmetro a mais no endpoint da requisição: "archive=1".
Portanto, caso o objetivo seja trazer toda a base de chamados (arquivados e não) o ideal é que seja executada a query da seguinte forma:
GET – {URL}/api/v1/sr/supervisor?archive=0,1
Em caso de dúvidas ou dificuldades na utilização da API entrar em contato com o Service Desk através do Portal: https://servicedesk.openfinancebrasil.org.br/