Disciplinas
As disciplinas representam as matérias oferecidas por uma escola. Use estes endpoints para listar, criar, editar e excluir disciplinas, opcionalmente vinculando-as a um componente da BNCC.
O modelo disciplina
O modelo disciplina identifica uma matéria oferecida por uma escola. Cada disciplina possui um nome único dentro da escola e pode opcionalmente estar vinculada a um componente da BNCC.
id
uuid
Identificador único da disciplina.
name
string
Nome da disciplina (até 50 caracteres).
abbreviation
string|null
Abreviação da disciplina (até 4 caracteres). Deve ser única dentro da escola. Exemplo: "MAT", "PORT".
color
string|null
Cor da disciplina em formato hexadecimal. Exemplo: "#4F46E5".
bncc_component_id
uuid|null
UUID do componente BNCC vinculado, quando aplicável.
school_cnpj
string
CNPJ da escola à qual a disciplina pertence.
{ "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "Matemática", "abbreviation": "MAT", "color": "#4F46E5", "bncc_component_id": "f9e8d7c6-...", "school_cnpj": "26019466000122" }
/v1/partners/school/{cnpj}/subjects/all
Listar disciplinas
Retorna todas as disciplinas de uma escola específica, identificada pelo CNPJ. A resposta é
paginada, com os registros em data.
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.
-H "X-Authorization: {api_token}" \
-H "X-Partner: {partner_token}" \
-H "X-Client: {client_slug}"
use GuzzleHttp\Client; $client = new Client(); $response = $client->get('https://toakiescola.com.br/api/v1/partners/school/26019466000122/subjects/all', [ 'headers' => [ 'X-Authorization' => '{api_token}', 'X-Partner' => '{partner_token}', 'X-Client' => '{client_slug}', ], ]);
const response = await fetch('https://toakiescola.com.br/api/v1/partners/school/26019466000122/subjects/all', { headers: { 'X-Authorization': '{api_token}', 'X-Partner': '{partner_token}', 'X-Client': '{client_slug}', }, });
{ "data": [ { "id": "a1b2c3d4-...", "name": "Matemática", "abbreviation": "MAT", "color": "#4F46E5", "bncc_component_id": null, "school_cnpj": "26019466000122" } ], "links": { /* URLs de paginação */ }, "meta": { /* metadados */ } }
{ "message": "Autenticação inválida." }
{ "message": "Recurso não encontrado." }
/v1/partners/school/{cnpj}/subject/{id}
Obter disciplina
Retorna os dados de uma disciplina específica.
Parâmetros de rota
cnpj
string
obrigatório
CNPJ da escola (14 dígitos, sem formatação).
id
string
obrigatório
UUID da disciplina.
Códigos de resposta
200
Sucesso.
404
Escola ou disciplina não encontrada.
-H "X-Authorization: {api_token}"
$client->get('.../subject/{id}');
await fetch('.../subject/{id}');
{ "data": { "id": "a1b2c3d4-e5f6-7890-ab12-cd34ef567890", "name": "Matemática", "abbreviation": "MAT", "color": "#4F46E5", "bncc_component_id": null, "school_cnpj": "26019466000122" } }
{ "message": "Autenticação inválida." }
{ "message": "Escola ou disciplina não encontrada." }
/v1/partners/school/{cnpj}/subject
Criar disciplina
Cria uma nova disciplina em uma escola. O nome deve ser único dentro da escola.
Parâmetros do corpo
name
string
obrigatório
Nome da disciplina (até 50 caracteres).
abbreviation
string
obrigatório
Abreviação da disciplina (até 4 caracteres). Deve ser única dentro da escola. Exemplo: "MAT".
color
string
opcional
Cor da disciplina em formato hexadecimal. Exemplo: "#4F46E5".
bncc_component_id
uuid
opcional
UUID do componente BNCC (opcional).
Códigos de resposta
200
Disciplina criada com sucesso.
400
Erros de validação.
404
Escola não encontrada.
409
Já existe uma disciplina com este nome ou abreviação na escola.
-X POST \
-H "X-Authorization: {api_token}" \
-H "Content-Type: application/json" \
-d '{"name":"Matemática"}'
$client->post('.../subject', [ 'json' => ['name' => 'Matemática'], ]);
await fetch('.../subject', { method: 'POST', body: JSON.stringify({ name: 'Matemática' }), });
{ "data": { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "Matemática", "abbreviation": "MAT", "color": "#4F46E5", "bncc_component_id": null, "school_cnpj": "26019466000122" } }
{ "success": false, "errors": [ /* mensagens de validação */ ] }
{ "message": "Escola não encontrada." }
{ "message": "Já existe uma disciplina com este nome ou abreviação na escola." }
/v1/partners/school/{cnpj}/subject/{id}
Editar disciplina
Atualiza os dados de uma disciplina. Todos os campos são opcionais; envie apenas os que deseja alterar.
Parâmetros do corpo
name
string
opcional
Novo nome da disciplina (até 50 caracteres).
abbreviation
string
opcional
Nova abreviação da disciplina (até 4 caracteres). Deve ser única dentro da escola. Envie null para remover.
color
string
opcional
Nova cor em formato hexadecimal. Envie null para remover.
bncc_component_id
uuid
opcional
UUID do componente BNCC (envie null para desvincular).
Códigos de resposta
200
Sucesso.
404
Escola ou disciplina não encontrada.
409
Já existe outra disciplina com este nome ou abreviação na escola.
-X PUT \
-H "X-Authorization: {api_token}" \
-d '{"name":"Matemática II"}'
$client->put('.../subject/{id}', ['json' => ['name' => 'Matemática II']]);
await fetch('.../subject/{id}', { method: 'PUT', body: JSON.stringify({ name: 'Matemática II' }) });
{ "data": { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "Matemática II", "abbreviation": "MAT", "color": "#4F46E5", "bncc_component_id": null, "school_cnpj": "26019466000122" } }
{ "message": "Escola ou disciplina não encontrada." }
{ "message": "Já existe outra disciplina com este nome ou abreviação na escola." }
/v1/partners/school/{cnpj}/subject/{id}
Excluir disciplina
Remove uma disciplina da escola. A operação é irreversível. Não é possível excluir uma disciplina que esteja vinculada a uma série, a um professor ou à matriz de horários de uma turma.
Códigos de resposta
200
Disciplina excluída com sucesso.
404
Escola ou disciplina não encontrada.
409
A disciplina está em uso (vinculada a série ou professor) e não pode ser removida.
-X DELETE \
-H "X-Authorization: {api_token}"
$client->delete('.../subject/{id}');
await fetch('.../subject/{id}', { method: 'DELETE' });
{ "success": true }
{ "message": "Escola ou disciplina não encontrada." }
{ "message": "A disciplina está em uso (vinculada a série ou professor) e não pode ser removida." }