API REST v1

Documentação da API REST

Integre o DeskPrime a qualquer sistema. Autenticação via Bearer Token, respostas em JSON.

REST Bearer Token JSON Webhooks
Como usar esta documentação

Para obter seu token de API, crie uma conta no DeskPrime e acesse Configurações → API Tokens. Substitua SEU_TOKEN_AQUI pelo token gerado e https://suaempresa.deskprime.app pela URL da sua instância.

Autenticação

A API do DeskPrime utiliza autenticação via Bearer Token. Todas as requisições devem incluir o header Authorization com o token gerado no painel.

Como obter seu token
  1. Acesse seu painel DeskPrime em https://suaempresa.deskprime.app
  2. Vá em Configurações → API Tokens
  3. Clique em Gerar Token
  4. Escolha o nome e a permissão (Leitura ou Leitura e Escrita)
  5. Copie o token gerado — ele não será exibido novamente
Usando o token nas requisições

Inclua o header em todas as requisições:

Authorization: Bearer SEU_TOKEN_AQUI
Content-Type: application/json
curl -X GET https://suaempresa.deskprime.app/api/v1/tickets/ \
  -H "Authorization: Bearer SEU_TOKEN_AQUI" \
  -H "Content-Type: application/json"
import requests

headers = {
    "Authorization": "Bearer SEU_TOKEN_AQUI",
    "Content-Type": "application/json"
}

response = requests.get(
    "https://suaempresa.deskprime.app/api/v1/tickets/",
    headers=headers
)
print(response.json())
const axios = require('axios');

const api = axios.create({
  baseURL: 'https://suaempresa.deskprime.app',
  headers: { Authorization: 'Bearer SEU_TOKEN_AQUI' }
});

api.get('/api/v1/tickets/')
  .then(res => console.log(res.data));
using System.Net.Http;
using System.Net.Http.Headers;

using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", "SEU_TOKEN_AQUI");

var res = await client.GetAsync(
    "https://suaempresa.deskprime.app/api/v1/tickets/");
Console.WriteLine(await res.Content.ReadAsStringAsync());
Níveis de Permissão
PermissãoGETPOSTPUT/PATCHDELETE
Leitura
Leitura e Escrita
Segurança: Nunca exponha seu token em código público ou repositórios. Trate-o como uma senha. Tokens podem ser revogados a qualquer momento no painel.
Endpoints Disponíveis

Todos os endpoints são prefixados com https://suaempresa.deskprime.app/api/v1/

MétodoEndpointDescriçãoPermissão
GET/api/v1/Informações da API e usuário autenticadoLeitura
GET/api/v1/me/Dados do usuário autenticadoLeitura
GET/api/v1/tickets/Lista todos os tickets (com filtros)Leitura
POST/api/v1/tickets/Cria um novo ticketEscrita
GET/api/v1/tickets/{id}/Detalhes de um ticket específicoLeitura
PATCH/api/v1/tickets/{id}/Atualiza campos de um ticketEscrita
GET/api/v1/tickets/{id}/comentarios/Lista comentários de um ticketLeitura
POST/api/v1/tickets/{id}/comentarios/Adiciona comentário a um ticketEscrita
GET/api/v1/usuarios/Lista usuários da empresaLeitura
GET/api/v1/categorias/Lista categorias disponíveisLeitura
GET/api/v1/artigos/Lista artigos da base de conhecimentoLeitura
GET/api/v1/artigos/{id}/Detalhes de um artigoLeitura
Tickets
GET /api/v1/tickets/ — Listar Tickets

Retorna uma lista paginada de tickets. Suporta os seguintes filtros via query string:

ParâmetroTipoDescriçãoExemplo
statusstringFiltrar por statusaberto, em_andamento, resolvido, fechado
prioridadestringFiltrar por prioridadebaixa, media, alta, critica
categoria_idintegerFiltrar por categoria5
atribuido_a_idintegerFiltrar por agente responsável12
qstringBusca por título ou descriçãoservidor+fora
pageintegerPágina (padrão: 1)2
page_sizeintegerItens por página (padrão: 20, máx: 100)50
Ver exemplo de resposta
{
  "tickets": [
    {
      "id": 42,
      "numero": "SD-0042",
      "titulo": "Servidor fora do ar",
      "status": "aberto",
      "prioridade": "critica",
      "tipo": "incidente",
      "categoria": { "id": 3, "nome": "Infraestrutura" },
      "solicitante": { "id": 7, "nome": "João Silva", "email": "[email protected]" },
      "atribuido_a": null,
      "equipe": { "id": 2, "nome": "Infraestrutura" },
      "criado_em": "2026-03-13T10:30:00Z",
      "atualizado_em": "2026-03-13T10:30:00Z",
      "prazo": "2026-03-13T12:30:00Z",
      "resolvido_em": null,
      "sla": { "primeira_resposta_em": null },
      "avaliacao": null
    }
  ],
  "total": 1,
  "pagina": 1,
  "total_paginas": 1
}

POST /api/v1/tickets/ — Criar Ticket

Cria um novo ticket. Requer permissão de Escrita.

Campos do Body (JSON)
CampoTipoObrigatórioDescrição
titulostring✅ SimTítulo do ticket (máx. 255 caracteres)
descricaostring✅ SimDescrição detalhada do problema
prioridadestringNãobaixa, media (padrão), alta, critica
tipostringNãoincidente (padrão), requisicao, problema, mudanca
categoria_idintegerNãoID da categoria (use GET /api/v1/categorias/)
email_solicitantestringNãoE-mail do solicitante (cria usuário se não existir)
nome_solicitantestringNãoNome do solicitante (usado ao criar novo usuário)
empresa_cliente_idintegerNãoID da empresa cliente
empresa_tokenstringNãoToken de integração da empresa cliente. Identifica a empresa e atribui o ticket ao usuário de sistema automaticamente. Recomendado para integrações com RMM.
Exemplo de requisição
curl -X POST https://suaempresa.deskprime.app/api/v1/tickets/ \
  -H "Authorization: Bearer SEU_TOKEN_AQUI" \
  -H "Content-Type: application/json" \
  -d '{
    "titulo": "Servidor fora do ar",
    "descricao": "O servidor principal está inacessível.",
    "prioridade": "critica",
    "categoria_id": 3,
    "solicitante_email": "[email protected]"
  }'
import requests

headers = {
    "Authorization": "Bearer SEU_TOKEN_AQUI",
    "Content-Type": "application/json"
}

payload = {
    "titulo": "Servidor fora do ar",
    "descricao": "O servidor principal está inacessível.",
    "prioridade": "critica",
    "categoria_id": 3,
    "solicitante_email": "[email protected]"
}

response = requests.post(
    "https://suaempresa.deskprime.app/api/v1/tickets/",
    json=payload, headers=headers
)
print(response.json())
const axios = require('axios');

