API - SEDUC Araruama - Sistema de Controle Escolar

Documentação Oficial da API de Integração

v1.0.0

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
⚠️ Importante: Mantenha seu token em segurança. Não compartilhe ou exponha em código público.

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.

GET /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ã"
    }
  ]
}
GET /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
GET /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.

GET /escolas

Listar Todas as Escolas

Retorna uma lista de todas as escolas cadastradas no sistema.

Campos Retornados

  • id - ID único da escola
  • created_at - Data de cadastro
  • escola_id - Código identificador da escola
  • nomeescola - 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).

GET /devices

Listar Todos os Dispositivos

Retorna uma lista paginada de todos os dispositivos cadastrados.

Campos Retornados

  • id - ID único do dispositivo
  • serial - Número de série do dispositivo
  • sync_status - Status de sincronização (0=pendente, 1=sincronizado)
  • last_connection - Data/hora da última conexão
  • last_sync - Data/hora da última sincronização
  • ip_address - Endereço IP do dispositivo
  • is_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.

GET /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 registro
  • created_at - Data de criação do registro (timezone São Paulo)
  • dataEhora - Data e hora do acesso (timezone São Paulo)
  • classeIDBubble - ID da classe
  • classeNome - Nome da classe
  • cnpjEscola - CNPJ da escola
  • EscolaID - ID da escola
  • horarioTexto - Descrição textual do horário
  • matriculaID - Matrícula do aluno
  • nomeAluno - Nome do aluno
  • nomeEscola - Nome da escola
  • nomeTurma - Nome da turma
  • turmaIDbubble - ID da turma
  • tipo - Tipo de acesso (entrada/saída)
  • uuid - Identificador único universal
  • dispositivo_nome - Nome do dispositivo
  • dispositivo_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.

✓ Recomendado: GET /acessos/escola/ESC001
✗ Evite: GET /acessos (sem filtros em tabelas grandes)

2. Controle a Paginação

Para tabelas grandes (especialmente acessos), utilize limites apropriados.

✓ Recomendado: 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.

Email: web@logintecnologia.com.br
Horário de Atendimento: Segunda a Sexta, 8h às 18h