Introdução
Sobre a API
Esta API fornece acesso controlado aos dados da SEDUC Araruama - Sistema de Controle Escolar, permitindo a integração com sistemas externos de forma segura e padronizada.
URL Base
https://sua-api.exemplo.com
Características
- RESTful: Arquitetura REST padrão com métodos HTTP
- JSON: Todas as respostas em formato JSON
- Paginação: Suporte a paginação para grandes volumes de dados
- Timezone: Datas em horário de São Paulo (America/Sao_Paulo)
- Segurança: Autenticação via Bearer Token
Paginação
Endpoints que retornam múltiplos registros suportam paginação através de parâmetros de query:
page- Número da página (padrão: 1)limit- Registros por página (padrão: 50, máximo: 100)
GET /alunos?page=2&limit=25
Autenticação
Bearer Token
Todas as requisições à API devem incluir um token de autenticação no header Authorization.
Formato do Header
Authorization: Bearer SEU_TOKEN_AQUI
Exemplo de Requisição
curl -H "Authorization: Bearer SEU_TOKEN_AQUI" \
https://sua-api.exemplo.com/alunos
Erros de Autenticação
| Status | Descrição |
|---|---|
| 401 | Token não fornecido |
| 403 | Token inválido ou expirado |
Alunos
Endpoints para consulta de dados de alunos matriculados no sistema. Total aproximado: 25.000+ registros.
/alunos
Listar Todos os Alunos
Retorna uma lista paginada de todos os alunos cadastrados no sistema.
Parâmetros de Query
| Parâmetro | Tipo | Descrição | Padrão |
|---|---|---|---|
page |
integer | Número da página | 1 |
limit |
integer | Registros por página (máx: 100) | 50 |
Exemplo de Requisição
GET /alunos?page=1&limit=50
Exemplo de Resposta
{
"success": true,
"pagination": {
"total": 25430,
"page": 1,
"limit": 50,
"totalPages": 509
},
"data": [
{
"id": 1,
"nome": "João da Silva",
"cpf": "123.456.789-00",
"matricula": "2024001",
"telefone": "(11) 98765-4321",
"nomeEscola": "Escola Municipal Centro",
"nomeTurma": "3º Ano A",
"turno": "Manhã"
}
]
}
/alunos/id/:id
Buscar Aluno por ID
Retorna os dados de um aluno específico.
Parâmetros de URL
| Parâmetro | Tipo | Descrição |
|---|---|---|
id |
integer | ID único do aluno |
Exemplo de Requisição
GET /alunos/id/123
/alunos/escola/:EscolaID
Buscar Alunos por Escola
Retorna todos os alunos de uma escola específica.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
EscolaID |
string | ID da escola |
page |
integer | Número da página (opcional) |
limit |
integer | Registros por página (opcional) |
Exemplo de Requisição
GET /alunos/escola/ESC001?page=1&limit=50
Outros Filtros Disponíveis
| Endpoint | Descrição |
|---|---|
GET /alunos/classe/:classeIDBubble |
Buscar alunos por classe |
GET /alunos/turma/:turmaIDbubble |
Buscar alunos por turma |
GET /alunos/ultimo-acesso/:ultimoAcessoID |
Buscar alunos por último acesso |
Escolas
Endpoints para consulta de dados das escolas cadastradas. Total aproximado: <100 registros.
/escolas
Listar Todas as Escolas
Retorna uma lista de todas as escolas cadastradas no sistema.
Campos Retornados
id- ID único da escolacreated_at- Data de cadastroescola_id- Código identificador da escolanomeescola- Nome completo da escola
Exemplo de Resposta
{
"success": true,
"pagination": {
"total": 87,
"page": 1,
"limit": 50,
"totalPages": 2
},
"data": [
{
"id": 1,
"created_at": "2024-01-15T10:30:00-03:00",
"escola_id": "ESC001",
"nomeescola": "Escola Municipal Centro"
}
]
}
Outros Endpoints
| Endpoint | Descrição |
|---|---|
GET /escolas/id/:id |
Buscar escola por ID |
GET /escolas/escola-id/:escola_id |
Buscar escola por código identificador |
Dispositivos
Endpoints para consulta de dispositivos de controle de acesso (relógios de ponto, catracas, etc).
/devices
Listar Todos os Dispositivos
Retorna uma lista paginada de todos os dispositivos cadastrados.
Campos Retornados
id- ID único do dispositivoserial- Número de série do dispositivosync_status- Status de sincronização (0=pendente, 1=sincronizado)last_connection- Data/hora da última conexãolast_sync- Data/hora da última sincronizaçãoip_address- Endereço IP do dispositivois_online- Status online (true/false)last_check- Data/hora da última verificação
Exemplo de Resposta
{
"success": true,
"pagination": {
"total": 150,
"page": 1,
"limit": 50,
"totalPages": 3
},
"data": [
{
"id": 1,
"serial": "REP001234",
"sync_status": 1,
"last_connection": "2024-12-16T14:30:00-03:00",
"last_sync": "2024-12-16T14:25:00-03:00",
"ip_address": "192.168.1.100",
"is_online": true,
"last_check": "2024-12-16T14:35:00-03:00"
}
]
}
Filtros Disponíveis
| Endpoint | Descrição |
|---|---|
GET /devices/id/:id |
Buscar dispositivo por ID |
GET /devices/serial/:serial |
Buscar dispositivo por número de série |
GET /devices/online |
Listar apenas dispositivos online (is_online=true) |
Acessos
Endpoints para consulta de registros de acesso de alunos. Total aproximado: 1.000.000+ registros.
⚠️ Volume de Dados
Esta tabela contém mais de 1 milhão de registros. Recomenda-se o uso de filtros específicos e limites apropriados para melhor performance.
/acessos
Listar Acessos
Retorna uma lista paginada de registros de acesso, ordenados por data/hora decrescente (mais recentes primeiro).
Campos Retornados
id- ID único do registrocreated_at- Data de criação do registro (timezone São Paulo)dataEhora- Data e hora do acesso (timezone São Paulo)classeIDBubble- ID da classeclasseNome- Nome da classecnpjEscola- CNPJ da escolaEscolaID- ID da escolahorarioTexto- Descrição textual do horáriomatriculaID- Matrícula do alunonomeAluno- Nome do alunonomeEscola- Nome da escolanomeTurma- Nome da turmaturmaIDbubble- ID da turmatipo- Tipo de acesso (entrada/saída)uuid- Identificador único universaldispositivo_nome- Nome do dispositivodispositivo_id- ID do dispositivo
Importante: Timezone
Todos os campos de data (created_at e dataEhora) são retornados no timezone de São Paulo (America/Sao_Paulo) no formato ISO 8601.
Exemplo: 2024-12-16T15:30:00-03:00
Exemplo de Resposta
{
"success": true,
"pagination": {
"total": 1250340,
"page": 1,
"limit": 50,
"totalPages": 25007
},
"data": [
{
"id": 1250340,
"created_at": "2024-12-16T15:30:00-03:00",
"dataEhora": "2024-12-16T15:30:00-03:00",
"classeIDBubble": "CLS001",
"classeNome": "3º Ano",
"cnpjEscola": "12.345.678/0001-90",
"EscolaID": "ESC001",
"horarioTexto": "Saída - Tarde",
"matriculaID": "2024001",
"nomeAluno": "João da Silva",
"nomeEscola": "Escola Municipal Centro",
"nomeTurma": "3º Ano A",
"turmaIDbubble": "TRM001",
"tipo": "saida",
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"dispositivo_nome": "Catraca Principal",
"dispositivo_id": "DEV001"
}
]
}
Filtros Disponíveis
Para melhor performance, utilize filtros específicos ao consultar acessos:
| Endpoint | Descrição | Paginação |
|---|---|---|
GET /acessos/id/:id |
Buscar acesso específico por ID | Não |
GET /acessos/matricula/:matriculaID |
Buscar todos os acessos de um aluno | Sim |
GET /acessos/escola/:EscolaID |
Buscar acessos de uma escola | Sim |
GET /acessos/turma/:turmaIDbubble |
Buscar acessos de uma turma | Sim |
GET /acessos/classe/:classeIDBubble |
Buscar acessos de uma classe | Sim |
Exemplo: Consultar Acessos de um Aluno
GET /acessos/matricula/2024001?page=1&limit=50
Códigos de Erro
Respostas de Erro Padrão
A API utiliza códigos de status HTTP padrão para indicar sucesso ou falha de uma requisição.
Estrutura de Resposta de Erro
{
"success": false,
"error": "Descrição do erro"
}
Códigos HTTP
| Código | Status | Descrição |
|---|---|---|
| 200 | OK | Requisição bem-sucedida |
| 401 | Unauthorized | Token de autenticação não fornecido |
| 403 | Forbidden | Token de autenticação inválido |
| 404 | Not Found | Recurso não encontrado |
| 500 | Internal Server Error | Erro interno do servidor |
Exemplos de Erros Comuns
401 - Token não fornecido
{
"success": false,
"error": "Token de autenticação não fornecido"
}
404 - Registro não encontrado
{
"success": false,
"error": "Aluno não encontrado"
}
Boas Práticas
Recomendações de Uso
1. Utilize Filtros Específicos
Sempre que possível, utilize filtros específicos (por escola, turma, matrícula) ao invés de consultar todos os registros.
GET /acessos/escola/ESC001
GET /acessos (sem filtros em tabelas grandes)
2. Controle a Paginação
Para tabelas grandes (especialmente acessos), utilize limites apropriados.
limit=50 ou limit=100
3. Trate Erros Adequadamente
Sempre verifique o campo success na resposta e trate os erros apropriadamente.
4. Segurança do Token
- Nunca exponha seu token em código público ou versionamento
- Utilize variáveis de ambiente para armazenar credenciais
- Rotacione tokens periodicamente
5. Respeite os Limites
O limite máximo por página é 100 registros. Requisições com valores maiores serão automaticamente limitadas.
Suporte e Contato
Precisa de Ajuda?
Para questões técnicas, suporte ou reportar problemas com a API, entre em contato com a equipe técnica.