axios.post(
  'https://suaempresa.deskprime.app/api/v1/tickets/',
  {
    titulo: 'Servidor fora do ar',
    descricao: 'O servidor principal está inacessível.',
    prioridade: 'critica',
    categoria_id: 3,
    solicitante_email: '[email protected]'
  },
  { headers: { Authorization: 'Bearer SEU_TOKEN_AQUI' } }
).then(res => console.log(res.data));
 'Servidor fora do ar',
    'descricao' => 'O servidor principal está inacessível.',
    'prioridade' => 'critica',
    'categoria_id' => 3,
    'solicitante_email' => '[email protected]'
]);

$ch = curl_init('https://suaempresa.deskprime.app/api/v1/tickets/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer SEU_TOKEN_AQUI',
    'Content-Type: application/json'
]);
$ticket = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($ticket);
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;

using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", "SEU_TOKEN_AQUI");

var payload = new {
    titulo = "Servidor fora do ar",
    descricao = "O servidor principal está inacessível.",
    prioridade = "critica",
    categoria_id = 3,
    solicitante_email = "[email protected]"
};
var json2 = JsonSerializer.Serialize(payload);
var body = new StringContent(json2, Encoding.UTF8, "application/json");

var res = await client.PostAsync(
    "https://suaempresa.deskprime.app/api/v1/tickets/", body);
Console.WriteLine(await res.Content.ReadAsStringAsync());
Resposta de sucesso (HTTP 201)
{
  "id": 42,
  "numero": "SD-0042",
  "titulo": "Servidor fora do ar",
  "status": "aberto",
  "prioridade": "critica",
  "criado_em": "2026-03-13T10:30:00Z"
}
Comentários
POST /api/v1/tickets/{id}/comentarios/ — Adicionar Comentário

Adiciona um comentário a um ticket existente.

CampoTipoObrigatórioDescrição
textostring✅ SimConteúdo do comentário
internobooleanNãoSe true, comentário interno (não visível ao cliente). Padrão: false
curl -X POST https://suaempresa.deskprime.app/api/v1/tickets/42/comentarios/ \
  -H "Authorization: Bearer SEU_TOKEN_AQUI" \
  -H "Content-Type: application/json" \
  -d '{"texto": "Iniciando investigação do servidor.", "interno": false}'
import requests

headers = {
    "Authorization": "Bearer SEU_TOKEN_AQUI",
    "Content-Type": "application/json"
}

payload = {
    "texto": "Iniciando investigação do servidor.",
    "interno": False  # True = nota interna
}

response = requests.post(
    "https://suaempresa.deskprime.app/api/v1/tickets/42/comentarios/",
    json=payload, headers=headers
)
print(response.json())
const axios = require('axios');

axios.post(
  'https://suaempresa.deskprime.app/api/v1/tickets/42/comentarios/',
  { texto: 'Iniciando investigação do servidor.', interno: false },
  { headers: { Authorization: 'Bearer SEU_TOKEN_AQUI' } }
).then(res => console.log(res.data));
 'Iniciando investigação do servidor.',
    'interno' => false
]);

$ch = curl_init('https://suaempresa.deskprime.app/api/v1/tickets/42/comentarios/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer SEU_TOKEN_AQUI',
    'Content-Type: application/json'
]);
$res = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($res);
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;

using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", "SEU_TOKEN_AQUI");

var payload = new { texto = "Iniciando investigação do servidor.", interno = false };
var body = new StringContent(JsonSerializer.Serialize(payload), Encoding.UTF8, "application/json");

var res = await client.PostAsync(
    "https://suaempresa.deskprime.app/api/v1/tickets/42/comentarios/", body);
Console.WriteLine(await res.Content.ReadAsStringAsync());
Categorias
GET /api/v1/categorias/ — Listar Categorias

Retorna todas as categorias disponíveis para uso ao criar tickets.

curl -X GET https://suaempresa.deskprime.app/api/v1/categorias/ \
  -H "Authorization: Bearer SEU_TOKEN_AQUI"
import requests

headers = {"Authorization": "Bearer SEU_TOKEN_AQUI"}
response = requests.get(
    "https://suaempresa.deskprime.app/api/v1/categorias/",
    headers=headers
)
for cat in response.json()["categorias"]:
    print(f"{cat['id']} - {cat['nome']}")
const axios = require('axios');

axios.get(
  'https://suaempresa.deskprime.app/api/v1/categorias/',
  { headers: { Authorization: 'Bearer SEU_TOKEN_AQUI' } }
).then(res => console.log(res.data.categorias));
using System.Net.Http;
using System.Net.Http.Headers;

using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", "SEU_TOKEN_AQUI");

var res = await client.GetAsync(
    "https://suaempresa.deskprime.app/api/v1/categorias/");
Console.WriteLine(await res.Content.ReadAsStringAsync());
Ver exemplo de resposta
{
  "categorias": [
    { "id": 1, "nome": "Suporte Geral", "descricao": "" },
    { "id": 2, "nome": "Infraestrutura", "descricao": "Servidores e redes" },
    { "id": 3, "nome": "Software", "descricao": "Instalações e configurações" }
  ]
}
Usuários
GET /api/v1/usuarios/ — Listar Usuários

Retorna os usuários (agentes e admins) da empresa.

curl -X GET https://suaempresa.deskprime.app/api/v1/usuarios/ \
  -H "Authorization: Bearer SEU_TOKEN_AQUI"
import requests

headers = {"Authorization": "Bearer SEU_TOKEN_AQUI"}
response = requests.get(
    "https://suaempresa.deskprime.app/api/v1/usuarios/",
    headers=headers
)
for user in response.json()["usuarios"]:
    print(f"{user['id']} - {user['nome']} ({user['email']})")
const axios = require('axios');

axios.get(
  'https://suaempresa.deskprime.app/api/v1/usuarios/',
  { headers: { Authorization: 'Bearer SEU_TOKEN_AQUI' } }
).then(res => console.log(res.data.usuarios));
using System.Net.Http;
using System.Net.Http.Headers;

using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", "SEU_TOKEN_AQUI");

var res = await client.GetAsync(
    "https://suaempresa.deskprime.app/api/v1/usuarios/");
Console.WriteLine(await res.Content.ReadAsStringAsync());
GET /api/v1/me/ — Usuário Autenticado

Retorna os dados do usuário dono do token utilizado.

curl -X GET https://suaempresa.deskprime.app/api/v1/me/   -H "Authorization: Bearer SEU_TOKEN_AQUI"
Webhooks (Integração de Entrada)

Além da API REST, o DeskPrime aceita criação de tickets via HTTP POST direto no endpoint de tickets. Isso permite que qualquer sistema externo crie tickets automaticamente ao disparar um evento.

