Conselho de Classe

Os endpoints de conselho de classe permitem criar, consultar e gerenciar os conselhos de classe de uma turma. Cada conselho é vinculado a uma turma de uma escola do seu cliente e a um período letivo, passando pelos estágios de rascunho, encerrado e homologado. Professores registram observações por aluno; coordenadores consolidam a situação pedagógica e detectam divergências.

Permissões

O acesso aos endpoints depende de permissões atribuídas ao usuário autenticado.

Permissão Professor Coordenador Diretor
view class council
create class council
edit class council
observe class council
close class council
homologate class council
delete class council
restore class council
Status do conselho
# Ciclo de vida do conselho

rascunho     encerrado    homologado

# Quem pode cada transição?
rascunho → encerrado:   coordenador / diretor
encerrado → homologado: diretor

O modelo conselho de classe

Representa um conselho de classe de uma turma para um período letivo.

id string (uuid)

Identificador único do conselho.

classroom_id string (uuid)

Identificador da turma.

created_by string (uuid)

Identificador do usuário que criou o conselho.

periodo integer (1–4)

Período letivo do conselho (bimestre/trimestre).

data_reuniao date | null

Data da reunião do conselho (Y-m-d).

status string

Status: rascunho, encerrado ou homologado.

ata string | null

Texto da ata do conselho.

encerrado_por string | null

Identificador do usuário que encerrou o conselho.

encerrado_em datetime | null

Data e hora do encerramento.

homologado_por string | null

Identificador do usuário que homologou o conselho.

homologado_em datetime | null

Data e hora da homologação.

created_at datetime

Data e hora de criação.

updated_at datetime

Data e hora da última atualização.

Modelo conselho de classe
{
  "id": "a1b2c3d4-e5f6-7890-ab12-cd34ef567890",
  "classroom_id": "b2c3d4e5-f6a7-8901-bc23-de45fa678901",
  "created_by": "c3d4e5f6-a7b8-9012-cd34-ef56ab789012",
  "periodo": 2,
  "data_reuniao": "2026-06-15",
  "status": "rascunho",
  "ata": null,
  "encerrado_por": null,
  "encerrado_em": null,
  "homologado_por": null,
  "homologado_em": null,
  "created_at": "2026-05-20 14:30:00",
  "updated_at": "2026-05-20 14:30:00"
}
GET /v1/partners/school/{cnpj}/class-councils/all

Listar conselhos de classe

Retorna os conselhos de classe da escola identificada pelo CNPJ. Requer permissão view class council.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

Códigos de resposta

200

Sucesso.

401

Autenticação inválida.

404

Escola não encontrada.

Requisição GET
GET /v1/partners/school/{cnpj}/class-councils/all
curl https://toakiescola.com.br/api/v1/partners/school/26019466000122/class-councils/all \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
[
  {
    "id": "a1b2c3d4-e5f6-7890-ab12-cd34ef567890",
    "classroom_id": "b2c3d4e5-f6a7-8901-bc23-de45fa678901",
    "periodo": "2",
    "status": "rascunho",
    // ...
  }
]
GET /v1/partners/school/{cnpj}/class-council/{id}

Consultar conselho de classe

Retorna os detalhes de um conselho de classe, incluindo assessments dos alunos e observações dos professores. Requer permissão view class council.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id string (uuid) obrigatório

Identificador do conselho de classe.

Códigos de resposta

200

Sucesso.

401

Autenticação inválida.

404

Escola ou conselho não encontrado.

Requisição GET
GET /v1/partners/school/{cnpj}/class-council/{id}
curl https://toakiescola.com.br/api/v1/partners/school/26019466000122/class-council/a1b2c3d4-e5f6-7890-ab12-cd34ef567890 \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "id": "a1b2c3d4-e5f6-7890-ab12-cd34ef567890",
  "classroom_id": "b2c3d4e5-f6a7-8901-bc23-de45fa678901",
  "periodo": "2",
  "status": "rascunho",
  "data_reuniao": "2026-06-15",
  "ata": null,
  // ...
}
POST /v1/partners/school/{cnpj}/class-council

Criar conselho de classe

