Skip to content

Referência da API do Agenda

URL Base: https://agenda.mangati.com

Todos os endpoints estão sob /api. Operações de escrita requerem um Token de Acesso gerado em Admin → Tokens de Acesso.

Authorization: Bearer <token_de_acesso>

Endpoints de leitura pública (disponibilidade, categorias) podem não exigir autenticação dependendo da configuração.

Agendamentos

Listar Agendamentos

http
GET /api/appointments
Authorization: Bearer <token_de_acesso>

Filtros por query string:

ParâmetroTipoDescrição
datestringFiltrar por data (YYYY-MM-DD)
documentIdstringFiltrar por documento do cidadão
codestringFiltrar por código de agendamento
locationUUIDFiltrar por ID de localização
resourceUUIDFiltrar por ID de recurso
pageinteiroNúmero da página

Exemplo:

bash
curl "https://agenda.mangati.com/api/appointments?date=2024-06-15" \
  -H "Authorization: Bearer TOKEN" \
  -H "Accept: application/json"

Resposta:

json
[
  {
    "id": "019e6e9e-556a-7743-b449-9b17d6ac35ef",
    "name": "João Silva",
    "status": "scheduled",
    "date": "2026-06-17",
    "time": "13:00",
    "resource": {
      "id": "018d3793-4f8f-7f44-a6e6-a48ba630646b",
      "name": "Carteira de Identidade"
    },
    "location": {
      "id": "018d3793-3352-7158-82a0-e3dac21465d2",
      "name": "Centro de Atendimento - Vitória",
      "description": "descrição",
      "address": {
        "streetName": "Rua 1",
        "neighborhood": "Centro",
        "streetNumber": "100",
        "postalCode": "29000000",
        "city": "Vitória",
        "state": "ES"
      },
      "timezone": "America/Sao_Paulo"
    },
    "email": "joao@mangati.com",
    "phone": "(27) 99999-8888",
    "documentId": "123.456.789-00",
    "code": "02YMNC",
    "printingInfo": "informação de impressão..."
  }
]
json
{
  "@context": "/api/contexts/Appointment",
  "@id": "/api/appointments",
  "@type": "Collection",
  "totalItems": 1,
  "member": [
    {
      "@id": "/api/appointments/019e6e9e-556a-7743-b449-9b17d6ac35ef",
      "@type": "Appointment",
      "id": "019e6e9e-556a-7743-b449-9b17d6ac35ef",
      "name": "João Silva",
      "status": "scheduled",
      "date": "2026-06-17",
      "time": "13:00",
      "resource": {
        "@id": "/api/resources/018d3793-4f8f-7f44-a6e6-a48ba630646b",
        "@type": "Resource",
        "id": "018d3793-4f8f-7f44-a6e6-a48ba630646b",
        "name": "Carteira de Identidade"
      },
      "location": {
        "@id": "/api/locations/018d3793-3352-7158-82a0-e3dac21465d2",
        "@type": "Location",
        "id": "018d3793-3352-7158-82a0-e3dac21465d2",
        "name": "Centro de Atendimento - Vitória",
        "description": "descrição",
        "address": {
          "@type": "AddressDto",
          "streetName": "Rua 1",
          "neighborhood": "Centro",
          "streetNumber": "100",
          "postalCode": "29000000",
          "city": "Vitória",
          "state": "ES"
        },
        "timezone": "America/Sao_Paulo"
      },
      "email": "joao@mangati.com",
      "phone": "(27) 99999-8888",
      "documentId": "123.456.789-00",
      "code": "02YMNC",
      "printingInfo": "informação de impressão..."
    }
  ]
}

Obter Agendamento

http
GET /api/appointments/{id}
Authorization: Bearer <token_de_acesso>

Criar Agendamento

http
POST /api/appointments
Authorization: Bearer <token_de_acesso>
Content-Type: application/json

Corpo da requisição:

CampoTipoObrigatórioDescrição
namestringSimNome do cidadão
resourceUUIDSimID do recurso
locationUUIDSimID da localização
datestringSimData (YYYY-MM-DD)
timestringSimHorário (HH:MM)
emailstringNãoE-mail do cidadão
phonestringNãoTelefone do cidadão
documentIdstringNãoNúmero do documento
documentTypeUUIDNãoID do tipo de documento
dateOfBirthstringNãoData de nascimento (YYYY-MM-DD)