Endpoint de Webhook
POST https://suaempresa.deskprime.app/api/v1/tickets/
Authorization: Bearer SEU_TOKEN_AQUI
Content-Type: application/json
Payload Mínimo
{
  "titulo": "Alerta: CPU acima de 90% no servidor-01",
  "descricao": "CPU atingiu 95% às 14:32. Servidor: servidor-01.",
  "prioridade": "alta"
}
Payload Completo
{
  "titulo": "Alerta: CPU acima de 90% no servidor-01",
  "descricao": "CPU atingiu 95% às 14:32. Servidor: servidor-01.",
  "prioridade": "alta",
  "tipo": "incidente",
  "categoria_id": 2,
  "email_solicitante": "[email protected]",
  "nome_solicitante": "Sistema de Monitoramento"
}
Dica: Use tokens com permissão de Escrita para webhooks que criam tickets. Tokens de Leitura retornarão erro 403.
Códigos de Erro
Código HTTPSignificadoCausa comum
200 / 201SucessoRequisição processada com sucesso
400Bad RequestCampos obrigatórios ausentes ou inválidos
401UnauthorizedToken ausente, inválido ou expirado
403ForbiddenToken sem permissão de escrita
404Not FoundRecurso não encontrado (ticket, categoria, etc.)
500Server ErrorErro interno — entre em contato com o suporte
Formato de Resposta de Erro
{
  "erro": "Dados inválidos.",
  "detalhes": {
    "titulo": "Campo obrigatório.",
    "descricao": "Campo obrigatório."
  }
}
<-- Buscar em todos os CHANGELOG -->

▶ Playground

Teste a API diretamente nesta página. Cole seu token e a URL da sua instância para fazer chamadas reais sem sair da documentação.

API Playground LIVE

As requisições são feitas diretamente do seu navegador para a sua instância do DeskPrime.

📋 Changelog da API

Histórico de versões e alterações da API REST do DeskPrime.

v1.4.0 Março 2026 Major
  • Novo: Endpoint /api/v1/tickets/{id}/comentarios/ para comentários e notas internas via API
  • Novo: Parâmetro interno (boolean) para notas internas
  • Novo: Filtro solicitante_email na listagem de tickets
  • Novo: Endpoint /api/v1/usuarios/me/ para consultar o usuário autenticado
  • Melhoria: Respostas de erro incluem campo detail em português
v1.3.0 Janeiro 2026 Minor
  • Novo: Webhook de entrada via POST /api/v1/webhook/entrada/
  • Novo: Campo tags (array) ao criar e listar tickets
  • Melhoria: Paginação com count, next e previous
  • Melhoria: Novos filtros: data_inicio, data_fim, agente_id
v1.2.0 Novembro 2025 Minor
  • Novo: Endpoint /api/v1/categorias/
  • Novo: Endpoint /api/v1/usuarios/
  • Melhoria: Tokens exibem data de criação e último uso
  • Correção: Tickets via API disparam regras de SLA corretamente
v1.1.1 Setembro 2025 Patch
  • Correção: Campo prioridade aceita valores em minúsculas
  • Correção: Erro 500 ao criar ticket sem categoria_id agora retorna 400
  • Correção: Headers CORS ajustados para origens externas
v1.0.0 Junho 2025 Lançamento
  • Lançamento: API REST pública para todos os planos pagos
  • Inicial: Endpoints GET e POST /api/v1/tickets/
  • Inicial: Autenticação via token Bearer
Manuais de Integração
Guias passo a passo para conectar sistemas externos ao DeskPrime via API

Os manuais abaixo descrevem como configurar cada sistema para enviar dados ao DeskPrime automaticamente. Todos utilizam a API REST com autenticação via Bearer Token.

RMM
Tactical RMM

O Tactical RMM suporta webhooks nativos que podem ser configurados para criar tickets no DeskPrime automaticamente quando alertas são disparados.

Passo 1 — Obter o Token de API

No DeskPrime, acesse Configurações > API Tokens, clique em Novo Token, nomeie como Tactical RMM e salve. Copie o token gerado.

Passo 2 — Criar o Campo Customizado no Tactical RMM

Para que o DeskPrime identifique automaticamente a empresa cliente e atribua o ticket ao usuário de sistema correto, é necessário criar um campo customizado no Tactical RMM:

  1. Acesse Settings > Global Settings > Custom Fields
  2. Clique em Add Custom Field
  3. Preencha os campos conforme abaixo e clique em Submit:
CampoValor
TargetClient
NameTokenEmpresa
Field TypeText

Após criar o campo, acesse cada cliente no Tactical RMM, clique em Edit e cole o Token de Integração da empresa correspondente no campo TokenEmpresa. O token de cada empresa está disponível na página de detalhes da empresa no DeskPrime (card Token de Integração (API)).

Passo 3 — Configurar o Webhook no Tactical RMM
  1. Acesse Settings > Global Settings > Web Hooks
  2. Clique em Add Web Hook
  3. Preencha os campos:
CampoValor
NameDeskPrime API
URL Pattern/api/v1/tickets/
MethodPOST
Passo 4 — Configurar o Header de Autenticação

Na aba Request Headers do webhook, adicione:

Authorization: Bearer SEU_TOKEN_AQUI
Content-Type: application/json
Passo 5 — Configurar o Body (Payload)

Na aba Request Body, insira o JSON abaixo. O campo empresa_token usa o campo customizado criado no Passo 2 para identificar automaticamente a empresa cliente:

{
  "titulo": "[RMM] {{agent.site.client.name}} - {{agent.hostname}}: {{alert.message}}",
  "descricao": "Alerta automático gerado pelo Tactical RMM.\n\n- **Cliente**: {{agent.site.client.name}}\n- **Site**: {{agent.site.name}}\n- **Agente**: {{agent.hostname}}\n- **Tipo de Alerta**: {{alert.alert_type}}\n- **Severidade**: {{alert.severity}}\n- **Mensagem**: {{alert.message}}\n- **Saída do Check**: {{alert.get_result.stdout}}",
  "empresa_token": "{{client.TokenEmpresa}}"
}
Atenção: O placeholder {{client.TokenEmpresa}} acessa o campo customizado do tipo Client diretamente. Certifique-se de que o campo foi criado com o nome exato TokenEmpresa (sem espaços, respeitando maiúsculas e minúsculas).
Variáveis Disponíveis
VariávelDescrição
{{agent.site.client.name}}Nome do cliente
{{agent.site.name}}Nome do site/localização
{{agent.hostname}}Nome do host do agente
{{agent.last_seen}}Último acesso do agente
{{alert.severity}}Severidade do alerta (info, warning, error)
{{alert.message}}Mensagem do alerta
{{alert.alert_type}}Tipo do alerta (availability, check, task)
{{alert.get_result.stdout}}Saída do check que gerou o alerta
{{client.TokenEmpresa}}Token de integração da empresa (campo customizado)
Passo 6 — Vincular o Webhook a um Alert Template
  1. Acesse Alerts > Alert Templates
  2. Crie ou edite um template de alerta
  3. Em Failure Action, selecione Run Webhook e escolha DeskPrime API
  4. Salve o template e vincule-o a agentes, sites ou clientes