Cria um novo conselho de classe com status rascunho. Assessments são criados automaticamente para todos os alunos matriculados na turma. Requer permissão create class council.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

Corpo da requisição

classroom_id string (uuid) obrigatório

Identificador da turma.

periodo string obrigatório

Período letivo do conselho (ex: "1", "2", "3", "4").

data_reuniao date | null opcional

Data da reunião no formato Y-m-d.

Códigos de resposta

201

Criado com sucesso.

422

Dados inválidos.

401

Autenticação inválida.

404

Escola ou turma não encontrada.

Requisição POST
POST /v1/partners/school/{cnpj}/class-council
curl https://toakiescola.com.br/api/v1/partners/school/26019466000122/class-council \
  -X POST \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}" \
  -H "Content-Type: application/json" \
  -d '{"classroom_id":"b2c3d4e5-f6a7-8901-bc23-de45fa678901","periodo":"2","data_reuniao":"2026-06-15"}'
Resposta
{
  "id": "a1b2c3d4-e5f6-7890-ab12-cd34ef567890",
  "classroom_id": "b2c3d4e5-f6a7-8901-bc23-de45fa678901",
  "periodo": "2",
  "status": "rascunho",
  "data_reuniao": "2026-06-15",
  "ata": null
}
PUT /v1/partners/school/{cnpj}/class-council/{id}

Atualizar conselho de classe

Atualiza os dados de um conselho de classe em rascunho, incluindo ata e assessments dos alunos. Requer permissão edit class council.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id string (uuid) obrigatório

Identificador do conselho de classe.

Corpo da requisição

data_reuniao date | null opcional

Data da reunião no formato Y-m-d.

ata string | null opcional

Texto da ata do conselho.

assessments array opcional

Lista de assessments de alunos para atualizar. Cada item aceita: student_id (obrigatório), situacao, parecer, observacoes.

Códigos de resposta

200

Atualizado com sucesso.

422

Dados inválidos.

401

Autenticação inválida.

404

Escola ou conselho não encontrado.

Requisição PUT
PUT /v1/partners/school/{cnpj}/class-council/{id}
curl https://toakiescola.com.br/api/v1/partners/school/26019466000122/class-council/a1b2c3d4-e5f6-7890-ab12-cd34ef567890 \
  -X PUT \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}" \
  -H "Content-Type: application/json" \
  -d '{"ata":"Reunião realizada...","assessments":[{"student_id":"...","situacao":"aprovado"}]}'
Resposta
{
  "id": "a1b2c3d4-e5f6-7890-ab12-cd34ef567890",
  "status": "rascunho",
  "ata": "Reunião realizada...",
  // ...
}
GET /v1/partners/school/{cnpj}/class-council/{id}/student/{student_id}/observation

Consultar observação do professor

Retorna a observação registrada por um professor sobre um aluno específico no conselho. Retorna null se nenhuma observação foi registrada. Requer permissão observe class council.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id string (uuid) obrigatório

Identificador do conselho de classe.

student_id string (uuid) obrigatório

Identificador do aluno.

Códigos de resposta

200

Sucesso. Retorna a observação ou null.

401

Autenticação inválida.

404

Escola ou conselho não encontrado.

Requisição GET
GET /v1/partners/school/{cnpj}/class-council/{id}/student/{student_id}/observation
curl https://toakiescola.com.br/api/v1/partners/school/26019466000122/class-council/{id}/student/{student_id}/observation \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "id": "f6a7b8c9-d0e1-2345-fa67-bc89de012345",
  "student_id": "d4e5f6a7-b8c9-0123-de45-fa67bc890123",
  "teacher_id": "c3d4e5f6-a7b8-9012-cd34-ef56ab789012",
  "subject_name": "Matemática",
  "sentimento": "POSITIVO",
  "is_critical": false,
  "observation": "Excelente desempenho.",
  "dificuldades": null,
  "encaminhamentos": null
}
POST /v1/partners/school/{cnpj}/class-council/{id}/observation

Registrar observação do professor

Registra ou atualiza a observação de um professor sobre um aluno no conselho. Quando sentimentos conflitantes (POSITIVO e NEGATIVO) são detectados entre professores para o mesmo aluno, o campo has_divergence do assessment é marcado como divergência pedagógica. Requer permissão observe class council.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id string (uuid) obrigatório

