Servicos
Catalogo de servicos agendalveis. Cada servico define duracao, preco padrao e templates de lembrete automatico que sao materializados no momento do agendamento.
Feature Flag
Requer appointments_module habilitado na conta.
Templates de Lembrete
Cada servico pode ter N templates de lembrete configurados (ex: "1 dia antes", "3 horas antes"). Ao criar um atendimento, esses templates sao materializados em appointment_reminders e enviados automaticamente via WhatsApp.
Os templates suportam variaveis Liquid: {{paciente}}, {{profissional}}, {{servico}}, {{data}}, {{hora}}, {{valor}}, {{empresa}}.
/api/v1/accounts/{account_id}/servicesLista todos os servicos ativos do catalogo da conta (nao-descartados), ordenados por nome, com reminder_templates embutidos. Qualquer membro da conta pode visualizar.
Sem filtros nem paginacao
Esta listagem retorna sempre todos os servicos ativos da conta — nao aceita parametros de query de filtro ou paginacao.
curl -s "https://chat.seudominio.com/api/v1/accounts/1/services" \
-H "api_access_token: YOUR_TOKEN" | jq .{
"data": [
{
"id": 7,
"name": "Limpeza Dental",
"description": "Profilaxia e polimento dental completo.",
"duration_minutes": 60,
"default_price_cents": 20000,
"currency": "BRL",
"color": "#10B981",
"online_available": true,
"active": true,
"reminder_templates": [
{
"id": 5,
"label": "1 dia antes",
"days_before": 1,
"hours_before": 0,
"minutes_before": 0,
"body_template": "Ola {{paciente}}, lembrando do seu {{servico}} amanha as {{hora}}.",
"active": true,
"send_via": "whatsapp",
"whatsapp_template_id": null
}
]
}
]
}/api/v1/accounts/{account_id}/servicesCria novo servico no catalogo. Apenas administradores.
Body (service)
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
name | string | Sim | Nome do servico |
duration_minutes | integer | Sim | Duracao em minutos (minimo 1) |
description | string | Nao | Descricao do servico |
default_price_cents | integer | Nao | Preco padrao em centavos (padrao 0) |
currency | string | Nao | Moeda (3 letras, padrao BRL) |
color | string | Nao | Cor hex para o calendario |
online_available | boolean | Nao | Disponivel no widget publico (padrao true) |
curl -X POST "https://chat.seudominio.com/api/v1/accounts/1/services" \
-H "api_access_token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"service": {
"name": "Clareamento Dental",
"duration_minutes": 90,
"default_price_cents": 45000,
"currency": "BRL",
"online_available": true
}
}'{ "data": { "id": 8, "name": "Clareamento Dental", "duration_minutes": 90 } }/api/v1/accounts/{account_id}/services/{id}Retorna detalhes de um servico incluindo templates de lembrete.
curl -s "https://chat.seudominio.com/api/v1/accounts/1/services/7" \
-H "api_access_token: YOUR_TOKEN" | jq ./api/v1/accounts/{account_id}/services/{id}Atualiza dados do servico. Apenas administradores.
curl -X PATCH "https://chat.seudominio.com/api/v1/accounts/1/services/7" \
-H "api_access_token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "service": { "duration_minutes": 75, "default_price_cents": 22000 } }'/api/v1/accounts/{account_id}/services/{id}Remove o servico (soft-delete). Historico de atendimentos e preservado. Apenas administradores.
curl -X DELETE "https://chat.seudominio.com/api/v1/accounts/1/services/7" \
-H "api_access_token: YOUR_TOKEN"Templates de Lembrete
Nao ha endpoints REST dedicados para reminder_templates
Os templates de lembrete nao tem rotas proprias (/services/{id}/reminder_templates nao existe). Eles sao gerenciados como um campo aninhado no proprio recurso de servico: envie o array reminder_templates no body do POST ou PATCH de /services. O backend faz replace-all — a lista enviada substitui integralmente os templates atuais do servico.
O GET /services/{id} ja retorna os reminder_templatesembutidos. Para criar, atualizar ou remover, envie o array completo no body do servico. Omitir o campo preserva os templates existentes; enviar [] remove todos.
Campos de cada item de reminder_templates
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
body_template | string | Sim | Corpo do lembrete com variaveis Liquid |
label | string | Nao | Label descritivo (ex: 1 dia antes) |
days_before | integer | Nao | Dias antes do atendimento (padrao 0) |
hours_before | integer | Nao | Horas antes do atendimento (padrao 0) |
minutes_before | integer | Nao | Minutos antes do atendimento (padrao 0) |
active | boolean | Nao | Se o lembrete esta ativo (padrao true) |
send_via | string | Nao | Canal de envio (padrao whatsapp) |
whatsapp_template_id | integer | Nao | ID do template Meta aprovado (Fase 1.6) |
# Definir os lembretes de um servico via PATCH (replace-all):
curl -X PATCH "https://chat.seudominio.com/api/v1/accounts/1/services/7" \
-H "api_access_token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"service": {
"reminder_templates": [
{
"label": "1 dia antes",
"days_before": 1,
"body_template": "Ola {{paciente}}, lembrando do seu {{servico}} amanha as {{hora}}.",
"send_via": "whatsapp",
"active": true
},
{
"label": "3 horas antes",
"hours_before": 3,
"body_template": "Ola {{paciente}}! Seu {{servico}} e hoje as {{hora}}.",
"send_via": "whatsapp"
}
]
}
}'Lembretes ja materializados
Alterar ou remover um template via replace-all nao afeta lembretes que ja foram materializados em atendimentos existentes — apenas atendimentos criados posteriormente usam a nova configuracao.