Como funciona: Quando um alerta é disparado, o Tactical RMM envia o token da empresa no campo empresa_token. O DeskPrime identifica a empresa, cria o ticket automaticamente e o atribui ao usuário de sistema correspondente, mantendo o histórico organizado por cliente.
RMM
Datto RMM

O Datto RMM permite integração via API REST v2 e Webhooks de Alertas. A abordagem recomendada é usar os webhooks de alertas para criar tickets automaticamente.

Passo 1 — Acessar as Configurações de Webhook
  1. Acesse o painel do Datto RMM em https://<seu_subdominio>.centrastage.net
  2. Navegue até Setup > Integrations > Webhooks
  3. Clique em New Webhook
Passo 2 — Configurar o Webhook
CampoValor
NameDeskPrime Tickets
URL/api/v1/tickets/
MethodPOST
Content-Typeapplication/json
Payload de Exemplo
{
  "titulo": "Datto RMM: {{alertMessage}} — {{deviceHostname}}",
  "descricao": "Dispositivo: {{deviceHostname}}\nCliente: {{accountName}}\nSite: \nAlerta: {{alertMessage}}\nCategoria: {{alertCategory}}\nData: {{alertTimestamp}}",
  "prioridade": "alta",
  "empresa_token": "TOKEN_DA_EMPRESA_AQUI"
}
Substitua TOKEN_DA_EMPRESA_AQUI pelo token de integração da empresa cliente correspondente, disponível na página de detalhes da empresa no DeskPrime.
Variáveis Disponíveis
VariávelDescrição
{{alertMessage}}Mensagem do alerta
{{alertCategory}}Categoria do alerta
{{alertTimestamp}}Data/hora do alerta
{{deviceHostname}}Nome do dispositivo
{{accountName}}Nome da conta/cliente
Nome do site
{{deviceType}}Tipo do dispositivo
{{deviceOS}}Sistema operacional
RMM
NinjaRMM (NinjaOne)

O NinjaRMM suporta webhooks de notificação que podem ser configurados para criar tickets no DeskPrime quando condições de alerta são atendidas.

Passo 1 — Configurar Webhook no NinjaRMM
  1. Acesse Administration > Notifications > Channels
  2. Clique em Add Channel
  3. Selecione Webhook
  4. Preencha os campos:
CampoValor
NameDeskPrime
URL/api/v1/tickets/
Authorization HeaderBearer SEU_TOKEN_AQUI
Payload Recomendado
{
  "titulo": "NinjaRMM: {{activityType}} — {{deviceName}}",
  "descricao": "Dispositivo: {{deviceName}}\nCliente: {{organizationName}}\nLocalização: {{locationName}}\nAtividade: {{activityType}}\nMensagem: {{message}}\nData: {{timestamp}}",
  "prioridade": "alta",
  "empresa_token": "TOKEN_DA_EMPRESA_AQUI"
}
Substitua TOKEN_DA_EMPRESA_AQUI pelo token de integração da empresa cliente correspondente, disponível na página de detalhes da empresa no DeskPrime.
Passo 2 — Vincular a uma Política de Notificação
  1. Acesse Administration > Notifications > Policies
  2. Crie ou edite uma política
  3. Em Channels, adicione o canal DeskPrime
  4. Configure os eventos que devem disparar a notificação
  5. Aplique a política a dispositivos ou organizações
MONITORAMENTO
Zabbix

O Zabbix suporta integração via Media Type Webhook, que executa um script JavaScript para enviar alertas ao DeskPrime.

Passo 1 — Criar o Media Type Webhook
  1. Acesse Administration > Media Types
  2. Clique em Create media type
  3. Configure:
CampoValor
NameDeskPrime
TypeWebhook
Parâmetros do Media Type
NomeValor
deskprime_url/api/v1/tickets/
deskprime_tokenSEU_TOKEN_AQUI
empresa_tokenToken de integração da empresa cliente (obtido no DeskPrime)
trigger_name{TRIGGER.NAME}
trigger_severity{TRIGGER.SEVERITY}
trigger_status{TRIGGER.STATUS}
host_name{HOST.NAME}
host_ip{HOST.IP}
event_id{EVENT.ID}
event_date{EVENT.DATE}
event_time{EVENT.TIME}
Script JavaScript
var params = JSON.parse(value);

// Mapear severidade para prioridade do DeskPrime
var prioridadeMap = {
    'Disaster': 'critica',
    'High': 'alta',
    'Average': 'media',
    'Warning': 'baixa',
    'Information': 'baixa',
    'Not classified': 'baixa'
};

var prioridade = prioridadeMap[params.trigger_severity] || 'media';

var payload = {
    titulo: 'Zabbix: ' + params.trigger_name + ' — ' + params.host_name,
    descricao: [
        'Host: ' + params.host_name,
        'IP: ' + params.host_ip,
        'Severidade: ' + params.trigger_severity,
        'Status: ' + params.trigger_status,
        'Evento ID: ' + params.event_id,
        'Data/Hora: ' + params.event_date + ' ' + params.event_time
    ].join('\n'),
    prioridade: prioridade,
    empresa_token: params.empresa_token
};

var request = new HttpRequest();
request.addHeader('Content-Type: application/json');
request.addHeader('Authorization: Bearer ' + params.deskprime_token);

var response = request.post(params.deskprime_url, JSON.stringify(payload));

if (request.getStatus() != 201) {
    throw 'Erro ao criar ticket: ' + response;
}

return JSON.parse(response).id;
Passo 2 — Configurar Usuário de Notificação
  1. Acesse Administration > Users
  2. Crie um usuário DeskPrime Notifications
  3. Em Media, adicione o Media Type DeskPrime
  4. Configure os níveis de severidade desejados
Passo 3 — Configurar Action
  1. Acesse Configuration > Actions > Trigger Actions
  2. Clique em Create action
  3. Em Operations, adicione Send message to users
  4. Selecione o usuário DeskPrime Notifications
  5. Selecione o Media Type DeskPrime
MONITORAMENTO
Datadog

O Datadog suporta webhooks nativos que podem ser configurados para criar tickets no DeskPrime quando alertas (Monitors) são disparados.

Passo 1 — Criar a Integração de Webhook
  1. Acesse Integrations > Integrations no Datadog
  2. Pesquise por Webhooks e clique em Install
  3. Na aba Configuration, clique em New
  4. Preencha:
CampoValor
Namedeskprime
URL/api/v1/tickets/
Headers Customizados
{"Authorization": "Bearer SEU_TOKEN_AQUI", "Content-Type": "application/json"}
Payload
{
  "titulo": "Datadog: $EVENT_TITLE",
  "descricao": "Monitor: $ALERT_TITLE\nStatus: $ALERT_STATUS\nHost: $HOSTNAME\nMétrica: $METRIC_NAMESPACE\nLink: $LINK\nMensagem: $TEXT_ONLY_MSG",
  "prioridade": "alta",
  "empresa_token": "TOKEN_DA_EMPRESA_AQUI"
}
Substitua TOKEN_DA_EMPRESA_AQUI pelo token de integração da empresa cliente correspondente, disponível na página de detalhes da empresa no DeskPrime.
Variáveis Disponíveis
VariávelDescrição
$EVENT_TITLETítulo do evento
$ALERT_TITLETítulo do monitor de alerta
$ALERT_STATUSStatus: Triggered, Recovered, etc.
$HOSTNAMENome do host afetado
$METRIC_NAMESPACENamespace da métrica
$LINKLink para o evento no Datadog
$TEXT_ONLY_MSGMensagem do alerta sem formatação
$PRIORITYPrioridade: normal ou low
Passo 2 — Vincular ao Monitor

Na mensagem do Monitor, adicione @webhook-deskprime para que o webhook seja ticket quando o alerta disparar.

MONITORAMENTO
New Relic

O New Relic permite integração via Notification Channels com suporte a webhooks personalizados.

Passo 1 — Criar Destination
  1. Acesse Alerts > Destinations
  2. Clique em Add destination
  3. Selecione Webhook
  4. Configure:
CampoValor
NameDeskPrime
Endpoint URL/api/v1/tickets/

Em Custom Headers, adicione: Authorization: Bearer SEU_TOKEN_AQUI

Passo 2 — Criar Channel
  1. Acesse Alerts > Channels
  2. Clique em Add channel
  3. Selecione Webhook e escolha o Destination DeskPrime
  4. Configure o template do payload:
{
  "titulo": "New Relic: {{issueTitle}}",
  "descricao": "Política: {{policyName}}\nCondição: {{conditionName}}\nEntidade: {{entitiesData.names}}\nPrioridade: {{priority}}\nLink: {{issuePageUrl}}",
  "prioridade": "alta",
  "empresa_token": "TOKEN_DA_EMPRESA_AQUI"
}
Substitua TOKEN_DA_EMPRESA_AQUI pelo token de integração da empresa cliente correspondente, disponível na página de detalhes da empresa no DeskPrime.
Passo 3 — Vincular ao Workflow
  1. Acesse Alerts > Workflows
  2. Crie ou edite um workflow
  3. Em Notify, adicione o canal DeskPrime
  4. Configure os filtros de alerta desejados
CRM
Salesforce

A integração com o Salesforce permite criar tickets no DeskPrime automaticamente quando casos (Cases) são criados ou atualizados no Salesforce, usando Flow ou Apex Callout.

Método 1 — Salesforce Flow (Sem Código)
  1. Acesse Setup > Flow Builder
  2. Crie um novo Flow do tipo Record-Triggered Flow
  3. Configure o trigger: Object: Case, Trigger: A record is created
  4. Adicione um elemento HTTP Callout
  5. Configure:
CampoValor
URL/api/v1/tickets/
MethodPOST
Header: AuthorizationBearer SEU_TOKEN_AQUI
Header: Content-Typeapplication/json
Payload para o Flow
{
  "titulo": "Salesforce Case #{!$Record.CaseNumber}: {!$Record.Subject}",
  "descricao": "Caso: {!$Record.CaseNumber}\nCliente: {!$Record.Account.Name}\nContato: {!$Record.Contact.Name}\nPrioridade: {!$Record.Priority}\nDescrição: {!$Record.Description}",
  "prioridade": "media",
  "categoria": "Suporte"
}
Método 2 — Apex Callout
@future(callout=true)
public static void criarTicketDeskPrime(Id caseId) {
    Case c = [SELECT Id, CaseNumber, Subject, Description, Priority,
                     Account.Name, Contact.Name
              FROM Case WHERE Id = :caseId LIMIT 1];

    String payload = JSON.serialize(new Map<String, Object>{
        'titulo' => 'Salesforce Case #' + c.CaseNumber + ': ' + c.Subject,
        'descricao' => 'Caso: ' + c.CaseNumber + '\nCliente: ' + c.Account.Name + '\nDescrição: ' + c.Description,
        'prioridade' => 'media',
        'categoria' => 'Suporte'
    });

    Http http = new Http();
    HttpRequest req = new HttpRequest();
    req.setEndpoint('/api/v1/tickets/');
    req.setMethod('POST');
    req.setHeader('Authorization', 'Bearer SEU_TOKEN_AQUI');
    req.setHeader('Content-Type', 'application/json');
    req.setBody(payload);

    HttpResponse res = http.send(req);
    System.debug('DeskPrime response: ' + res.getStatusCode() + ' ' + res.getBody());
}
CRM
HubSpot

O HubSpot suporta webhooks via Workflows e Private Apps, permitindo criar tickets no DeskPrime quando eventos ocorrem no CRM.

Método 1 — HubSpot Workflow com Webhook
  1. Acesse Automation > Workflows
  2. Clique em Create workflow
  3. Selecione o tipo de objeto (ex: Contacts ou Tickets)
  4. Configure o trigger (ex: Contact submits a form)
  5. Adicione a ação Send a webhook
  6. Configure:
CampoValor
MethodPOST
Webhook URL/api/v1/tickets/
Authentication typeAPI key in header
Header nameAuthorization
API keyBearer SEU_TOKEN_AQUI
Payload Recomendado
{
  "titulo": "HubSpot: {{contact.firstname}} {{contact.lastname}} — {{contact.subject}}",
  "descricao": "Contato: {{contact.firstname}} {{contact.lastname}}\nE-mail: {{contact.email}}\nEmpresa: {{contact.company}}\nMensagem: {{contact.message}}",
  "prioridade": "media",
  "categoria": "Suporte"
}
Método 2 — HubSpot Private App (API)

Para integrações mais avançadas, use uma Private App do HubSpot para escutar eventos e criar tickets via API do DeskPrime:

import requests

def criar_ticket_deskprime(hubspot_contact):
    response = requests.post(
        '/api/v1/tickets/',
        json={
            'titulo': f"HubSpot: {hubspot_contact['firstname']} {hubspot_contact['lastname']}",
            'descricao': f"E-mail: {hubspot_contact['email']}\nEmpresa: {hubspot_contact.get('company', 'N/A')}",
            'prioridade': 'media',
            'categoria': 'Suporte'
        },
        headers={
            'Authorization': 'Bearer SEU_TOKEN_AQUI',
            'Content-Type': 'application/json'
        }
    )
    return response.json()
CRM
Zoho CRM

