🏢 API de Instituições e Unidades - Documentação Completa
📋 Visão Geral
A API de Instituições e Unidades é responsável por toda a gestão da estrutura organizacional do sistema CordenaAi, incluindo cadastro, atualização, consulta e exclusão de instituições e suas respectivas unidades. Esta API fornece a base hierárquica para todo o sistema, permitindo a organização de turmas, usuários e recursos por localização e tipo de instituição.
🎯 Endpoints Disponíveis
🏢 Instituições - Gestão de Instituições
1. GET /api/Instituicoes
Listar Todas as Instituições
- Descrição: Retorna lista completa de todas as instituições cadastradas no sistema
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros: Nenhum
- Resposta: Array de objetos InstituicaoReadDto com unidades associadas
- Uso: Dashboard administrativo, listagem geral de instituições
2. GET /api/Instituicoes/{id}
Obter Instituição por ID
- Descrição: Retorna dados completos de uma instituição específica
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único da instituição
- Resposta: Objeto InstituicaoReadDto completo com unidades
- Uso: Visualização de detalhes de instituição, edição de dados
3. POST /api/Instituicoes
Criar Instituição
- Descrição: Cria nova instituição no sistema
- Método: POST
- Autenticação: Requerida (JWT Bearer Token)
- Body: Objeto InstituicaoCreateDto
- Resposta: Objeto InstituicaoReadDto criado
- Uso: Cadastro de novas instituições
4. PUT /api/Instituicoes/{id}
Atualizar Instituição
- Descrição: Atualiza dados de uma instituição existente
- Método: PUT
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único da instituição
- Body: Objeto InstituicaoUpdateDto
- Resposta: Objeto InstituicaoReadDto atualizado
- Uso: Alteração de dados da instituição
5. DELETE /api/Instituicoes/{id}
Excluir Instituição
- Descrição: Remove instituição do sistema
- Método: DELETE
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único da instituição
- Resposta: 204 No Content
- Uso: Remoção de instituições
🏬 Unidades - Gestão de Unidades
1. GET /api/Unidades
Listar Todas as Unidades
- Descrição: Retorna lista completa de todas as unidades cadastradas no sistema
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros: Nenhum
- Resposta: Array de objetos UnidadeReadDto com turmas associadas
- Uso: Dashboard administrativo, listagem geral de unidades
2. GET /api/Unidades/{id}
Obter Unidade por ID
- Descrição: Retorna dados completos de uma unidade específica
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único da unidade
- Resposta: Objeto UnidadeReadDto completo com turmas
- Uso: Visualização de detalhes de unidade, edição de dados
3. GET /api/Unidades/instituicao/{instituicaoId}
Obter Unidades por Instituição
- Descrição: Retorna todas as unidades de uma instituição específica
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
instituicaoId (path): ID único da instituição
- Resposta: Array de objetos UnidadeReadDto
- Uso: Gestão de unidades por instituição, relatórios organizacionais
4. POST /api/Unidades
Criar Unidade
- Descrição: Cria nova unidade no sistema
- Método: POST
- Autenticação: Requerida (JWT Bearer Token)
- Body: Objeto UnidadeCreateDto
- Resposta: Objeto UnidadeReadDto criado
- Uso: Cadastro de novas unidades
5. PUT /api/Unidades/{id}
Atualizar Unidade
- Descrição: Atualiza dados de uma unidade existente
- Método: PUT
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único da unidade
- Body: Objeto UnidadeUpdateDto
- Resposta: Objeto UnidadeReadDto atualizado
- Uso: Alteração de dados da unidade
6. DELETE /api/Unidades/{id}
Excluir Unidade
- Descrição: Remove unidade do sistema
- Método: DELETE
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único da unidade
- Resposta: 204 No Content
- Uso: Remoção de unidades
🔧 Modelo de Dados
Instituição
{
"id": 1,
"descricao": "Projeto Veleiros",
"local": "São Paulo, SP",
"tipo": 1,
"unidades": [
{
"id": 1,
"nome": "Unidade Centro",
"local": "São Paulo, SP",
"tipo": 1,
"instituicaoId": 1
}
],
"dataCadastro": "2025-01-15T10:30:00Z",
"dataAtualizacao": null
}
Unidade
{
"id": 1,
"nome": "Unidade Centro",
"local": "São Paulo, SP",
"tipo": 1,
"instituicaoId": 1,
"instituicaoNome": "Projeto Veleiros",
"turmas": [
{
"id": 1,
"nome": "Futsal Infantil",
"unidadeId": 1,
"responsavelId": "user-guid-here",
"status": 1
}
],
"dataCadastro": "2025-01-15T10:30:00Z",
"dataAtualizacao": null
}
Tipos de Instituição
{
"TipoInstituicao": {
"Matriz": 1,
"Filial": 2
}
}
Tipos de Unidade
{
"TipoUnidade": {
"Matriz": 1,
"Filial": 2
}
}
🔐 Autenticação e Autorização
Todos os endpoints requerem:
- JWT Bearer Token no header
Authorization
- Permissões específicas baseadas no tipo de usuário:
- Administradores: Acesso completo a todos os endpoints
- Gestores: Acesso às instituições e unidades sob sua responsabilidade
- Usuários: Acesso limitado às suas unidades e turmas
📊 Casos de Uso Principais
1. Cadastro de Instituição
POST /api/Instituicoes
Content-Type: application/json
Authorization: Bearer {token}
{
"descricao": "Projeto Veleiros",
"local": "São Paulo, SP",
"tipo": 1
}
2. Cadastro de Unidade
POST /api/Unidades
Content-Type: application/json
Authorization: Bearer {token}
{
"nome": "Unidade Centro",
"local": "São Paulo, SP",
"tipo": 1,
"instituicaoId": 1
}
3. Consulta de Unidades por Instituição
GET /api/Unidades/instituicao/1
Authorization: Bearer {token}
4. Atualização de Instituição
PUT /api/Instituicoes/1
Content-Type: application/json
Authorization: Bearer {token}
{
"descricao": "Projeto Veleiros - Atualizado",
"local": "São Paulo, SP - Zona Sul",
"tipo": 1
}
5. Consulta de Instituição com Unidades
GET /api/Instituicoes/1
Authorization: Bearer {token}
6. Consulta de Unidade com Turmas
GET /api/Unidades/1
Authorization: Bearer {token}
⚠️ Validações e Regras de Negócio
Validações Obrigatórias
Instituições:
- Descrição: Obrigatório, máximo 200 caracteres
- Local: Obrigatório, máximo 500 caracteres
- Tipo: Obrigatório, deve ser válido (1=Matriz, 2=Filial)
Unidades:
- Nome: Obrigatório, máximo 200 caracteres
- Local: Obrigatório, máximo 500 caracteres
- Tipo: Obrigatório, deve ser válido (1=Matriz, 2=Filial)
- InstituicaoId: Obrigatório, deve existir no sistema
Regras de Negócio
- Hierarquia: Unidades devem pertencer a uma instituição válida
- Tipo único: Apenas uma instituição/unidade pode ser do tipo “Matriz”
- Integridade referencial: Não é possível excluir instituição com unidades ativas
- Soft Delete: Instituições e unidades inativadas não são excluídas permanentemente
- Auditoria: Todas as operações são logadas
- Ordenação: Listas são ordenadas alfabeticamente por descrição/nome
🚨 Tratamento de Erros
Códigos de Status HTTP
- 200: Sucesso
- 201: Criado com sucesso
- 400: Dados inválidos
- 401: Não autorizado
- 403: Acesso negado
- 404: Recurso não encontrado
- 409: Conflito (tipo já existe)
- 500: Erro interno do servidor
Formato de Erro
{
"error": "string",
"message": "string",
"details": "string",
"timestamp": "datetime"
}
📈 Performance e Limitações
Limitações
- Paginação: Listas retornam máximo 100 registros por página
- Rate Limiting: 1000 requests por hora por usuário
- Timeout: 30 segundos por requisição
Otimizações
- Cache: Dados de instituições e unidades são cacheados por 5 minutos
- Índices: Busca otimizada por ID, nome e tipo
- Compressão: Respostas comprimidas com gzip
- Lazy Loading: Unidades e turmas são carregadas sob demanda
🔄 Integração com Outros Módulos
Módulos Relacionados
- Turmas: Associação obrigatória com unidade
- Usuários: Contexto organizacional
- Relatórios: Dados para análises organizacionais
- Endereços: Localização das instituições e unidades
- Contatos: Informações de contato das instituições
📱 Uso em Aplicações
Web App
- Dashboard de gestão organizacional
- Interface de criação de instituições e unidades
- Relatórios por instituição/unidade
- Gestão hierárquica do sistema
- Configuração de estrutura organizacional
Mobile App
- Visualização de unidades próximas
- Seleção de unidade para cadastro
- Informações de localização
- Lista de instituições disponíveis
🛠️ Manutenção e Monitoramento
Logs Importantes
- Criação de novas instituições
- Criação de novas unidades
- Alterações de estrutura organizacional
- Tentativas de acesso não autorizado
- Erros de validação
Métricas Monitoradas
- Número de instituições ativas
- Número de unidades por instituição
- Taxa de sucesso das operações
- Tempo de resposta dos endpoints
- Uso de recursos por endpoint
📚 Exemplos Práticos
Fluxo Completo de Criação de Estrutura Organizacional
- Criar instituição via
POST /api/Instituicoes
- Criar unidades via
POST /api/Unidades
- Associar unidades à instituição via
GET /api/Unidades/instituicao/{id}
- Verificar estrutura via
GET /api/Instituicoes/{id}
- Criar turmas nas unidades criadas
Fluxo de Consulta Hierárquica
- Listar instituições via
GET /api/Instituicoes
- Para cada instituição, listar unidades via
GET /api/Unidades/instituicao/{id}
- Para cada unidade, listar turmas via
GET /api/Unidades/{id}
- Gerar relatório consolidado
Fluxo de Gestão por Localização
- Filtrar instituições por local no frontend
- Listar unidades da região via
GET /api/Unidades
- Exibir estrutura organizacional da região
- Permitir seleção para cadastros
Versão: 1.0
Última Atualização: Outubro de 2025
Responsável: Equipe de Desenvolvimento CordenaAi