Integração com Calendário
Permite que qualquer aplicação conecte um Google Calendar a um calendário da Sendeasy e mantenha os dois lados sincronizados — sem passar pelo console.
A conexão é feita pela API pública (/api/v1/calendars/...), autenticada com
o token de API da empresa. Depois de conectada, a Sendeasy cuida sozinha dos
webhooks e da sincronização de eventos.
A autenticação usa o mesmo token da API Pública, gerenciado em Configurações → Integrações → Tokens de API. O token é vinculado à empresa: cada projeto enxerga apenas os próprios calendários.
Como funciona
Depois de conectado, dois fluxos rodam em paralelo:
- Sendeasy → Google: agendamentos criados, atualizados ou cancelados na Sendeasy viram eventos no Google Calendar (com Google Meet, se habilitado).
- Google → Sendeasy: mudanças feitas no Google Calendar chegam por webhook e são importadas de forma incremental. Um processo periódico reconcilia o que porventura não chegar pelo webhook.
Passo 1 — Iniciar a conexão
Solicite a URL de autorização do Google para o calendário desejado e redirecione a pessoa até ela.
curl -X GET "https://backend.sendeasy.app/api/v1/calendars/{calendarId}/integrations/google/connect" \
-H "Authorization: Bearer SEU_TOKEN_DE_API"
{
"url": "https://accounts.google.com/o/oauth2/v2/auth?..."
}
Ao aprovar o acesso, a pessoa é redirecionada de volta e a integração fica pronta: as credenciais são armazenadas de forma criptografada e o canal de notificações do Google é criado automaticamente.
A autorização é pedida em modo offline, o que garante a renovação automática do acesso. Se o Google não devolver uma credencial de renovação — comum quando a conta já havia autorizado antes —, a concessão anterior é revogada e a pessoa passa por um novo consentimento.
Passo 2 — Consultar o estado da integração
curl -X GET "https://backend.sendeasy.app/api/v1/calendars/{calendarId}/integrations/google" \
-H "Authorization: Bearer SEU_TOKEN_DE_API"
A resposta informa se está conectado, o estado das opções de sincronização, o último erro de sincronização (se houver) e a validade do canal de notificações.
Passo 3 — Ajustar as opções
- Name
googleCalendarEnabled- Type
- boolean
- Description
Espelha no Google Calendar os agendamentos feitos na Sendeasy.
- Name
googleMeetEnabled- Type
- boolean
- Description
Cria uma sala do Google Meet nos eventos gerados pela Sendeasy.
- Name
importEventsAsBookings- Type
- boolean
- Description
Importa eventos vindos do Google como agendamentos. Quando desligado, esses eventos entram apenas como períodos ocupados na agenda.
curl -X PUT "https://backend.sendeasy.app/api/v1/calendars/{calendarId}/integrations/google" \
-H "Authorization: Bearer SEU_TOKEN_DE_API" \
-H "Content-Type: application/json" \
-d '{ "googleMeetEnabled": true, "importEventsAsBookings": true }'
Ligar importEventsAsBookings dispara uma reimportação completa da agenda para
que os eventos já existentes passem a valer como agendamentos.
Desconectar
Encerra o canal de notificações e remove as credenciais armazenadas.
curl -X DELETE "https://backend.sendeasy.app/api/v1/calendars/{calendarId}/integrations/google" \
-H "Authorization: Bearer SEU_TOKEN_DE_API"
Listar os calendários da empresa
Para descobrir o calendarId a ser usado nas chamadas acima:
curl -X GET "https://backend.sendeasy.app/api/v1/calendars" \
-H "Authorization: Bearer SEU_TOKEN_DE_API"
Endpoints
| Método | Endpoint | Descrição |
|---|---|---|
GET | /api/v1/calendars | Lista os calendários da empresa |
GET | /api/v1/calendars/{id}/integrations/google/connect | Retorna a URL de autorização |
GET | /api/v1/calendars/{id}/integrations/google | Estado da integração |
PUT | /api/v1/calendars/{id}/integrations/google | Atualiza as opções |
DELETE | /api/v1/calendars/{id}/integrations/google | Desconecta a integração |
Sincronização e webhooks
Depois da conexão, a sincronização é automática e não exige nada da sua aplicação:
- Mudanças no Google Calendar são notificadas por push e importadas de forma incremental — só o que mudou desde a última sincronização.
- O canal de notificações do Google tem validade limitada e é renovado automaticamente antes de expirar.
- Um processo periódico funciona como rede de segurança: renova o canal e reconcilia mudanças que não tenham chegado por notificação.
- Falhas de sincronização ficam registradas e aparecem na consulta de estado (Passo 2).
Erros
| Código | Significado |
|---|---|
401 | Token de API ausente, inválido ou inativo. |
404 | Calendário inexistente ou pertencente a outra empresa. |
429 | Limite de requisições excedido. |