O Zoho CRM permite criar tickets no DeskPrime via Workflow Rules com ações de webhook.

Passo 1 — Criar Webhook no Zoho CRM
  1. Acesse Setup > Automation > Workflow Rules
  2. Clique em Create Rule
  3. Selecione o módulo (ex: Leads ou Cases)
  4. Configure o trigger e as condições
  5. Em Actions, adicione Webhook
Configuração do Webhook
CampoValor
URL/api/v1/tickets/
MethodPOST
User AuthenticationCustom Headers
Header: AuthorizationBearer SEU_TOKEN_AQUI
Header: Content-Typeapplication/json
Payload com Merge Fields
{
  "titulo": "Zoho CRM: ${leads.First Name} ${leads.Last Name}",
  "descricao": "Lead: ${leads.First Name} ${leads.Last Name}\nE-mail: ${leads.Email}\nEmpresa: ${leads.Company}\nTelefone: ${leads.Phone}\nFonte: ${leads.Lead Source}",
  "prioridade": "media",
  "categoria": "Comercial"
}
DEV
Jira

O Jira suporta webhooks nativos que podem ser configurados para criar tickets no DeskPrime quando issues são criadas ou atualizadas.

Passo 1 — Criar Webhook no Jira
  1. Acesse Settings > System > WebHooks (Jira Server) ou Project Settings > Automation (Jira Cloud)
  2. Clique em Create a WebHook
  3. Configure:
CampoValor
NameDeskPrime
URL/api/v1/tickets/
EventsIssue Created
Método Recomendado — Jira Automation

Para Jira Cloud, use Automation para mais controle:

  1. Acesse Project Settings > Automation
  2. Clique em Create rule
  3. Trigger: Issue created
  4. Action: Send web request
  5. Configure:
CampoValor
Web request URL/api/v1/tickets/
HTTP methodPOST
Web request bodyCustom data
{
  "titulo": "Jira: [{{issue.key}}] {{issue.summary}}",
  "descricao": "Projeto: {{issue.project.name}}\nTipo: {{issue.type.name}}\nPrioridade: {{issue.priority.name}}\nReporter: {{issue.reporter.displayName}}\nDescrição: {{issue.description.plainText}}\nLink: {{issue.url}}",
  "prioridade": "media",
  "categoria": "Desenvolvimento"
}
DEV
GitHub

O GitHub suporta webhooks de repositório que podem criar tickets no DeskPrime quando issues são abertas ou quando workflows de CI/CD falham.

Passo 1 — Criar Webhook no Repositório
  1. Acesse o repositório no GitHub
  2. Vá em Settings > Webhooks > Add webhook
  3. Configure:
CampoValor
Payload URL/api/v1/tickets/
Content typeapplication/json
EventsIssues, Workflow runs
Atenção: O GitHub envia um payload fixo que não pode ser customizado. É necessário usar um intermediário (como Pipedream, Make ou uma Cloud Function) para transformar o payload antes de enviar ao DeskPrime.
Exemplo com Pipedream como Intermediário

Configure o Pipedream para receber o webhook do GitHub e transformar o payload:

// Pipedream Step — Transformar payload do GitHub para DeskPrime
import axios from 'axios';

export default defineComponent({
  async run({ steps, $ }) {
    const github = steps.trigger.event.body;

    // Verificar se é uma issue criada
    if (github.action !== 'opened') return;

    const issue = github.issue;
    const repo = github.repository;

    await axios.post('/api/v1/tickets/', {
      titulo: `GitHub: [${repo.name}] ${issue.title}`,
      descricao: [
        `Repositório: ${repo.full_name}`,
        `Issue #${issue.number}`,
        `Autor: ${issue.user.login}`,
        `Labels: ${issue.labels.map(l => l.name).join(', ') || 'Nenhuma'}`,
        `Link: ${issue.html_url}`,
        '',
        issue.body || 'Sem descrição'
      ].join('\n'),
      prioridade: 'media',
      categoria: 'Desenvolvimento'
    }, {
      headers: {
        'Authorization': `Bearer ${process.env.DESKPRIME_TOKEN}`,
        'Content-Type': 'application/json'
      }
    });
  }
});
DEV
GitLab

O GitLab suporta webhooks de projeto e de grupo, com payload customizável e suporte a múltiplos eventos.

Passo 1 — Criar Webhook no GitLab
  1. Acesse o projeto no GitLab
  2. Vá em Settings > Webhooks
  3. Configure:
CampoValor
URL/api/v1/tickets/
Secret tokenOpcional — para validação
TriggerIssues events, Pipeline events
Assim como o GitHub, o GitLab envia um payload fixo. Use um intermediário para transformar os dados.
Exemplo de Transformação (Python)
from flask import Flask, request
import requests

app = Flask(__name__)
DESKPRIME_TOKEN = 'SEU_TOKEN_AQUI'

@app.route('/gitlab-webhook', methods=['POST'])
def gitlab_webhook():
    data = request.json
    event = request.headers.get('X-Gitlab-Event')

    if event == 'Issue Hook' and data.get('object_attributes', {}).get('action') == 'open':
        issue = data['object_attributes']
        project = data['project']

        requests.post(
            '/api/v1/tickets/',
            json={
                'titulo': f"GitLab: [{project['name']}] {issue['title']}",
                'descricao': f"Projeto: {project['name']}\nIssue #{issue['iid']}\nAutor: {data['user']['name']}\nLink: {issue['url']}\n\n{issue.get('description', '')}",
                'prioridade': 'media',
                'categoria': 'Desenvolvimento'
            },
            headers={'Authorization': f'Bearer {DESKPRIME_TOKEN}', 'Content-Type': 'application/json'}
        )

    return '', 200
COMUNICAÇÃO
Slack

A integração com o Slack permite criar tickets no DeskPrime a partir de mensagens em canais específicos, usando um Slash Command ou Workflow Builder.

Método 1 — Slash Command

Permite que usuários criem tickets digitando /ticket Descrição do problema no Slack.

  1. Acesse api.slack.com/apps e crie um novo App
  2. Vá em Slash Commands > Create New Command
  3. Configure:
CampoValor
Command/ticket
Request URLURL de um intermediário (Pipedream, Make, etc.)
Short DescriptionCriar ticket no DeskPrime
Intermediário para Processar o Slash Command
// Pipedream — Processar Slack Slash Command
import axios from 'axios';

