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}}.

GET/api/v1/accounts/{account_id}/services

Lista 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.

bash
curl -s "https://chat.seudominio.com/api/v1/accounts/1/services" \
  -H "api_access_token: YOUR_TOKEN" | jq .
200Lista de servicos
json
{
  "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
        }
      ]
    }
  ]
}
POST/api/v1/accounts/{account_id}/services

Cria novo servico no catalogo. Apenas administradores.

Body (service)

NomeTipoObrigatorioDescricao
namestringSimNome do servico
duration_minutesintegerSimDuracao em minutos (minimo 1)
descriptionstringNaoDescricao do servico
default_price_centsintegerNaoPreco padrao em centavos (padrao 0)
currencystringNaoMoeda (3 letras, padrao BRL)
colorstringNaoCor hex para o calendario
online_availablebooleanNaoDisponivel no widget publico (padrao true)
bash
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
    }
  }'
201Servico criado
json
{ "data": { "id": 8, "name": "Clareamento Dental", "duration_minutes": 90 } }
GET/api/v1/accounts/{account_id}/services/{id}

Retorna detalhes de um servico incluindo templates de lembrete.

bash
curl -s "https://chat.seudominio.com/api/v1/accounts/1/services/7" \
  -H "api_access_token: YOUR_TOKEN" | jq .
PATCH/api/v1/accounts/{account_id}/services/{id}

Atualiza dados do servico. Apenas administradores.

bash
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 } }'
DELETE/api/v1/accounts/{account_id}/services/{id}

Remove o servico (soft-delete). Historico de atendimentos e preservado. Apenas administradores.

bash
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

NomeTipoObrigatorioDescricao
body_templatestringSimCorpo do lembrete com variaveis Liquid
labelstringNaoLabel descritivo (ex: 1 dia antes)
days_beforeintegerNaoDias antes do atendimento (padrao 0)
hours_beforeintegerNaoHoras antes do atendimento (padrao 0)
minutes_beforeintegerNaoMinutos antes do atendimento (padrao 0)
activebooleanNaoSe o lembrete esta ativo (padrao true)
send_viastringNaoCanal de envio (padrao whatsapp)
whatsapp_template_idintegerNaoID do template Meta aprovado (Fase 1.6)
bash
# 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.