Identificador do conselho de classe.

Corpo da requisição

student_id string (uuid) obrigatório

Identificador do aluno.

teacher_id string (uuid) obrigatório

Identificador do professor.

subject_name string obrigatório

Nome da disciplina do professor.

observation string obrigatório

Observação geral do professor sobre o aluno.

sentimento string obrigatório

Sentimento do professor: POSITIVO, NEUTRO ou NEGATIVO.

is_critical boolean obrigatório

Indica se o caso é crítico.

dificuldades string | null opcional

Dificuldades observadas no aluno.

encaminhamentos string | null opcional

Encaminhamentos e recomendações pedagógicas.

Códigos de resposta

200

Observação registrada/atualizada com sucesso.

422

Dados inválidos.

401

Autenticação inválida.

404

Escola ou conselho não encontrado.

Requisição POST
POST /v1/partners/school/{cnpj}/class-council/{id}/observation
curl https://toakiescola.com.br/api/v1/partners/school/26019466000122/class-council/{id}/observation \
  -X POST \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}" \
  -H "Content-Type: application/json" \
  -d '{"student_id":"...","teacher_id":"...","subject_name":"Matemática","observation":"...","sentimento":"POSITIVO","is_critical":false}'
Resposta
{
  "id": "f6a7b8c9-d0e1-2345-fa67-bc89de012345",
  "student_id": "d4e5f6a7-b8c9-0123-de45-fa67bc890123",
  "teacher_id": "c3d4e5f6-a7b8-9012-cd34-ef56ab789012",
  "subject_name": "Matemática",
  "sentimento": "POSITIVO",
  "is_critical": false,
  "observation": "Excelente desempenho.",
  "dificuldades": null,
  "encaminhamentos": null
}
POST /v1/partners/school/{cnpj}/class-council/{id}/close

Encerrar conselho de classe

Transiciona o conselho do status rascunho para encerrado. Somente conselhos em rascunho podem ser encerrados. Requer permissão close class council.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id string (uuid) obrigatório

Identificador do conselho de classe.

Códigos de resposta

200

Encerrado com sucesso.

422

O conselho precisa estar em rascunho para ser encerrado.

401

Autenticação inválida.

404

Escola ou conselho não encontrado.

Requisição POST
POST /v1/partners/school/{cnpj}/class-council/{id}/close
curl https://toakiescola.com.br/api/v1/partners/school/26019466000122/class-council/{id}/close \
  -X POST \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "id": "a1b2c3d4-e5f6-7890-ab12-cd34ef567890",
  "status": "encerrado",
  // ...
}
POST /v1/partners/school/{cnpj}/class-council/{id}/homologate

Homologar conselho de classe

Transiciona o conselho do status encerrado para homologado. Somente conselhos encerrados podem ser homologados. Requer permissão homologate class council.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id string (uuid) obrigatório

Identificador do conselho de classe.

Códigos de resposta

200

Homologado com sucesso.

422

O conselho precisa estar encerrado para ser homologado.

401

Autenticação inválida.

404

Escola ou conselho não encontrado.

Requisição POST
POST /v1/partners/school/{cnpj}/class-council/{id}/homologate
curl https://toakiescola.com.br/api/v1/partners/school/26019466000122/class-council/{id}/homologate \
  -X POST \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "id": "a1b2c3d4-e5f6-7890-ab12-cd34ef567890",
  "status": "homologado",
  // ...
}
DELETE /v1/partners/school/{cnpj}/class-council/{id}

Excluir conselho de classe

Remove permanentemente um conselho de classe. Requer permissão delete class council.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id string (uuid) obrigatório

Identificador do conselho de classe.

Códigos de resposta

200

Excluído com sucesso.

401

Autenticação inválida.

404

Escola ou conselho não encontrado.

Requisição DELETE
DELETE /v1/partners/school/{cnpj}/class-council/{id}
curl https://toakiescola.com.br/api/v1/partners/school/26019466000122/class-council/{id} \
  -X DELETE \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "success": true
}