Skip to content

Agendamentos

Gerenciamento de agendamentos de chamadas. Permite agendar videochamadas com data e hora definidas. Requer papel de attendant ou superior.

Endpoints

MétodoEndpointDescriçãoRole Mínimo
GET/api/v1/appointmentsListar agendamentosattendant
POST/api/v1/appointmentsCriar agendamentoattendant
GET/api/v1/appointments/:idBuscar agendamentoattendant
PUT/api/v1/appointments/:idAtualizar agendamentoattendant
GET/api/v1/appointments/conflictsVerificar conflitosattendant
POST/api/v1/appointments/:id/confirmConfirmar agendamentoattendant
POST/api/v1/appointments/:id/cancelCancelar agendamentoattendant
POST/api/v1/appointments/:id/completeMarcar como concluídoattendant
POST/api/v1/appointments/:id/no-showMarcar como no-showattendant

Listar Agendamentos

GET /api/v1/appointments

Query Parameters

ParâmetroTipoPadrãoDescrição
pageinteger1Número da página
page_sizeinteger20Itens por página
sort_bystringscheduled_atCampo para ordenação
sort_orderstringascDireção da ordenação
statusstring-Filtro: scheduled, confirmed, completed, cancelled, no_show
date_fromstring-Data início (ISO 8601)
date_tostring-Data fim (ISO 8601)
user_iduuid-Filtro por atendente
department_iduuid-Filtro por departamento

Exemplo de Request

bash
curl -X GET "https://voki.avanter.com.br/api/v1/appointments?date_from=2026-02-18&status=scheduled" \
  -H "Authorization: Bearer eyJhbGci..." \
  -H "X-Tenant: avanter"

Resposta de Sucesso (200)

json
{
  "data": [
    {
      "id": "4c5d6e7f-8a9b-0123-defg-456789012345",
      "title": "Consulta de acompanhamento",
      "description": "Retorno sobre tratamento iniciado em janeiro",
      "status": "scheduled",
      "scheduled_at": "2026-02-20T10:00:00Z",
      "duration_minutes": 30,
      "department_id": "e5f6a7b8-c9d0-1234-efgh-567890123456",
      "department_name": "Suporte Técnico",
      "user_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "user_name": "João Silva",
      "customer_id": "2a3b4c5d-6e7f-8901-bcde-f23456789012",
      "customer_name": "Carlos Ferreira",
      "customer_email": "carlos@email.com",
      "customer_phone": "+5511999998888",
      "notes": null,
      "inserted_at": "2026-02-15T10:00:00Z",
      "updated_at": "2026-02-15T10:00:00Z"
    }
  ],
  "meta": {
    "current_page": 1,
    "page_size": 20,
    "total_pages": 1,
    "total_count": 1
  }
}

Criar Agendamento

POST /api/v1/appointments

Request Body

CampoTipoObrigatórioDescrição
titlestringSimTítulo do agendamento
descriptionstringNãoDescrição detalhada
scheduled_atstringSimData e hora (ISO 8601, futuro)
duration_minutesintegerNãoDuração em minutos (padrão: 30)
department_iduuidSimID do departamento
user_iduuidNãoID do atendente (padrão: usuário autenticado)
customer_iduuidNãoID do cliente existente
customer_namestringSim*Nome do cliente (se customer_id não fornecido)
customer_emailstringNãoEmail do cliente
customer_phonestringNãoTelefone do cliente
notesstringNãoObservações

Exemplo de Request

bash
curl -X POST https://voki.avanter.com.br/api/v1/appointments \
  -H "Authorization: Bearer eyJhbGci..." \
  -H "X-Tenant: avanter" \
  -H "Content-Type: application/json" \
  -d '{
    "appointment": {
      "title": "Reunião de apresentação",
      "scheduled_at": "2026-02-25T14:00:00Z",
      "duration_minutes": 45,
      "department_id": "e5f6a7b8-c9d0-1234-efgh-567890123456",
      "customer_name": "Roberto Lima",
      "customer_email": "roberto@email.com",
      "customer_phone": "+5511966665544"
    }
  }'

Resposta de Sucesso (201)

json
{
  "data": {
    "id": "5d6e7f8a-9b0c-1234-efgh-567890123456",
    "title": "Reunião de apresentação",
    "status": "scheduled",
    "scheduled_at": "2026-02-25T14:00:00Z",
    "duration_minutes": 45,
    "department_id": "e5f6a7b8-c9d0-1234-efgh-567890123456",
    "department_name": "Suporte Técnico",
    "user_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "user_name": "João Silva",
    "customer_id": "6e7f8a9b-0c1d-2345-fghi-678901234567",
    "customer_name": "Roberto Lima",
    "customer_email": "roberto@email.com",
    "customer_phone": "+5511966665544",
    "inserted_at": "2026-02-18T16:00:00Z",
    "updated_at": "2026-02-18T16:00:00Z"
  }
}

Verificar Conflitos

Verifica se há conflitos de horário para um atendente.

GET /api/v1/appointments/conflicts

Query Parameters

ParâmetroTipoObrigatórioDescrição
user_iduuidSimID do atendente
scheduled_atstringSimData e hora a verificar
duration_minutesintegerNãoDuração em minutos (padrão: 30)
exclude_iduuidNãoID de agendamento a excluir da verificação

Exemplo de Request

bash
curl -X GET "https://voki.avanter.com.br/api/v1/appointments/conflicts?user_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890&scheduled_at=2026-02-25T14:00:00Z&duration_minutes=45" \
  -H "Authorization: Bearer eyJhbGci..." \
  -H "X-Tenant: avanter"

Resposta de Sucesso (200)

json
{
  "data": {
    "has_conflicts": false,
    "conflicts": []
  }
}

Confirmar Agendamento

POST /api/v1/appointments/:id/confirm

Exemplo de Request

bash
curl -X POST https://voki.avanter.com.br/api/v1/appointments/4c5d6e7f-8a9b-0123-defg-456789012345/confirm \
  -H "Authorization: Bearer eyJhbGci..." \
  -H "X-Tenant: avanter"

Cancelar Agendamento

POST /api/v1/appointments/:id/cancel

Request Body (opcional)

CampoTipoObrigatórioDescrição
reasonstringNãoMotivo do cancelamento

Exemplo de Request

bash
curl -X POST https://voki.avanter.com.br/api/v1/appointments/4c5d6e7f-8a9b-0123-defg-456789012345/cancel \
  -H "Authorization: Bearer eyJhbGci..." \
  -H "X-Tenant: avanter" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Cliente solicitou reagendamento"
  }'

Marcar como Concluído

POST /api/v1/appointments/:id/complete

Marcar como No-Show

POST /api/v1/appointments/:id/no-show

Status do Agendamento

StatusDescrição
scheduledAgendado, aguardando confirmação
confirmedConfirmado pelo atendente ou cliente
completedChamada realizada
cancelledCancelado
no_showCliente não compareceu

Documentação da API Voki v4.0