Exemplo:

bash
curl -X POST https://agenda.mangati.com/api/appointments \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "João Silva",
    "resource": "018d3793-4f8f-7f44-a6e6-a48ba630646b",
    "location": "018d3793-3352-7158-82a0-e3dac21465d2",
    "date": "2024-06-20",
    "time": "10:00",
    "email": "joao@mangati.com",
    "phone": "(27) 99999-8888",
    "documentId": "123.456.789-00",
    "documentType": "018e4f40-0000-7000-0000-000000000001"
  }'

Resposta (201):

json
{
  "id": "018e4f35-...",
  "name": "João Silva",
  "status": "scheduled",
  "date": "2024-06-20",
  "time": "10:00",
  "resource": { "id": "018e4f31-...", "name": "Registro Civil" },
  "location": { "id": "018e4f32-...", "name": "Segunda-via" },
  "code": "AG240620001",
  "printingInfo": "Compareça 15 minutos antes do horário agendado."
}

Erros (422): Retorna erros de validação se o horário estiver indisponível ou os dados forem inválidos.


Cancelar Agendamento

http
DELETE /api/appointments/{id}?code={code}
Authorization: Bearer <token_de_acesso>

O parâmetro code é obrigatório e deve corresponder ao código do agendamento (ex.: 02YMNC). Retorna 200 com o objeto agendamento atualizado (status: canceled).


Agendas

Listar Agendas

http
GET /api/agendas
Authorization: Bearer <token_de_acesso>

Exemplo:

bash
curl "https://agenda.mangati.com/api/agendas" \
  -H "Authorization: Bearer TOKEN" \
  -H "Accept: application/json"

Resposta:

json
[
  {
    "id": "018d3794-33c4-7e8c-829c-00b20edfaa67",
    "resource": {
      "id": "018d3793-4f8f-7f44-a6e6-a48ba630646b",
      "name": "Carteira de Identidade"
    },
    "location": {
      "id": "018d3793-3352-7158-82a0-e3dac21465d2",
      "name": "Centro de Atendimento - Vitória",
      "description": "descrição",
      "address": {
        "streetName": "Rua 1",
        "neighborhood": "Centro",
        "streetNumber": "100",
        "postalCode": "29000000",
        "city": "Vitória",
        "state": "ES"
      },
      "timezone": "America/Sao_Paulo"
    },
    "formDefinition": {
      "email": "optional",
      "document": "optional",
      "phone": "optional",
      "dateOfBirth": "optional"
    },
    "documentTypes": [
      {
        "id": "018d2991-9883-7441-add3-aef8b399b624",
        "name": "CPF"
      }
    ]
  }
]
json
{
  "@context": "/api/contexts/Agenda",
  "@id": "/api/agendas",
  "@type": "Collection",
  "totalItems": 1,
  "member": [
    {
      "@id": "/api/agendas/018d3794-33c4-7e8c-829c-00b20edfaa67",
      "@type": "Agenda",
      "id": "018d3794-33c4-7e8c-829c-00b20edfaa67",
      "resource": {
        "@id": "/api/resources/018d3793-4f8f-7f44-a6e6-a48ba630646b",
        "@type": "Resource",
        "id": "018d3793-4f8f-7f44-a6e6-a48ba630646b",
        "name": "Carteira de Identidade"
      },
      "location": {
        "@id": "/api/locations/018d3793-3352-7158-82a0-e3dac21465d2",
        "@type": "Location",
        "id": "018d3793-3352-7158-82a0-e3dac21465d2",
        "name": "Centro de Atendimento - Vitória",
        "description": "descrição",
        "address": {
          "@type": "AddressDto",
          "streetName": "Rua 1",
          "neighborhood": "Centro",
          "streetNumber": "100",
          "postalCode": "29000000",
          "city": "Vitória",
          "state": "ES"
        },
        "timezone": "America/Bahia"
      },
      "formDefinition": {
        "@type": "FormDefinitionDto",
        "email": "optional",
        "document": "optional",
        "phone": "optional",
        "dateOfBirth": "optional"
      },
      "documentTypes": [
        {
          "@id": "/api/document_types/018d2991-9883-7441-add3-aef8b399b624",
          "@type": "DocumentType",
          "id": "018d2991-9883-7441-add3-aef8b399b624",
          "name": "CPF"
        }
      ]
    }
  ]
}

