Autorizações
Certas operações sensíveis sobre matrículas — como atualização de status, exclusão forçada e reativação — não são executadas diretamente. Em vez disso, geram uma autorização administrativa pendente que precisa ser aprovada ou rejeitada pela direção da escola. Estes endpoints listam, executam e rejeitam essas autorizações.
X-Authorization / X-Partner).
DIRECTOR). Requisições de outros perfis são recusadas com 403 Forbidden.
O modelo autorização
O modelo AdminAuthorization
representa uma solicitação de operação sensível aguardando decisão da direção. Inclui o tipo da operação,
o status atual e o payload com os dados necessários para execução.
id
uuid
Identificador único da autorização.
type
string
Tipo da operação. Valores: ENROLLMENT_STATUS_UPDATE, ENROLLMENT_FORCE_DELETE, ENROLLMENT_REACTIVATION.
status
string
Status da autorização. Valores: PENDING (aguardando), APPROVED (executada), REJECTED (rejeitada).
payload
object
Dados específicos da operação. Contém os campos necessários para executá-la (enrollment_id, new_status, reason, etc.).
reason
string
Motivo da solicitação.
target_type
string
Tipo do recurso alvo. Ex: App\Models\Enrollment.
target_id
uuid
ID do recurso alvo (ex: ID da matrícula).
requested_by
uuid
ID do usuário que criou a solicitação.
reviewed_by
uuid|null
ID do usuário que executou ou rejeitou. null enquanto estiver pendente.
created_at
datetime
Data e hora em que a solicitação foi criada.
reviewed_at
datetime|null
Data e hora da decisão. null enquanto estiver pendente.
enrollment
object|null
Dados enriquecidos da matrícula alvo. Retornado quando o tipo é ENROLLMENT_STATUS_UPDATE, ENROLLMENT_FORCE_DELETE ou ENROLLMENT_REACTIVATION.
Tipos de autorização
| Tipo | Operação executada ao aprovar |
|---|---|
ENROLLMENT_STATUS_UPDATE |
Atualiza o status da matrícula para o valor em payload.new_status. |
ENROLLMENT_FORCE_DELETE |
Exclui permanentemente a matrícula do banco de dados. |
ENROLLMENT_REACTIVATION |
Restaura uma matrícula excluída (soft delete), reativando o vínculo do aluno com a turma. |
{ "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "type": "ENROLLMENT_STATUS_UPDATE", "status": "PENDING", "payload": { "enrollment_id": "b2c3d4e5-...", "from_status": "MATRICULADO", "new_status": "TRANSFERIDO", "reason": "Mudança de escola" }, "reason": "Mudança de escola", "target_type": "App\\Models\\Enrollment", "target_id": "b2c3d4e5-...", "requested_by": "c3d4e5f6-...", "reviewed_by": null, "created_at": "2026-05-20T14:30:00-03:00", "reviewed_at": null, "enrollment": { "id": "b2c3d4e5-...", "number": "7.553", "status": "MATRICULADO", "student_name": "João da Silva", "classroom_name": "Turma A - 1º Ano" } }
api/admin-authorization
Listar autorizações pendentes
Retorna todas as autorizações administrativas com status PENDING
pertencentes à escola do usuário autenticado. Os itens são enriquecidos com os dados da matrícula alvo quando aplicável.
Regras de negócio
- Apenas autorizações com
status = PENDINGsão listadas. - O campo
enrollmenté incluído automaticamente para os tipos de matrícula. - Apenas usuários com papel
DIRECTORpodem acessar este endpoint.
Autenticação
Sessão autenticada da plataforma (cookie de sessão). Não utiliza cabeçalhos de parceiro.
Códigos de resposta
200
Lista de autorizações pendentes.
401
Sessão não autenticada.
403
Usuário não possui papel de direção.
[ { "id": "a1b2c3d4-...", "type": "ENROLLMENT_STATUS_UPDATE", "status": "PENDING", "payload": { /* ... */ }, "enrollment": { "id": "b2c3d4e5-...", "number": "7.553", "status": "MATRICULADO", "student_name": "João da Silva", "classroom_name": "Turma A - 1º Ano" } } ]
api/admin-authorization/{id}/approve
Executar autorização
Aprova e executa uma autorização pendente. A operação correspondente é realizada imediatamente
após a aprovação, conforme o type da autorização.
Parâmetros de rota
id
uuid
obrigatório
ID da autorização a ser executada.
Regras de negócio
- Apenas usuários com papel
DIRECTORpodem executar autorizações. - A autorização deve estar com
status = PENDING. - Após a aprovação, o campo
statusmuda paraAPPROVEDereviewed_by/reviewed_atsão preenchidos. - A operação subjacente é executada transacionalmente: se falhar, a autorização permanece pendente.
Operações executadas por tipo
ENROLLMENT_STATUS_UPDATE
Chama EnrollmentService::updateStatus() com o novo status do payload.
ENROLLMENT_FORCE_DELETE
Chama EnrollmentService::forceDeleteEnrollment(), removendo permanentemente o registro.
ENROLLMENT_REACTIVATION
Chama EnrollmentService::reactivateEnrollment(), restaurando uma matrícula excluída.
Códigos de resposta
200
Autorização executada com sucesso.
403
Usuário não possui papel de direção.
404
Autorização não encontrada.
409
Autorização não está mais pendente.
500
Falha ao executar a operação.
"Autorização executada com sucesso."
"Apenas a direção pode realizar esta operação."
api/admin-authorization/{id}/reject
Rejeitar autorização
Rejeita uma autorização pendente sem executar a operação subjacente. O status muda para
REJECTED e
o campo has_pending_authorization
da matrícula retorna a false.
Parâmetros de rota
id
uuid
obrigatório
ID da autorização a ser rejeitada.
Regras de negócio
- Apenas usuários com papel
DIRECTORpodem rejeitar autorizações. - A autorização deve estar com
status = PENDING. - A rejeição não altera nenhum dado da matrícula alvo — apenas cancela a solicitação.
- Após a rejeição, uma nova solicitação pode ser criada para a mesma matrícula.
Códigos de resposta
200
Autorização rejeitada com sucesso.
403
Usuário não possui papel de direção.
404
Autorização não encontrada.
409
Autorização não está mais pendente.
"Autorização rejeitada."
"Apenas a direção pode realizar esta operação."
Regras gerais do fluxo de autorização
Uma solicitação pendente por matrícula
Não é possível criar uma nova solicitação enquanto houver uma autorização com status = PENDING para a mesma matrícula. Qualquer tentativa retorna 409 Conflict.
Flag has_pending_authorization
Enquanto uma autorização estiver pendente para uma matrícula, o campo has_pending_authorization retornado nos endpoints de matrícula será true, impedindo novas operações conflitantes.
Apenas a direção decide
Somente usuários com o papel DIRECTOR podem executar (/approve) ou rejeitar (/reject) uma autorização. Secretários e coordenadores podem apenas solicitá-las.
Irreversibilidade após aprovação
Uma vez que uma autorização é executada (aprovada), a operação é realizada e não pode ser desfeita por este fluxo. Para reverter, é necessário criar uma nova solicitação do tipo adequado.