export default defineComponent({
  async run({ steps, $ }) {
    const body = steps.trigger.event.body;

    // Responder imediatamente ao Slack (evitar timeout)
    await $.respond({ status: 200, body: { text: '⏳ Criando ticket...' } });

    // Criar ticket no DeskPrime
    const response = await axios.post('/api/v1/tickets/', {
      titulo: `Slack: ${body.text}`,
      descricao: `Criado por: ${body.user_name}\nCanal: #${body.channel_name}\nDescrição: ${body.text}`,
      prioridade: 'media',
      categoria: 'Suporte'
    }, {
      headers: {
        'Authorization': `Bearer ${process.env.DESKPRIME_TOKEN}`,
        'Content-Type': 'application/json'
      }
    });

    // Notificar no Slack via response_url
    await axios.post(body.response_url, {
      text: `✅ Ticket #${response.data.id} criado com sucesso!`,
      response_type: 'in_channel'
    });
  }
});
Método 2 — Workflow Builder
  1. No Slack, acesse Tools > Workflow Builder
  2. Crie um novo Workflow com trigger Emoji reaction added (ex: reação 🎫)
  3. Adicione o step Send a webhook
  4. Configure a URL: /api/v1/tickets/
COMUNICAÇÃO
Microsoft Teams

A integração com o Microsoft Teams permite criar tickets no DeskPrime via Power Automate ou Incoming Webhook.

Método Recomendado — Power Automate
  1. Acesse make.powerautomate.com
  2. Clique em Create > Automated cloud flow
  3. Trigger: When a new message is added to a channel (Teams)
  4. Adicione uma condição: Message contains "@suporte"
  5. Adicione a ação HTTP
  6. Configure:
CampoValor
MethodPOST
URI/api/v1/tickets/
Headers: AuthorizationBearer SEU_TOKEN_AQUI
Headers: Content-Typeapplication/json
Body do Flow
{
  "titulo": "Teams: @{triggerOutputs()?['body/subject']}",
  "descricao": "Canal: @{triggerOutputs()?['body/channelIdentity/channelId']}\nAutor: @{triggerOutputs()?['body/from/user/displayName']}\nMensagem: @{triggerOutputs()?['body/body/content']}",
  "prioridade": "media",
  "categoria": "Suporte"
}
E-COMMERCE
Shopify

A integração com o Shopify permite criar tickets no DeskPrime automaticamente quando pedidos são criados, cancelados ou quando clientes entram em contato.

Passo 1 — Criar Webhook no Shopify
  1. No painel do Shopify, acesse Settings > Notifications > Webhooks
  2. Clique em Create webhook
  3. Configure:
CampoValor
EventOrder creation ou Order cancellation
FormatJSON
URLURL de um intermediário (Pipedream, Make, etc.)
O Shopify não suporta headers customizados nos webhooks. Use um intermediário para adicionar o header de autenticação do DeskPrime.
Exemplo com Pipedream como Intermediário
import axios from 'axios';

export default defineComponent({
  async run({ steps, $ }) {
    const pedido = steps.trigger.event.body;

    await axios.post('/api/v1/tickets/', {
      titulo: `Shopify: Pedido #${pedido.order_number} — ${pedido.email}`,
      descricao: [
        `Pedido: #${pedido.order_number}`,
        `Cliente: ${pedido.billing_address?.first_name} ${pedido.billing_address?.last_name}`,
        `E-mail: ${pedido.email}`,
        `Total: ${pedido.currency} ${pedido.total_price}`,
        `Status: ${pedido.financial_status}`,
        `Itens: ${pedido.line_items?.map(i => i.name).join(', ')}`
      ].join('\n'),
      prioridade: 'media',
      categoria: 'E-commerce'
    }, {
      headers: {
        'Authorization': `Bearer ${process.env.DESKPRIME_TOKEN}`,
        'Content-Type': 'application/json'
      }
    });
  }
});
E-COMMERCE
WooCommerce

O WooCommerce suporta webhooks nativos com suporte a headers customizados, permitindo integração direta com o DeskPrime.

Passo 1 — Criar Webhook no WooCommerce
  1. No painel do WordPress, acesse WooCommerce > Settings > Advanced > Webhooks
  2. Clique em Add webhook
  3. Configure:
CampoValor
NameDeskPrime Tickets
StatusActive
TopicOrder created
Delivery URLURL de um intermediário (Pipedream, Make, etc.)
SecretChave para validar a origem do webhook
Plugin para Integração Direta (PHP)

Adicione o seguinte código ao functions.php do seu tema ou a um plugin customizado:

add_action('woocommerce_order_status_changed', 'criar_ticket_deskprime', 10, 3);

function criar_ticket_deskprime($order_id, $old_status, $new_status) {
    if ($new_status !== 'on-hold') return; // Apenas pedidos em espera

    $order = wc_get_order($order_id);

    $payload = json_encode([
        'titulo' => 'WooCommerce: Pedido #' . $order->get_order_number() . ' — ' . $order->get_billing_email(),
        'descricao' => implode("
", [
            'Pedido: #' . $order->get_order_number(),
            'Cliente: ' . $order->get_billing_first_name() . ' ' . $order->get_billing_last_name(),
            'E-mail: ' . $order->get_billing_email(),
            'Total: ' . $order->get_currency() . ' ' . $order->get_total(),
            'Status: ' . $new_status
        ]),
        'prioridade' => 'media',
        'categoria' => 'E-commerce'
    ]);

    wp_remote_post('/api/v1/tickets/', [
        'method' => 'POST',
        'headers' => [
            'Authorization' => 'Bearer SEU_TOKEN_AQUI',
            'Content-Type' => 'application/json'
        ],
        'body' => $payload
    ]);
}
AUTOMAÇÃO
Zapier

O Zapier conecta mais de 7.000 aplicativos ao DeskPrime sem necessidade de código, usando Webhooks by Zapier como ação.

Passo 1 — Criar um Zap
  1. Acesse zapier.com e clique em Create Zap
  2. Configure o Trigger (ex: Gmail > New Email, Typeform > New Entry)
  3. Configure a Action: selecione Webhooks by Zapier > POST
Passo 2 — Configurar a Action de Webhook
CampoValor
URL/api/v1/tickets/
Payload TypeJSON
Header: AuthorizationBearer SEU_TOKEN_AQUI
Header: Content-Typeapplication/json
Mapeamento de Campos (Data)
ChaveValor (mapeado do trigger)
tituloEx: E-mail:
descricaoEx: De: -
prioridademedia (ou mapeado)
categoriaSuporte (ou mapeado)
Exemplos de Zaps Úteis
  • Gmail → DeskPrime: Cria ticket para cada e-mail recebido em [email protected]
  • Typeform → DeskPrime: Cria ticket para cada resposta de formulário de suporte
  • Slack → DeskPrime: Cria ticket para mensagens com reação 🎫 em canais de suporte
  • Jira → DeskPrime: Sincroniza issues críticas do Jira como tickets no DeskPrime
AUTOMAÇÃO
Make (Integromat)

O Make é uma plataforma de automação visual avançada que permite criar fluxos complexos com lógica condicional, transformações de dados e roteamento.

Passo 1 — Criar um Cenário
  1. Acesse make.com e clique em Create a new scenario
  2. Adicione o módulo de trigger desejado
  3. Adicione o módulo HTTP > Make a request