O campo formDefinition indica quais campos do formulário de agendamento são exigidos (required), opcionais (optional) ou desabilitados (disabled).


Disponibilidade

Obter Datas Disponíveis

http
GET /api/agendas/{id}/dates
Authorization: Bearer <token_de_acesso>

Parâmetros de query:

ParâmetroTipoObrigatórioDescrição
monthstringNãoMês a verificar (YYYY-MM, padrão: mês atual)

Exemplo:

bash
curl "https://agenda.mangati.com/api/agendas/018d3793-4f8f-7f44-a6e6-a48ba630646b/dates" \
  -H "Authorization: Bearer TOKEN"

Resposta:

json
[
  { "date": "2024-06-17" },
  { "date": "2024-06-18" },
  { "date": "2024-06-20" }
]

Datas não presentes na lista estão totalmente lotadas ou indisponíveis (feriados, fora do turno de trabalho).


Obter Horários Disponíveis

http
GET /api/agendas/{id}/times?date={date}
Authorization: Bearer <token_de_acesso>

Parâmetros de query:

ParâmetroTipoObrigatórioDescrição
datestringSimData (YYYY-MM-DD)

Exemplo:

bash
curl "https://agenda.mangati.com/api/agendas/018d3793-4f8f-7f44-a6e6-a48ba630646b/times?date=2024-06-20" \
  -H "Authorization: Bearer TOKEN"

Resposta:

json
[
  { "date": "2024-06-20", "time": "09:00" },
  { "date": "2024-06-20", "time": "09:30" },
  { "date": "2024-06-20", "time": "10:00" },
  { "date": "2024-06-20", "time": "10:30" }
]

Categorias

http
GET /api/categories        # Listar todas as categorias
GET /api/categories/{id}   # Obter categoria

Objeto categoria:

json
{
  "id": "018e4f33-...",
  "name": "Registro Civil",
  "description": "Certidões de nascimento, casamento e óbito"
}

Localizações

http
GET /api/locations        # Listar todas as localizações
GET /api/locations/{id}   # Obter localização

Objeto localização:

json
{
  "id": "018d3793-3352-7158-82a0-e3dac21465d2",
  "name": "Centro de Atendimento - Vitória",
  "description": "descrição",
  "address": {
    "streetName": "Rua 1",
    "neighborhood": "Centro",
    "streetNumber": "100",
    "postalCode": "29000000",
    "city": "Vitória",
    "state": "ES"
  },
  "timezone": "America/Sao_Paulo"
}

Recursos

http
GET /api/resources        # Listar todos os recursos
GET /api/resources/{id}   # Obter recurso

Objeto recurso:

json
{
  "id": "018e4f31-...",
  "name": "Registro Civil",
  "category": {
    "id": "018e4f33-...",
    "name": "Registro Civil"
  },
  "location": {
    "id": "018e4f32-...",
    "name": "Segunda-via"
  }
}

Tipos de Documento

http
GET /api/document-types        # Listar tipos de documento
GET /api/document-types/{id}   # Obter tipo de documento

Exemplo de Agendamento em PHP

php
// Passo 1: Obter datas disponíveis para a agenda
$datesResponse = $client->get("https://agenda.mangati.com/api/agendas/{$agendaId}/dates", [
    'headers' => ['Authorization' => 'Bearer ' . $token],
]);
$dates = json_decode($datesResponse->getBody(), true);

// Passo 2: Obter horários disponíveis para a data escolhida
$timesResponse = $client->get("https://agenda.mangati.com/api/agendas/{$agendaId}/times", [
    'headers' => ['Authorization' => 'Bearer ' . $token],
    'query'   => ['date' => '2024-06-20'],
]);
$times = json_decode($timesResponse->getBody(), true);

// Passo 3: Criar agendamento
$appointment = $client->post('https://agenda.mangati.com/api/appointments', [
    'headers' => [
        'Authorization' => 'Bearer ' . $token,
        'Content-Type'  => 'application/json',
    ],
    'json' => [
        'name'         => 'João Silva',
        'resource'     => $resourceId,
        'location'     => $locationId,
        'date'         => '2024-06-20',
        'time'         => '10:00',
        'email'        => 'joao@mangati.com',
        'documentId'   => '123.456.789-00',
        'documentType' => $documentTypeId,
    ],
]);

Documentação do Mangati Cloud Suite