Configuração do Módulo HTTP
CampoValor
URL/api/v1/tickets/
MethodPOST
Body typeRaw
Content typeJSON (application/json)
Header: AuthorizationBearer SEU_TOKEN_AQUI
Request Content
{
  "titulo": "{{1.subject}}",
  "descricao": "{{1.body}}",
  "prioridade": "media",
  "categoria": "Suporte"
}

Substitua {{1.subject}} e {{1.body}} pelos campos do módulo anterior.

Recurso Avançado — Router

Use o módulo Router para criar rotas diferentes baseadas em condições, como prioridade do alerta:

  • Rota 1: severity = DISASTER → prioridade critica
  • Rota 2: severity = HIGH → prioridade alta
  • Rota 3: Demais → prioridade media
AUTOMAÇÃO
Pipedream

O Pipedream é uma plataforma de integração para desenvolvedores que combina automação visual com código Node.js/Python, ideal para transformações complexas de payload.

Passo 1 — Criar um Workflow
  1. Acesse pipedream.com e clique em New Workflow
  2. Configure o trigger: HTTP / Webhook
  3. Copie a URL gerada e configure no sistema de origem
  4. Adicione um step Run Node.js code
Código do Step
import axios from 'axios';

export default defineComponent({
  async run({ steps, $ }) {
    const evento = steps.trigger.event.body;

    const response = await axios.post(
      '/api/v1/tickets/',
      {
        titulo: evento.titulo || 'Ticket via Pipedream',
        descricao: evento.descricao || JSON.stringify(evento, null, 2),
        prioridade: evento.prioridade || 'media',
        categoria: evento.categoria || 'Suporte'
      },
      {
        headers: {
          'Authorization': `Bearer ${process.env.DESKPRIME_TOKEN}`,
          'Content-Type': 'application/json'
        }
      }
    );

    return response.data;
  }
});
Variáveis de Ambiente

Armazene o token com segurança em Settings > Environment Variables:

NomeValor
DESKPRIME_TOKENSeu token de API do DeskPrime
BI / ANALYTICS
Google BigQuery

A integração com o Google BigQuery permite exportar dados de tickets para análise avançada ou criar tickets automaticamente a partir de alertas detectados em queries.

Caso de Uso 1 — Exportar Tickets para o BigQuery
import requests
from google.cloud import bigquery

DESKPRIME_URL = '/api/v1/tickets/'
DESKPRIME_TOKEN = 'SEU_TOKEN_AQUI'

def exportar_tickets():
    headers = {'Authorization': f'Bearer {DESKPRIME_TOKEN}'}
    tickets = requests.get(DESKPRIME_URL, headers=headers).json()

    rows = [{
        'id': t['id'],
        'titulo': t['titulo'],
        'status': t['status'],
        'prioridade': t['prioridade'],
        'categoria': t.get('categoria', ''),
        'data_criacao': t['data_criacao']
    } for t in tickets]

    client = bigquery.Client()
    errors = client.insert_rows_json('projeto.dataset.tickets', rows)
    print(f'{len(rows)} tickets exportados' if not errors else f'Erros: {errors}')
Caso de Uso 2 — Criar Ticket via Cloud Function + Pub/Sub
import functions_framework, requests, json, base64

@functions_framework.cloud_event
def criar_ticket(cloud_event):
    data = json.loads(base64.b64decode(cloud_event.data['message']['data']))
    requests.post('/api/v1/tickets/', json={
        'titulo': data.get('titulo', 'Alerta BigQuery'),
        'descricao': data.get('descricao', ''),
        'prioridade': data.get('prioridade', 'media'),
        'categoria': 'Monitoramento'
    }, headers={'Authorization': 'Bearer SEU_TOKEN_AQUI'})
Queries Analíticas Úteis
-- Tickets por status e prioridade (últimos 30 dias)
SELECT status, prioridade, COUNT(*) AS total,
       AVG(tempo_resolucao_horas) AS tempo_medio_horas
FROM `projeto.deskprime.tickets`
WHERE DATE(data_criacao) >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
GROUP BY status, prioridade ORDER BY total DESC;

-- CSAT por equipe
SELECT equipe, COUNT(*) AS total, AVG(csat_nota) AS nota_media
FROM `projeto.deskprime.tickets`
WHERE csat_nota IS NOT NULL
GROUP BY equipe ORDER BY nota_media DESC;
BI / ANALYTICS
Snowflake

A integração com o Snowflake permite criar tickets via alertas nativos ou exportar dados de tickets para análise avançada.

Caso de Uso 1 — Criar Tickets via Snowflake Alerts

O Snowflake suporta Webhook Notifications nativamente. Configure assim:

1. Criar Notification Integration
CREATE OR REPLACE NOTIFICATION INTEGRATION deskprime_integration
  TYPE = WEBHOOK
  ENABLED = TRUE
  WEBHOOK_URL = '/api/v1/tickets/'
  WEBHOOK_HEADERS = (
    'Content-Type'='application/json',
    'Authorization'='Bearer SEU_TOKEN_AQUI'
  );
2. Criar Alert
CREATE OR REPLACE ALERT alerta_erros
  WAREHOUSE = COMPUTE_WH
  SCHEDULE = '5 MINUTES'
  IF (EXISTS (
    SELECT 1 FROM logs.erros
    WHERE timestamp > DATEADD('minute', -5, CURRENT_TIMESTAMP())
    HAVING COUNT(*) > 10
  ))
  THEN
    CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
      SNOWFLAKE.NOTIFICATION.INTEGRATION('deskprime_integration'),
      SNOWFLAKE.NOTIFICATION.WEBHOOK_PAYLOAD('Erros críticos detectados')
    );

ALTER ALERT alerta_erros RESUME;
Caso de Uso 2 — Exportar Tickets para Snowflake
import requests, snowflake.connector

def exportar_para_snowflake():
    tickets = requests.get(
        '/api/v1/tickets/',
        headers={'Authorization': 'Bearer SEU_TOKEN_AQUI'}
    ).json()

    conn = snowflake.connector.connect(
        account='seu_account', user='usuario', password='senha',
        warehouse='COMPUTE_WH', database='DESKPRIME', schema='TICKETS'
    )
    cursor = conn.cursor()

    for t in tickets:
        cursor.execute("""
            MERGE INTO TICKETS tgt USING (SELECT %s AS ID) src ON tgt.ID = src.ID
            WHEN NOT MATCHED THEN INSERT (ID, TITULO, STATUS, PRIORIDADE, DATA_CRIACAO)
            VALUES (%s, %s, %s, %s, %s)
        """, (t['id'], t['id'], t['titulo'], t['status'], t['prioridade'], t['data_criacao']))

    conn.commit()
    cursor.close()
    conn.close()