Data models
Structures used in request bodies and responses. Required fields are always present; "or null" means the value can be null.
AceitarConviteInput
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
token | string | yes | 20–200 characters | |
senha | Senha | yes | ||
nationality | string | no | 2–2 characters; ^[A-Za-z]{2}$ | |
locale | "pt-BR" | "es" | "en-US" | no | ||
aceites | list of object | no | 0–4 items; default: [] | Accepted terms (version of the current document). |
aceites[].documento | "TERMO_USO" | "POLITICA_PRIVACIDADE" | yes | ||
aceites[].versao | string | yes | 1–20 characters |
AtividadeAtualizar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
data | Data | no | ||
atividadeProfissionalId | string (uuid) or null | no | ||
horaInicio | Hora or null | no | ||
horaFim | Hora or null | no | ||
descricao | string or null | no | to 2000 characters | |
observacoes | string or null | no | to 5000 characters | |
local | string or null | no | to 500 characters | |
obrigatoria | boolean | no | ||
cancelada | boolean | no | ||
cercaAtiva | boolean | no | ||
cercaRaioM | integer or null | no | 10…5000 | |
lat | number or null | no | -90…90 | |
lng | number or null | no | -180…180 |
AtividadeCriar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
data | Data | yes | ||
atividadeProfissionalId | string (uuid) or null | no | ||
horaInicio | Hora or null | no | ||
horaFim | Hora or null | no | ||
descricao | string or null | no | to 2000 characters | |
observacoes | string or null | no | to 5000 characters | |
local | string or null | no | to 500 characters | |
obrigatoria | boolean | no | ||
cancelada | boolean | no | ||
cercaAtiva | boolean | no | ||
cercaRaioM | integer or null | no | 10…5000 | |
lat | number or null | no | -90…90 | |
lng | number or null | no | -180…180 |
AtividadeDto
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
turmaId | string (uuid) | yes | ||
data | Data | yes | ||
horaInicio | Hora or null | yes | ||
horaFim | Hora or null | yes | ||
atividadeProfissionalId | string (uuid) or null | yes | ||
atividadeProfissionalNome | string or null | yes | Catalog item name (for lists and screens that do not load the catalog). | |
descricao | string or null | yes | ||
observacoes | string or null | yes | ||
local | string or null | yes | ||
obrigatoria | boolean | yes | ||
cancelada | boolean | yes | ||
cercaAtiva | boolean | yes | ||
cercaRaioM | integer or null | yes | ||
lat | number or null | yes | ||
lng | number or null | yes | ||
comPresencas | boolean | yes | Attendance already exists: date and time are locked. |
AtividadeProfissionalAtualizar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
nome | string | no | 1–200 characters | |
descricao | string or null | no | to 2000 characters | |
ativo | boolean | no |
AtividadeProfissionalCriar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
nome | string | yes | 1–200 characters | |
descricao | string or null | no | to 2000 characters |
AtividadeProfissionalDto
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
disciplinaId | string (uuid) | yes | ||
nome | string | yes | ||
descricao | string or null | yes | ||
ativo | boolean | yes | ||
atividades | integer | yes | How many activities (occurrences) point to the item. |
AtividadeProfissionalMesclar
Merge: the activities of the source item move to the target and the source is deactivated (nothing is deleted).
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
destinoId | string (uuid) | yes |
AtividadesProfissionais
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of AtividadeProfissionalDto | yes |
AuditoriaEstatisticas
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
de | Data | yes | ||
ate | Data | yes | ||
total | integer | yes | 0… | |
porAcao | list of object | yes | ||
porAcao[].acao | string | yes | ||
porAcao[].total | integer | yes | 0… | |
porDia | list of object | yes | ||
porDia[].dia | Data | yes | ||
porDia[].total | integer | yes | 0… |
AuditoriaItem
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
criadoEm | string | yes | ||
acao | string | yes | ||
entidade | string | yes | ||
entidadeId | string or null | yes | ||
instituicaoId | string or null | yes | ||
instituicaoSigla | string or null | yes | ||
ator | object or null | yes | Who did it: only the id and display name. Null = the system itself or an already deleted account (anonymised accounts appear as “Person removed”). | |
ator.id | string (uuid) | yes | ||
ator.nome | string | yes | ||
dados | object | yes | Event details, already filtered: fields that could hold free text are left out. | |
omitidos | integer | yes | 0… | How many detail fields were omitted because they could hold free text. |
AuditoriaPagina
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of AuditoriaItem | yes | ||
proximo | string or null | yes |
AutoavaliacaoDoAluno
Student view: the window is the final-feedback one; podeEscrever = window open and enrollment active. minha is the only self-assessment the student sees (their own), even after the deadline.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
turma | object | yes | ||
turma.id | string (uuid) | yes | ||
turma.nome | string | yes | ||
janela | JanelaFeedback | yes | ||
podeEscrever | boolean | yes | ||
criterios | list of CriterioDto | yes | ||
minha | AutoavaliacaoDto or null | yes |
AutoavaliacaoDto
The student's final self-assessment; it is here because the staff screen shows it alongside the final feedback.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
matriculaId | string (uuid) | yes | ||
comentario | string | yes | ||
notas | list of object | yes | ||
notas[].criterioId | string (uuid) | yes | ||
notas[].valor | integer or null | yes | ||
criadoEm | string | yes | ||
atualizadoEm | string | yes |
AutoavaliacaoEscrever
The student's final self-assessment: their own grade for each active criterion of the discipline (or null = “not applicable”, only where the criterion allows it) and a required comment. Only the student writes it, during the final-feedback window.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
notas | list of object | yes | 0–200 items | |
notas[].criterioId | string (uuid) | yes | ||
notas[].valor | integer or null | yes | ||
comentario | string | yes | 1–4000 characters |
AvaliacaoMatricula
Grades and final assessment of one enrollment. For the student, before notasVisiveisEm, liberada is false and presencas and avaliacaoFinal are empty. Those who assess the class always see everything. rotulo: the criterion rubric label for that value, in the requested language (null without a rubric or “not applicable”).
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
matriculaId | string (uuid) | yes | ||
turma | object | yes | ||
turma.id | string (uuid) | yes | ||
turma.nome | string | yes | ||
aluno | object | yes | ||
aluno.id | string (uuid) | yes | ||
aluno.nome | string | yes | ||
liberada | boolean | yes | ||
notasVisiveisEm | Data or null | yes | ||
criterios | list of object | yes | ||
criterios[].id | string (uuid) | yes | ||
criterios[].nome | string | yes | ||
criterios[].notaMin | integer | yes | ||
criterios[].notaMax | integer | yes | ||
criterios[].ativo | boolean | yes | ||
presencas | list of object | yes | ||
presencas[].presencaId | string (uuid) | yes | ||
presencas[].atividade | object | yes | ||
presencas[].atividade.id | string (uuid) | yes | ||
presencas[].atividade.data | Data | yes | ||
presencas[].atividade.descricao | string or null | yes | ||
presencas[].notas | list of object | yes | ||
presencas[].notas[].criterioId | string (uuid) | yes | ||
presencas[].notas[].valor | integer or null | yes | ||
presencas[].notas[].rotulo | string or null | yes | ||
presencas[].nivelSupervisao | NivelSupervisao or null | no | ||
avaliacaoFinal | object or null | yes | ||
avaliacaoFinal.texto | string | yes | ||
avaliacaoFinal.em | string or null | yes | ||
avaliacaoFinal.por | object or null | no | ||
avaliacaoFinal.por.id | string (uuid) | yes | ||
avaliacaoFinal.por.nome | string | yes |
AvaliarPresenca
notas only applies when confirming: rejecting has no grade. Absent = keeps existing grades; present (even empty) = replaces the whole set.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
estado | "CONFIRMADA" | "REJEITADA" | yes | ||
comentario | string or null | no | to 2000 characters | |
notas | list of Nota | no | 0–20 items | |
nivelSupervisao | NivelSupervisao or null | no | Absent = keeps what was there; null = clears; only applies when confirming. |
Cockpit
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
aluno | CockpitAluno or null | yes | ||
avaliador | CockpitAvaliador or null | yes | ||
gestao | CockpitGestao or null | yes |
CockpitAluno
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
instituicoes | list of object | no | Institutions where the person has an enrollment (active or past): always all of them, even with the instituicaoId filter. May be missing on older servers. | |
instituicoes[].id | string (uuid) | yes | ||
instituicoes[].sigla | string | yes | ||
instituicoes[].nome | string | yes | ||
proximas | list of object | yes | Upcoming activities (from today on, in the institution's time zone), with the status of the attendance request. | |
proximas[].id | string (uuid) | yes | ||
proximas[].data | Data | yes | ||
proximas[].horaInicio | Hora or null | yes | ||
proximas[].horaFim | Hora or null | yes | ||
proximas[].descricao | string or null | yes | ||
proximas[].turma | object | yes | ||
proximas[].turma.id | string (uuid) | yes | ||
proximas[].turma.nome | string | yes | ||
proximas[].disciplina | object | yes | ||
proximas[].disciplina.id | string (uuid) | yes | ||
proximas[].disciplina.sigla | string | yes | ||
proximas[].disciplina.nome | string | yes | ||
proximas[].estado | "NAO_SOLICITADA" | "SOLICITADA" | "CONFIRMADA" | "REJEITADA" | yes | ||
proximas[].obrigatoria | boolean | no | ||
proximas[].janela | object | no | ||
proximas[].janela.abre | string or null | yes | ||
proximas[].janela.fecha | string or null | yes | ||
proximas[].janela.fase | "antes" | "aberta" | "encerrada" | yes | ||
proximas[].janela.fuso | string | no | ||
semPedido | integer | yes | Activities from the last 30 days that have passed and have no attendance request yet. | |
rejeitadas | integer | yes | Requests rejected in the last 60 days: the person can redo them. | |
frequencia | object | yes | confirmadas and realizadas count all activities (the “X of N” on the home screen); percentual considers mandatory ones only. | |
frequencia.confirmadas | integer | yes | ||
frequencia.realizadas | integer | yes | ||
frequencia.percentual | number or null | yes | ||
turmas | list of object | yes | Grades per class. They only carry values after the class releases them; before that, liberada is false and criterios is empty. | |
turmas[].turma | object | yes | ||
turmas[].turma.id | string (uuid) | yes | ||
turmas[].turma.nome | string | yes | ||
turmas[].disciplina | object | yes | ||
turmas[].disciplina.id | string (uuid) | yes | ||
turmas[].disciplina.sigla | string | yes | ||
turmas[].disciplina.nome | string | yes | ||
turmas[].liberada | boolean | yes | ||
turmas[].feedbackFinalLiberado | boolean | yes | ||
turmas[].autoavaliacaoAberta | boolean | yes | ||
turmas[].autoavaliacaoEnviada | boolean | yes | ||
turmas[].criterios | list of object | yes | ||
turmas[].criterios[].criterioId | string (uuid) | yes | ||
turmas[].criterios[].nome | string | yes | ||
turmas[].criterios[].notaMin | integer | yes | ||
turmas[].criterios[].notaMax | integer | yes | ||
turmas[].criterios[].media | number | yes | ||
turmas[].criterios[].quantidade | integer | yes |
CockpitAvaliador
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
pendentes | integer | yes | ||
comExcecao | integer | yes | Pending requests outside the window or the geofence (exception queue). | |
atividadesHoje | integer | yes | Today's activities in the classes the person assesses. | |
turmas | list of object | yes | Classes with requests waiting, fullest first (up to 10). | |
turmas[].turma | object | yes | ||
turmas[].turma.id | string (uuid) | yes | ||
turmas[].turma.nome | string | yes | ||
turmas[].disciplina | object | yes | ||
turmas[].disciplina.id | string (uuid) | yes | ||
turmas[].disciplina.sigla | string | yes | ||
turmas[].disciplina.nome | string | yes | ||
turmas[].pendentes | integer | yes | ||
turmas[].comExcecao | integer | yes | Pending requests outside the window or the geofence (exception queue). | |
feedbackFinal | object | yes | Final feedback still to write: in classes the person assesses whose deadline is open, students (other than themselves) without their feedback. Most urgent (nearest deadline) first, up to 10 classes. | |
feedbackFinal.pendentes | integer | yes | ||
feedbackFinal.turmas | list of object | yes | Classes with requests waiting, fullest first (up to 10). | |
feedbackFinal.turmas[].turma | object | yes | ||
feedbackFinal.turmas[].disciplina | object | yes | ||
feedbackFinal.turmas[].ate | Data | yes | ||
feedbackFinal.turmas[].pendentes | integer | yes |
CockpitGestao
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
instituicoes | integer | yes | ||
disciplinas | integer | yes | ||
turmas | integer | yes | ||
alunos | integer | yes | ||
semCriterios | list of object | yes | Active disciplines with no active criterion: nobody can grade them (up to 5; the total is in semCriteriosTotal). | |
semCriterios[].id | string (uuid) | yes | ||
semCriterios[].sigla | string | yes | ||
semCriterios[].nome | string | yes | ||
semCriteriosTotal | integer | yes | ||
pendencias | list of object | yes | Active classes not yet ready to receive attendance, by reason: no centre (the geofence has no reference), no activity from today on, no student, or a student who has not accepted the invitation. Up to 5 classes per reason; the total is in total. Classes and counts only, no person names. | |
pendencias[].tipo | "SEM_CENTRO" | "SEM_ATIVIDADE" | "SEM_ALUNOS" | "CONVITE_PENDENTE" | yes | ||
pendencias[].total | integer | yes | ||
pendencias[].turmas | list of object | yes | ||
pendencias[].turmas[].turma | object | yes | ||
pendencias[].turmas[].disciplina | object | yes | ||
listaTurmas | object | no | Status of each active class in scope (the same ones counted in turmas), by discipline code and class name, up to 50 (the total is in total): how many activities today and which pending items it has, with the same rules as pendencias. semCriterio: the discipline has no active criterion (blocks assessment). Ids, codes and counts only. May be missing on older servers. | |
listaTurmas.total | integer | yes | ||
listaTurmas.itens | list of object | yes | ||
listaTurmas.itens[].id | string (uuid) | yes | ||
listaTurmas.itens[].nome | string | yes | ||
listaTurmas.itens[].disciplina | object | yes | ||
listaTurmas.itens[].atividadesHoje | integer | yes | ||
listaTurmas.itens[].pendencias | list of "SEM_CENTRO" | "SEM_ATIVIDADE" | "SEM_ALUNOS" | "CONVITE_PENDENTE" | yes | Active classes not yet ready to receive attendance, by reason: no centre (the geofence has no reference), no activity from today on, no student, or a student who has not accepted the invitation. Up to 5 classes per reason; the total is in total. Classes and counts only, no person names. | |
listaTurmas.itens[].semCriterio | boolean | yes |
ConfirmarLote
Batch confirmation: only pending requests, without exceptions, with no grades or comment (those stay in individual assessment). All or nothing: if one item fails, none is saved.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
ids | list of string (uuid) | yes | 1–100 items |
ConfirmarLoteResultado
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of PresencaDto | yes |
ContadorNotificacoes
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
naoLidas | integer | yes | 0… |
ContatoSite
The website contact form (no sign-in). site is a honeypot field: invisible to people using the form; a bot that fills everything fills it too, and the API silently drops the submission.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
nome | string | no | to 120 characters | |
email | yes | |||
telefone | string | no | to 30 characters | |
mensagem | string | yes | 20–2000 characters | |
site | string | no | to 200 characters |
ConversaPagina
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
turma | object | yes | ||
turma.id | string (uuid) | yes | ||
turma.nome | string | yes | ||
turma.disciplinaNome | string | yes | ||
turma.ativa | boolean | yes | ||
itens | list of MensagemDto | yes | Oldest to newest. | |
anteriores | string or null | yes | Cursor to fetch earlier messages; null = reached the beginning. | |
podeEscrever | boolean | yes | ||
podeModerar | boolean | yes | ||
alteradas | list of MensagemDto | yes | Messages edited or removed since alteradasDesde (for polling): the client replaces the ones it has. | |
agora | string | yes | Server clock at read time (use it as the next alteradasDesde). |
CriterioAtualizar
Only what can change later: names, descriptions, order and active flag. Sending the key or scale is an error (400); it is not silently ignored.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
nomes | object | no | ||
nomes.pt-BR | string | no | 1–120 characters | |
nomes.es | string | no | 1–120 characters | |
nomes.en-US | string | no | 1–120 characters | |
descricoes | CriterioDescricoes | no | ||
rubricas | CriterioRubricas | no | ||
ordem | integer | no | 0…999 | |
ativo | boolean | no |
CriterioCriar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chave | string | yes | ^[a-z][a-z0-9_]{1,39}$ | |
notaMin | integer | yes | 0…99 | |
notaMax | integer | yes | 1…100 | |
permiteNa | boolean | no | default: false | |
ordem | integer | no | 0…999 | |
nomes | CriterioNomes | yes | ||
descricoes | CriterioDescricoes | no | ||
rubricas | CriterioRubricas | no |
CriterioDescricoes
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
pt-BR | string | no | to 300 characters | |
es | string | no | to 300 characters | |
en-US | string | no | to 300 characters |
CriterioDto
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
disciplinaId | string (uuid) | yes | ||
chave | string | yes | ||
notaMin | integer | yes | ||
notaMax | integer | yes | ||
permiteNa | boolean | yes | ||
ordem | integer | yes | ||
ativo | boolean | yes | ||
nome | string | yes | Name in the requester's language (falls back to Portuguese, then any language). | |
nomes | object | yes | All registered names, per language (for editing). | |
descricao | string | yes | How-to-assess description in the requester's language (falls back to Portuguese; empty if none). | |
descricoes | object | yes | All registered descriptions, per language (for editing). | |
rubrica | Rubrica | yes | Rubric in the requester's language (falls back to Portuguese; empty if none). | |
rubricas | object | yes | All registered rubrics, per language (for editing). |
CriterioNomes
Criterion name per language. Portuguese is required on creation; the others fall back to Portuguese if missing.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
pt-BR | string | yes | 1–120 characters | |
es | string | no | 1–120 characters | |
en-US | string | no | 1–120 characters |
CriterioRubricas
Rubric per language on create and edit. null clears that language's rubric.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
pt-BR | Rubrica or null | no | ||
es | Rubrica or null | no | ||
en-US | Rubrica or null | no |
Criterios
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of CriterioDto | yes |
Data
Calendar date YYYY-MM-DD, valid in the calendar.
string — ^\d{4}-\d{2}-\d{2}$
DisciplinaAtualizar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
sigla | string | no | ^[A-Za-z0-9][A-Za-z0-9._-]{0,14}$ | |
nome | string | no | 1–200 characters | |
ementa | string or null | no | to 10000 characters | |
semanas | integer or null | no | 1…520 | |
ativo | boolean | no |
DisciplinaCriar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
sigla | string | yes | ^[A-Za-z0-9][A-Za-z0-9._-]{0,14}$ | |
nome | string | yes | 1–200 characters | |
ementa | string or null | no | to 10000 characters | |
semanas | integer or null | no | 1…520 |
DisciplinaDto
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
instituicaoId | string (uuid) | yes | ||
sigla | string | yes | ||
nome | string | yes | ||
ementa | string or null | yes | ||
semanas | integer or null | yes | ||
ativo | boolean | yes |
DispositivoRegistrar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
token | string | yes | 8–4096 characters; ^[\x21-\x7E]+$ | |
plataforma | "IOS" | "ANDROID" | "WEB" | yes |
DispositivoRemover
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
token | string | yes | 8–4096 characters; ^[\x21-\x7E]+$ |
Email
Login email: trimmed and lower-case.
string — to 254 characters; ^[^\s@]+@[^\s@]+\.[^\s@]+$
EncerrarOutrasResultado
Response of “end all the others”: how many connections were ended.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
encerradas | integer | yes | 0… |
EquipeCriar
A new staff member: creates the user (or reuses it by email) and gives the binding. The invitation is sent by email.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
email | yes | |||
nome | string | yes | 1–200 characters | |
nationality | string or null | no | 2–2 characters; ^[A-Za-z]{2}$ | |
locale | "pt-BR" | "es" | "en-US" or null | no | ||
papel | "CURADOR" | "PRECEPTOR" | "COORDENADOR" | "PROFESSOR" | "AUXILIAR" | yes | ||
disciplinaId | string (uuid) or null | no | ||
turmaId | string (uuid) or null | no | ||
podeAvaliar | boolean | no | default: false | |
podeCadastrar | boolean | no | default: false |
ErroApi
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
code | "VALIDATION_FAILED" | "UNAUTHENTICATED" | "FORBIDDEN" | "NOT_FOUND" | "METHOD_NOT_ALLOWED" | "CONFLICT" | "PAYLOAD_TOO_LARGE" | "UNPROCESSABLE" | "RATE_LIMITED" | "TOKEN_INVALID" | "EXCEPTION_REQUIRED" | "ACTIVITY_CANCELLED" | "ALREADY_CONFIRMED" | "NOT_PENDING" | "EXCEPTION_REVIEW_REQUIRED" | "BATCH_REJECTED" | "FEEDBACK_CLOSED" | "LAST_ADMIN" | "LAST_CURATOR" | "INTERNAL" | yes | ||
fields | object | no | ||
excecoes | list of string | no | ||
falhas | list of object | no | ||
falhas[].id | string | yes | ||
falhas[].code | "VALIDATION_FAILED" | "UNAUTHENTICATED" | "FORBIDDEN" | "NOT_FOUND" | "METHOD_NOT_ALLOWED" | "CONFLICT" | "PAYLOAD_TOO_LARGE" | "UNPROCESSABLE" | "RATE_LIMITED" | "TOKEN_INVALID" | "EXCEPTION_REQUIRED" | "ACTIVITY_CANCELLED" | "ALREADY_CONFIRMED" | "NOT_PENDING" | "EXCEPTION_REVIEW_REQUIRED" | "BATCH_REJECTED" | "FEEDBACK_CLOSED" | "LAST_ADMIN" | "LAST_CURATOR" | "INTERNAL" | yes | ||
retryAfterSeg | integer | no | 0… | |
requestId | string | no |
EsqueciSenhaInput
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
email | yes |
EstatisticaAluno
A student's attendance in a class, counting only non-cancelled activities that have already happened (up to today).
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
alunoId | string (uuid) | yes | ||
nome | string | yes | ||
proprio | boolean | yes | It is the requesting person themself. | |
confirmadas | integer | yes | ||
pendentes | integer | yes | ||
rejeitadas | integer | yes | ||
naoSolicitadas | integer | yes | ||
obrigatorias | object | yes | Confirmed and held counts among mandatory activities only: the basis of percentual. | |
obrigatorias.confirmadas | integer | yes | ||
obrigatorias.total | integer | yes | ||
percentual | number or null | yes | Confirmed mandatory ÷ held mandatory, from 0 to 100 with 1 decimal; null if no mandatory activity has been held yet. Optional activities do not count. | |
medias | list of MediaCriterio | no | Average per criterion (confirmed attendance in the window, excluding “not applicable”). Absent from the person's own row until the class releases grades. Criteria without grades do not appear. |
Estatisticas
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
turmas | list of EstatisticaTurma | yes |
EstatisticaTurma
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
turma | object | yes | ||
turma.id | string (uuid) | yes | ||
turma.nome | string | yes | ||
turma.ativo | boolean | yes | ||
disciplina | object | yes | ||
disciplina.id | string (uuid) | yes | ||
disciplina.sigla | string | yes | ||
disciplina.nome | string | yes | ||
instituicao | object | yes | ||
instituicao.id | string (uuid) | yes | ||
instituicao.sigla | string | yes | ||
instituicao.nome | string | yes | ||
atividades | integer | yes | Non-cancelled activities that have already happened in the window. | |
alunos | list of EstatisticaAluno | yes | Assessors see all students; someone who is only a student sees only themself. | |
criterios | list of object | no | Criteria shown in the averages (active or graded), in the discipline's order and the person's language. | |
criterios[].id | string (uuid) | yes | ||
criterios[].nome | string | yes | ||
criterios[].notaMin | integer | yes | ||
criterios[].notaMax | integer | yes | ||
notasLiberadas | boolean | no | The class has already released grades to the student. | |
mediasTurma | list of MediaCriterio | no | Class average per criterion: only for those who assess the class; never for students. | |
podeAvaliar | boolean | no | The requester assesses the class (can export). |
EvolucaoAluno
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
aluno | object | yes | ||
aluno.id | string (uuid) | yes | ||
aluno.nome | string | yes | ||
disciplinas | list of EvolucaoDisciplina | yes | ||
turmasNaoLiberadas | integer | yes | 0… | Only in the student's own view: their classes whose grades have not been released yet (they are not in the series). |
EvolucaoAlunoItem
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
matriculaId | string (uuid) | yes | ||
nome | string | yes | ||
turma | object | yes | ||
turma.id | string (uuid) | yes | ||
turma.nome | string | yes | ||
disciplina | object | yes | ||
disciplina.id | string (uuid) | yes | ||
disciplina.nome | string | yes |
EvolucaoAlunos
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of EvolucaoAlunoItem | yes |
EvolucaoDisciplina
A student's longitudinal progress per discipline, across the classes they were in. criterios: grade over time (N/A is not a point); notaMin and notaMax give the scale. atividadesProfissionais: supervision level per catalog item (activities without an item are left out). avaliadores: how many distinct assessors (the last one of each attendance), a count only, never the name.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
disciplina | object | yes | ||
disciplina.id | string (uuid) | yes | ||
disciplina.nome | string | yes | ||
instituicao | object | no | The discipline's institution: with a single account across several institutions, the screen filters by it. May be missing on older servers. | |
instituicao.id | string (uuid) | yes | ||
instituicao.sigla | string | yes | ||
instituicao.nome | string | yes | ||
turmas | list of object | yes | ||
turmas[].id | string (uuid) | yes | ||
turmas[].matriculaId | string (uuid) | yes | ||
turmas[].nome | string | yes | ||
turmas[].dataInicio | Data or null | yes | ||
turmas[].dataFim | Data or null | yes | ||
presencasAvaliadas | integer | yes | 0… | |
avaliadores | integer | yes | 0… | |
criterios | list of object | yes | ||
criterios[].id | string (uuid) | yes | ||
criterios[].nome | string | yes | ||
criterios[].notaMin | integer | yes | ||
criterios[].notaMax | integer | yes | ||
criterios[].pontos | list of object | yes | ||
criterios[].pontos[].atividadeId | string (uuid) | yes | ||
criterios[].pontos[].turmaId | string (uuid) | yes | ||
criterios[].pontos[].data | Data | yes | ||
criterios[].pontos[].valor | integer | yes | ||
atividadesProfissionais | list of object | yes | ||
atividadesProfissionais[].id | string (uuid) | yes | ||
atividadesProfissionais[].nome | string | yes | ||
atividadesProfissionais[].pontos | list of object | yes | ||
atividadesProfissionais[].pontos[].atividadeId | string (uuid) | yes | ||
atividadesProfissionais[].pontos[].turmaId | string (uuid) | yes | ||
atividadesProfissionais[].pontos[].data | Data | yes | ||
atividadesProfissionais[].pontos[].nivel | NivelSupervisao | yes |
ExcluirContaConfirmarInput
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
token | string | yes | 20–200 characters |
ExcluirContaInput
Deleting your own account in the app: confirm with the password.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
senha | Senha | yes |
ExcluirContaSolicitarInput
Deletion on the web, no sign-in: step 1 asks for the link by email; step 2 confirms with the link's token.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
email | yes |
FeedbackFinalDoAluno
The student's own final feedback in a class: only after the deadline (janela.estado === "encerrada") and without the internal comment. Before then, liberado is false and feedbacks is empty; liberaEm is the first day the student can see it.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
turma | object | yes | ||
turma.id | string (uuid) | yes | ||
turma.nome | string | yes | ||
liberado | boolean | yes | ||
liberaEm | Data or null | yes | ||
criterios | list of CriterioDto | yes | ||
feedbacks | list of FeedbackFinalDto | yes |
FeedbackFinalDto
One final feedback. comentarioInterno only appears to the class staff and never to the student; autor is who wrote it. The student gets this same shape, always without the internal comment.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
matriculaId | string (uuid) | yes | ||
autor | object or null | yes | Null when the author deleted their account. | |
autor.id | string (uuid) | yes | ||
autor.nome | string | yes | ||
comentario | string | yes | ||
comentarioInterno | string or null | no | ||
notas | list of object | yes | ||
notas[].criterioId | string (uuid) | yes | ||
notas[].valor | integer or null | yes | ||
criadoEm | string | yes | ||
atualizadoEm | string | yes |
FeedbackFinalEscrever
Overall closing feedback for the student in the class. Every active criterion of the discipline comes with a value (or null = “not applicable”, only where the criterion allows it); the comment is required; the internal one is optional and never reaches the student. An empty internal text clears it.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
notas | list of object | yes | 0–200 items | |
notas[].criterioId | string (uuid) | yes | ||
notas[].valor | integer or null | yes | ||
comentario | string | yes | 1–4000 characters | |
comentarioInterno | string or null | no | to 4000 characters |
FeedbackFinalMatricula
Final-feedback screen for a student, for those who assess the class or follow it. meu: the user's own feedback (null if not written yet); podeEscrever = has the assess capability in the class, the window is open and the enrollment is not theirs. equipe: other authors' feedback, with the internal one; only verTudo (class teacher, discipline coordinator, institution curator) sees them; preceptors and assistants only see their own and equipe is empty.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
matriculaId | string (uuid) | yes | ||
turma | object | yes | ||
turma.id | string (uuid) | yes | ||
turma.nome | string | yes | ||
turma.dataInicio | Data or null | yes | ||
turma.dataFim | Data or null | yes | ||
aluno | object | yes | ||
aluno.id | string (uuid) | yes | ||
aluno.nome | string | yes | ||
janela | JanelaFeedback | yes | ||
criterios | list of CriterioDto | yes | ||
meu | FeedbackFinalDto or null | yes | ||
podeEscrever | boolean | yes | ||
verTudo | boolean | yes | ||
equipe | list of FeedbackFinalDto | yes | ||
autoavaliacao | AutoavaliacaoDto or null | no | The student's self-assessment. Only for verTudo; null for the others and when the student has not written one. |
FeedbackFinalTurma
The class list for those who assess or follow it: one item per active student (except the user). meuEm = when the user last saved theirs (null = still to write); total = how many feedbacks the student has, only for verTudo (null for the rest: preceptors and assistants do not know what colleagues wrote).
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
turma | object | yes | ||
turma.id | string (uuid) | yes | ||
turma.nome | string | yes | ||
turma.dataInicio | Data or null | yes | ||
turma.dataFim | Data or null | yes | ||
janela | JanelaFeedback | yes | ||
podeEscrever | boolean | yes | ||
verTudo | boolean | yes | ||
itens | list of object | yes | ||
itens[].matriculaId | string (uuid) | yes | ||
itens[].aluno | object | yes | ||
itens[].aluno.id | string (uuid) | yes | ||
itens[].aluno.nome | string | yes | ||
itens[].meuEm | string or null | yes | ||
itens[].total | integer or null | yes |
FilaAvaliacao
Ordered by activity date and request time; total counts all pending items, not just the page.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of FilaAvaliacaoItem | yes | ||
total | integer | yes | 0… |
FilaAvaliacaoItem
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
atividade | object | yes | ||
atividade.id | string (uuid) | yes | ||
atividade.descricao | string or null | yes | ||
atividade.data | Data | yes | ||
atividade.horaInicio | Hora or null | yes | ||
atividade.horaFim | Hora or null | yes | ||
atividade.obrigatoria | boolean | yes | ||
atividade.turma | object | yes | ||
atividade.turma.id | string (uuid) | yes | ||
atividade.turma.nome | string | yes | ||
atividade.disciplina | object | yes | ||
atividade.disciplina.id | string (uuid) | yes | ||
atividade.disciplina.sigla | string | yes | ||
atividade.disciplina.nome | string | yes | ||
linha | PresencaLinha | yes | ||
elegivelLote | boolean | yes | Eligible for batch confirmation: pending and without an exception (rule computed on the server). |
FrequenciaTurma
Student × activity grid of the class. Only the state of each student's request in each activity: no location, account, justification or grade. estado is NAO_SOLICITADA for future activities too (the client decides using data and hoje). Totals count only non-cancelled activities that have already happened (up to hoje); a future or cancelled activity is therefore not in total.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
turma | object | yes | ||
turma.id | string (uuid) | yes | ||
turma.nome | string | yes | ||
hoje | Data | yes | Today's date in the institution's time zone (to highlight the “today” column). | |
de | Data | yes | ||
ate | Data | yes | ||
atividades | list of object | yes | Activities in the window, by start date and time. | |
atividades[].id | string (uuid) | yes | ||
atividades[].data | Data | yes | ||
atividades[].horaInicio | string or null | yes | ||
atividades[].horaFim | string or null | yes | ||
atividades[].descricao | string or null | yes | ||
atividades[].obrigatoria | boolean | yes | ||
atividades[].cancelada | boolean | yes | ||
alunos | list of object | yes | Students with an active enrollment, alphabetical. | |
alunos[].id | string (uuid) | yes | ||
alunos[].matriculaId | string (uuid) | yes | ||
alunos[].nome | string | yes | ||
alunos[].celulas | list of object | yes | ||
alunos[].celulas[].atividadeId | string (uuid) | yes | ||
alunos[].celulas[].estado | "NAO_SOLICITADA" | "SOLICITADA" | "CONFIRMADA" | "REJEITADA" | yes | ||
alunos[].obrigatorias | object | yes | ||
alunos[].obrigatorias.confirmadas | integer | yes | ||
alunos[].obrigatorias.total | integer | yes | ||
alunos[].opcionais | object | yes | ||
alunos[].opcionais.confirmadas | integer | yes | ||
alunos[].opcionais.total | integer | yes | ||
alunos[].percentual | number or null | yes | ||
truncado | object | yes | The list was cut at the maximum number of students and activities; the grid and totals cover only what was returned. | |
truncado.atividades | boolean | yes | Activities in the window, by start date and time. | |
truncado.alunos | boolean | yes | Students with an active enrollment, alphabetical. |
Fuso
string — 1–64 characters
Health
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status | "ok" | "degraded" | yes | ||
db | "up" | "down" | yes | ||
version | string | yes | ||
locale | string | yes |
Hora
Time of day HH:MM or HH:MM:SS; always returned as HH:MM:SS.
string — ^([01]\d\|2[0-3]):[0-5]\d(:[0-5]\d)?$
ImportacaoEntrada
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
csv | string | yes | 1–90000 characters | |
modo | "simular" | "aplicar" | yes | simular only validates and shows what would happen; aplicar writes all or nothing (unless parcial). | |
parcial | boolean | no | Partial mode (with safeguards): imports only valid rows and returns the skipped ones in the response. simular with parcial returns hashConteudo; aplicar with parcial requires the same hashConteudo (missing or different = 409 CONFLICT). Absent or false = all or nothing. | |
hashConteudo | string | no | ^[0-9a-f]{64}$ | Hash returned by the partial dry run of the same content (SHA-256 of the normalised content, 64 hex characters). |
ImportacaoRelatorio
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
tipo | "pessoas" | "alunos" | "atividades" | yes | ||
modo | "simular" | "aplicar" | yes | ||
aplicado | boolean | yes | On aplicar: true = written; false = some row had an error, nothing was written. On simular, always false. | |
erroArquivo | "empty" | "too_many_lines" | "unterminated_quote" | "too_large" | "missing_column" or null | yes | Error of the file as a whole (empty, too large, required column missing). | |
colunaAusente | string or null | yes | ||
resumo | object | yes | ||
linhas | list of LinhaRelatorio | yes | ||
convites | integer or null | yes | 0… | Invitations that will be sent (new accounts). null = not reported (simular does not reveal whether an email already has an account). |
parcial | boolean | no | Partial mode only. true = the request was partial. | |
hashConteudo | string | no | Only on a partial simular: SHA-256 of the normalised content (type, target and rows read), which the partial aplicar sends back. | |
contagens | object | no | Partial mode only: importadas = valid rows (CRIADA, INCLUIDA, REATIVADA or JA_EXISTE, detailed in resumo); ignoradas = rows with ERRO. Imported + skipped = rows read. On simular, it is the forecast. | |
contagens.importadas | integer | yes | 0… | |
contagens.ignoradas | integer | yes | 0… | Only on a partial aplicar: the rows left out (row, field and reason). It exists only in this response: it is not stored. |
ignoradas | list of LinhaRelatorio | no | Only on a partial aplicar: the rows left out (row, field and reason). It exists only in this response: it is not stored. |
InstituicaoAtualizar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
nome | string | no | 1–200 characters | |
locale | "pt-BR" | "es" | "en-US" or null | no | ||
timezone | Fuso | no | ||
retencaoMeses | integer or null | no | 1…600 | |
controladorNome | string or null | no | 1–200 characters | Privacy (LGPD): null clears the value and goes back to the platform default. |
encarregadoNome | string or null | no | 1–200 characters | |
contatoPrivacidade | Email or null | no | ||
ativo | boolean | no |
InstituicaoCriar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
sigla | string | yes | ^[A-Za-z0-9][A-Za-z0-9._-]{1,19}$ | |
nome | string | yes | 1–200 characters | |
locale | "pt-BR" | "es" | "en-US" or null | no | ||
timezone | Fuso | no | ||
retencaoMeses | integer or null | no | 1…600 | |
curador | object | no | The institution's first curator: receives the invitation by email. | |
curador.email | yes | |||
curador.nome | string | yes | 1–200 characters |
InstituicaoDto
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
sigla | string | yes | ||
nome | string | yes | ||
ativo | boolean | yes | ||
locale | "pt-BR" | "es" | "en-US" or null | yes | ||
timezone | string | yes | ||
retencaoMeses | integer or null | yes | ||
controladorNome | string or null | no | The institution's privacy data; the API always sends them (null when not provided). | |
encarregadoNome | string or null | no | ||
contatoPrivacidade | string or null | no |
JanelaFeedback
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
estado | "sem_data" | "nao_abriu" | "aberta" | "encerrada" | yes | ||
prazoDias | integer | yes | ||
abreEm | Data or null | yes | First day it can be written (the class end date); null without an end date. | |
ate | Data or null | yes | Last day it can be written or adjusted; null without an end date. |
LinhaRelatorio
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
linha | integer | yes | ||
situacao | "VALIDA" | "CRIADA" | "VINCULADA" | "INCLUIDA" | "REATIVADA" | "JA_EXISTE" | "ERRO" | yes | ||
rotulo | string | yes | What identifies the row for the importer (the email, or the date and description from the file itself). | |
campo | string | no | ||
codigo | "required" | "invalid" | "too_long" | "out_of_range" | "duplicate" | "not_found" | no |
LoginInput
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
email | yes | |||
senha | Senha | yes |
LogoutInput
Logout input: the device may send its push token to be removed too.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
refreshToken | string | yes | 20–200 characters | |
dispositivoToken | string | no | 8–4096 characters; ^[\x21-\x7E]+$ |
MarcarLidas
Option 1
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
ids | list of string (uuid) | yes | 1–100 items |
Option 2
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
todas | true | yes |
MatriculaAtualizar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
ativo | boolean | yes |
MatriculaCriar
An existing student (usuarioId) or a new one (email and nome; receives the invitation).
Option 1
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
usuarioId | string (uuid) | yes |
Option 2
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
email | yes | |||
nome | string | yes | 1–200 characters | |
nationality | string | no | 2–2 characters; ^[A-Za-z]{2}$ |
MatriculaDto
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
turmaId | string (uuid) | yes | ||
usuarioId | string (uuid) | yes | ||
ativo | boolean | yes | ||
nome | string | yes | ||
email | string | yes | ||
status | "CONVIDADO" | "ATIVO" | "SUSPENSO" | yes | ||
jaExistia | boolean | no | Only in the create-by-email response: the email already had an account and the person was bound to it. |
Me
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
email | string | yes | ||
nome | string | yes | ||
locale | "pt-BR" | "es" | "en-US" | yes | ||
nationality | string or null | yes | ||
vinculos | list of VinculoDto | yes |
MediaCriterio
A criterion's average to 1 decimal and how many grades went into it (the same calculation as the student's home).
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
criterioId | string (uuid) | yes | ||
media | number | yes | ||
quantidade | integer | yes |
MensagemDto
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
turmaId | string (uuid) | yes | ||
autor | object or null | yes | Null when the author deleted their account. | |
autor.id | string (uuid) | yes | ||
autor.nome | string | yes | ||
texto | string or null | yes | Null when the message was removed (the text is erased on removal). | |
criadaEm | string | yes | ||
editadaEm | string or null | yes | ||
removida | boolean | yes | ||
removidaPorModeracao | boolean | yes | Removed by a moderator (not by the author). | |
cursor | string | yes | This message's cursor (use it in depois or antes). |
MensagemTexto
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
texto | string | yes | 1–2000 characters |
MinhaAtividadeDto
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
matriculaId | string (uuid) | yes | ||
data | Data | yes | ||
horaInicio | Hora or null | yes | ||
horaFim | Hora or null | yes | ||
descricao | string or null | yes | ||
local | string or null | yes | ||
obrigatoria | boolean | yes | ||
cancelada | boolean | yes | ||
turma | object | yes | ||
turma.id | string (uuid) | yes | ||
turma.nome | string | yes | ||
disciplina | object | yes | ||
disciplina.id | string (uuid) | yes | ||
disciplina.sigla | string | yes | ||
disciplina.nome | string | yes | ||
instituicao | object | yes | ||
instituicao.id | string (uuid) | yes | ||
instituicao.sigla | string | yes | ||
instituicao.nome | string | yes | ||
estado | "NAO_SOLICITADA" | "SOLICITADA" | "CONFIRMADA" | "REJEITADA" | yes | ||
presencaId | string (uuid) or null | yes | ||
solicitadaEm | string or null | yes | When the request was made, if any. | |
avaliadaEm | string or null | yes | When it was confirmed or rejected (null until assessed). The assessor is not included: students do not see staff names. | |
comentarioAvaliador | string or null | yes | The assessor's comment. Only reaches the student themself and those who assess the class. To the student: the reason for a rejection always; for a confirmation only once the class releases grades. | |
relato | string or null | no | The account of the person's own attendance (the student may rewrite it). Only on the person's own rows. | |
regrasPedido | object | yes | So clients can warn before sending what the server will require: the request window (with the class tolerances), the institution's time zone (another day = different local date) and whether the geofence applies (without location, a justification is needed). The server still decides: this only avoids send, error, resend. | |
regrasPedido.janelaInicio | string | yes | ||
regrasPedido.janelaFim | string | yes | ||
regrasPedido.fuso | string | yes | ||
regrasPedido.exigeLocal | boolean | yes |
MinhaConversa
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
turmaId | string (uuid) | yes | ||
turmaNome | string | yes | ||
disciplinaNome | string | yes | ||
instituicaoSigla | string | yes | ||
ativa | boolean | yes | ||
naoLida | boolean | yes | There is an unread message notification in this class. |
MinhasAtividades
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of MinhaAtividadeDto | yes |
MinhasConversas
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of MinhaConversa | yes |
NivelSupervisao
integer — 1…5
Nota
A criterion's grade on an attendance. valor null = “not applicable”.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
criterioId | string (uuid) | yes | ||
valor | integer or null | yes | 0…100 |
NotificacaoDto
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
evento | "PEDIDO_PENDENTE" | "LEMBRETE_AVALIADOR" | "AVALIACAO_FEITA" | "MENSAGEM_CHAT" | "LEMBRETE_ATIVIDADE" | "CONVITE_SUS" | "CONTA_EXCLUIDA" | yes | ||
criadaEm | string | yes | ||
lida | boolean | yes | ||
turmaId | string (uuid) or null | yes | Only ids and class/activity names, to build the text and link in the reader's language. Never message text. | |
turmaNome | string or null | yes | ||
instituicaoNome | string or null | yes | default: null | Institution name (only in the deleted-account notice, which has no class). |
atividadeId | string (uuid) or null | yes | ||
atividadeData | string or null | yes | Activity date (YYYY-MM-DD), when there is one. | |
quantidade | integer | yes | 1… | How many events this notification groups (e.g. 3 new messages). |
NotificacoesPagina
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of NotificacaoDto | yes | ||
proximo | string or null | yes | ||
naoLidas | integer | yes | 0… |
Painel
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of PainelItem | yes | ||
truncado | boolean | yes | There were more rows than the limit. | |
opcoes | object | yes | Filter options: everything the person can see, regardless of the active filters. | |
opcoes.instituicoes | list of object | yes | ||
opcoes.instituicoes[].id | string (uuid) | yes | ||
opcoes.instituicoes[].sigla | string | yes | ||
opcoes.instituicoes[].nome | string | yes | ||
opcoes.disciplinas | list of object | yes | ||
opcoes.disciplinas[].id | string (uuid) | yes | ||
opcoes.disciplinas[].sigla | string | yes | ||
opcoes.disciplinas[].nome | string | yes | ||
opcoes.disciplinas[].instituicaoId | string (uuid) | yes | ||
opcoes.turmas | list of object | yes | ||
opcoes.turmas[].id | string (uuid) | yes | ||
opcoes.turmas[].nome | string | yes | ||
opcoes.turmas[].disciplinaId | string (uuid) | yes | ||
opcoes.turmas[].ativo | boolean | yes | ||
opcoes.alunos | list of object | yes | ||
opcoes.alunos[].id | string (uuid) | yes | ||
opcoes.alunos[].nome | string | yes |
PainelItem
A panel row: one activity for one student (the person themself or someone they assess).
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
matriculaId | string (uuid) | yes | ||
data | Data | yes | ||
horaInicio | Hora or null | yes | ||
horaFim | Hora or null | yes | ||
descricao | string or null | yes | ||
local | string or null | yes | ||
obrigatoria | boolean | yes | ||
cancelada | boolean | yes | ||
turma | object | yes | ||
turma.id | string (uuid) | yes | ||
turma.nome | string | yes | ||
disciplina | object | yes | ||
disciplina.id | string (uuid) | yes | ||
disciplina.sigla | string | yes | ||
disciplina.nome | string | yes | ||
instituicao | object | yes | ||
instituicao.id | string (uuid) | yes | ||
instituicao.sigla | string | yes | ||
instituicao.nome | string | yes | ||
estado | "NAO_SOLICITADA" | "SOLICITADA" | "CONFIRMADA" | "REJEITADA" | yes | ||
presencaId | string (uuid) or null | yes | ||
solicitadaEm | string or null | yes | ||
avaliadaEm | string or null | yes | ||
comentarioAvaliador | string or null | yes | ||
relato | string or null | no | ||
regrasPedido | object | yes | ||
regrasPedido.janelaInicio | string | yes | ||
regrasPedido.janelaFim | string | yes | ||
regrasPedido.fuso | string | yes | ||
regrasPedido.exigeLocal | boolean | yes | ||
aluno | object | yes | ||
aluno.id | string (uuid) | yes | ||
aluno.nome | string | yes | ||
proprio | boolean | yes | The row belongs to the person themself (as a student). | |
podeAvaliar | boolean | yes | Can confirm or reject this attendance (assesses the class and it is not their own). |
ParametrosDto
Reading of one level: what it sets (valores, null = not set) and what would apply without it (herdados).
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
nivel | "plataforma" | "instituicao" | yes | ||
valores | object | yes | ||
herdados | object | yes |
ParametrosInstituicaoAtualizar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
turma.tolerancia_antes_min | integer or null | no | 0…720 | |
turma.tolerancia_depois_min | integer or null | no | 0…720 | |
senha.tamanho_minimo | integer or null | no | 8…128 | |
senha.historico | integer or null | no | 0…24 | |
senha.intervalo_min_horas | integer or null | no | 0…168 | |
sessao.expira_dias | integer or null | no | 1…365 | |
auditoria.retencao_meses | integer or null | no | 1…240 | |
lembrete.atividade_antecedencia_min | integer or null | no | 0…1440 | |
lembrete.avaliador_pendencia_horas | integer or null | no | 0…168 | |
notificacao.silencio_inicio_h | integer or null | no | 0…23 | |
notificacao.silencio_fim_h | integer or null | no | 0…23 | |
sus.convite_intervalo_dias | integer or null | no | 0…730 | |
feedback.prazo_dias | integer or null | no | 0…180 | |
chat.retencao_meses | integer or null | no | 1…240 |
ParametrosPlataformaAtualizar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
turma.tolerancia_antes_min | integer or null | no | 0…720 | |
turma.tolerancia_depois_min | integer or null | no | 0…720 | |
senha.tamanho_minimo | integer or null | no | 8…128 | |
senha.historico | integer or null | no | 0…24 | |
senha.intervalo_min_horas | integer or null | no | 0…168 | |
sessao.expira_dias | integer or null | no | 1…365 | |
auditoria.retencao_meses | integer or null | no | 1…240 | |
dados.retencao_meses | integer or null | no | 1…240 | |
lembrete.atividade_antecedencia_min | integer or null | no | 0…1440 | |
lembrete.avaliador_pendencia_horas | integer or null | no | 0…168 | |
notificacao.silencio_inicio_h | integer or null | no | 0…23 | |
notificacao.silencio_fim_h | integer or null | no | 0…23 | |
sus.convite_intervalo_dias | integer or null | no | 0…730 | |
feedback.prazo_dias | integer or null | no | 0…180 | |
chat.retencao_meses | integer or null | no | 1…240 | |
notificacao.retencao_dias | integer or null | no | 1…3650 |
Pendente
A request in the class queue (all activities).
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
atividade | object | yes | ||
atividade.id | string (uuid) | yes | ||
atividade.data | Data | yes | ||
atividade.descricao | string or null | yes | ||
linha | PresencaLinha | yes |
Pendentes
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of Pendente | yes |
PerfilAtualizar
Editing your own profile. Only what the person can change alone: email and roles are not included.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
nome | string | no | 1–200 characters | |
nationality | string or null | no | 2–2 characters; ^[A-Za-z]{2}$ | |
locale | "pt-BR" | "es" | "en-US" or null | no | ||
lattesUrl | "" | string | no | Lattes CV address (https). | |
conselhoCodigo | string or null | no | to 60 characters | Number at the professional council. Only the person themself sees it. |
anoGraduacao | integer or null | no | 1930…2100 | |
residencia | boolean | no | ||
especializacao | boolean | no | ||
mestrado | boolean | no | ||
doutorado | boolean | no | ||
minibio | string or null | no | to 2000 characters |
PerfilDto
The person's own full profile (GET /me/perfil). Never returned to others.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
nome | string | yes | ||
email | string | yes | ||
nationality | string or null | yes | ||
locale | "pt-BR" | "es" | "en-US" or null | yes | ||
lattesUrl | string or null | yes | ||
conselhoCodigo | string or null | yes | ||
anoGraduacao | integer or null | yes | ||
residencia | boolean | yes | ||
especializacao | boolean | yes | ||
mestrado | boolean | yes | ||
doutorado | boolean | yes | ||
minibio | string or null | yes | ||
temFoto | boolean | yes | Is there a profile photo? The photo itself comes from GET /me/foto. | |
fotoEm | string or null | yes | Changes with each photo change (use it to refresh the avatar cache). |
PoliticaDto
Current privacy policy (same shape as the terms) and its default public address.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
versao | integer or null | yes | ||
textos | TermoTextos | yes | ||
publicadoEm | string (date-time) or null | yes | ||
urlPublica | string | yes |
PoliticaPublica
The policy's public page (no sign-in): the address that app stores and emails point to.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
instituicao | object | yes | ||
instituicao.sigla | string | yes | ||
instituicao.nome | string | yes | ||
politica | TermoDto | yes | ||
privacidade | PrivacidadeDto | yes | ||
urlPublica | string | yes |
Preferencia
Preference per type: the person turns off the in-app notice and/or the push. Absent = on.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
evento | "PEDIDO_PENDENTE" | "LEMBRETE_AVALIADOR" | "AVALIACAO_FEITA" | "MENSAGEM_CHAT" | "LEMBRETE_ATIVIDADE" | "CONVITE_SUS" | "CONTA_EXCLUIDA" | yes | ||
inApp | boolean | yes | ||
push | boolean | yes |
Preferencias
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of Preferencia | yes |
PreferenciasAtualizar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of Preferencia | yes | 1–7 items |
PresencaDto
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
atividadeId | string (uuid) | yes | ||
matriculaId | string (uuid) | yes | ||
estado | "SOLICITADA" | "CONFIRMADA" | "REJEITADA" | yes | ||
solicitadaEm | string | yes | ||
capturadaEm | string or null | yes | ||
relato | string or null | yes | ||
justificativa | string or null | yes | ||
excecoes | list of "FORA_DA_JANELA" | "FORA_DA_CERCA" | "OUTRO_DIA" | yes | ||
avaliadaEm | string or null | yes | ||
comentarioAvaliador | string or null | yes | ||
notas | list of Nota | yes | Only for those who assess the class. Students see their grades in the panel after the class releases them. | |
nivelSupervisao | NivelSupervisao or null | no | Supervision level given by the last assessor; null = not provided. Only for assessors (students read it in the assessment after release). | |
relatoEditadoEm | string or null | no | Last edit of the account by the student; null = never edited. After avaliadaEm = edited after the assessment. | |
relatoVersoes | integer | no | How many earlier versions of the account exist (assessors read them at .../relato/versoes). |
PresencaLinha
A row of the assessor's list: the enrollment with its request (if any). Location only appears here.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
matriculaId | string (uuid) | yes | ||
usuarioId | string (uuid) | yes | ||
nome | string | yes | ||
presenca | PresencaDto or null | yes | ||
lat | number or null | yes | ||
lng | number or null | yes | ||
precisaoM | number or null | yes | ||
avaliador | object or null | no | Who assessed last: only in the assessor's view, never the student's. | |
avaliador.id | string (uuid) | yes | ||
avaliador.nome | string | yes | ||
dentroDaArea | "dentro" | "fora" | "sem_localizacao" | no | Where the request fell relative to the activity's geofence, only the band (never metres): the same rule that requires a justification. Absent = the geofence does not apply to this activity (off or no centre/radius) or there is no request. |
PresencaLinhas
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
atividade | object | yes | ||
atividade.id | string (uuid) | yes | ||
atividade.turmaId | string (uuid) | yes | ||
atividade.data | Data | yes | ||
atividade.descricao | string or null | yes | ||
items | list of PresencaLinha | yes |
PresencaSolicitar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
relato | string | no | to 2000 characters | Up to 2000 characters. |
justificativa | string | no | to 2000 characters | Required when the request falls under an exception. |
clienteId | string (uuid) | no | Generated on the device: resending the offline queue does not duplicate. | |
capturadaEm | string (date-time) | no | The moment the device captured the request (offline queue). | |
lat | number | no | -90…90 | |
lng | number | no | -180…180 | |
precisaoM | integer | no | 0…1000000 |
PrimeiroAcessoConfirmarInput
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
email | yes | |||
codigo | string | yes | ^\d{6}$ | |
senha | Senha | yes |
PrimeiroAcessoSolicitarInput
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
email | yes |
PrivacidadeDto
What the person sees about how their data is handled at the institution. controlador and encarregado null = the institution has not provided them yet. contato is always filled (the institution's or the default); contatoPadrao says which one it is.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
controlador | string or null | yes | ||
encarregado | string or null | yes | ||
contato | string | yes | ||
contatoPadrao | boolean | yes |
PushWebConfig
Public Firebase configuration for the browser (not a secret); absent = browser push is off.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
apiKey | string | yes | ||
appId | string | yes | ||
projectId | string | yes | ||
messagingSenderId | string | yes | ||
vapidKey | string | no | Public VAPID key, if the project uses its own; without it the SDK uses Firebase's default. |
QrResolver
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
token | string | yes | 20–2000 characters |
QrResolvido
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
turmaId | string (uuid) | yes | ||
atividade | object | yes | ||
atividade.id | string (uuid) | yes | ||
atividade.data | Data | yes | ||
atividade.descricao | string or null | yes | ||
linha | PresencaLinha | yes |
QrToken
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
token | string | yes | ||
expiraEm | string | yes |
RedefinirSenhaInput
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
token | string | yes | 20–200 characters | |
senha | Senha | yes |
RefreshInput
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
refreshToken | string | yes | 20–200 characters |
RelatoEditar
The student rewrites the account after the request, even once assessed. The previous version is kept and the edit goes to the audit log (without the text). It does not reopen the assessment: state, grades and comment stay as they are. Empty text clears the account (the previous version is still kept).
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
relato | string | yes | to 2000 characters |
RelatoVersoes
Earlier versions of the account, newest first. Only for those who assess the class.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of object | yes | ||
items[].id | string (uuid) | yes | ||
items[].texto | string | yes | ||
items[].substituidoEm | string | yes |
Rubrica
object
Senha
Plain-text password, sent only here. The minimum length is set by the institution's policy.
string — 1–128 characters
Sessao
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
accessToken | string | yes | ||
refreshToken | string | yes | ||
expiresIn | integer | yes | Access token lifetime, in seconds. | |
usuario | Me | yes |
SessaoAtivaDto
One connection (a session with an active refresh). Never exposes the token or IP.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
agente | string or null | yes | User-Agent reported at login, truncated; may be null. | |
criadaEm | string | yes | ||
expiraEm | string | yes | ||
atual | boolean | yes | It is the requester's own session (only if the refresh token was sent). |
SessoesAtivas
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of SessaoAtivaDto | yes |
SusEnviada
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
pontuacao | number | yes |
SusRespostaInput
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
respostas | list of integer | yes | 10–10 items | The 10 items of the positive version, in order, on a 1–5 scale. |
observacoes | string | no | to 2000 characters |
SusResumo
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
total | integer | yes | ||
media | number or null | yes | Average SUS score; null without answers. | |
porItem | list of number | yes | Average of each item (1–5), in order; empty without answers. |
TermoDto
Current version. versao null = the institution has not published terms yet.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
versao | integer or null | yes | ||
textos | TermoTextos | yes | ||
publicadoEm | string (date-time) or null | yes |
TermoPublicar
Publishes a new version of the institution's terms. At least one language must have text.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
textos | TermoTextos | yes |
TermosDosMeus
Current terms and policy of each institution where the person has an active binding or enrollment (“Terms of use” screen).
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of object | yes | ||
items[].instituicao | object | yes | ||
items[].instituicao.id | string (uuid) | yes | ||
items[].instituicao.sigla | string | yes | ||
items[].instituicao.nome | string | yes | ||
items[].termo | TermoDto | yes | ||
items[].politica | TermoDto | yes | ||
items[].urlPublica | string | yes | ||
items[].privacidade | PrivacidadeDto | yes |
TermoTextos
One text per language; a missing language falls back to pt-BR (default).
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
pt-BR | string | no | to 60000 characters | |
es | string | no | to 60000 characters | |
en-US | string | no | to 60000 characters |
TrocarSenhaInput
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
senhaAtual | Senha | yes | ||
novaSenha | Senha | yes |
TurmaAtualizar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
nome | string | no | 1–200 characters | |
endereco | string or null | no | to 500 characters | |
localAtividade | string or null | no | to 500 characters | |
lat | number or null | no | -90…90 | |
lng | number or null | no | -180…180 | |
toleranciaAntesMin | integer or null | no | 0…720 | |
toleranciaDepoisMin | integer or null | no | 0…720 | |
notasVisiveisEm | Data or null | no | ||
ativo | boolean | no |
TurmaCriar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
nome | string | yes | 1–200 characters | |
endereco | string or null | no | to 500 characters | |
localAtividade | string or null | no | to 500 characters | |
lat | number or null | no | -90…90 | |
lng | number or null | no | -180…180 | |
toleranciaAntesMin | integer or null | no | 0…720 | |
toleranciaDepoisMin | integer or null | no | 0…720 | |
notasVisiveisEm | Data or null | no |
TurmaDto
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
disciplinaId | string (uuid) | yes | ||
instituicaoId | string (uuid) | yes | ||
nome | string | yes | ||
ativo | boolean | yes | ||
endereco | string or null | yes | ||
localAtividade | string or null | yes | ||
lat | number or null | yes | ||
lng | number or null | yes | ||
toleranciaAntesMin | integer or null | yes | ||
toleranciaDepoisMin | integer or null | yes | ||
notasVisiveisEm | Data or null | yes | ||
dataInicio | Data or null | yes | ||
dataFim | Data or null | yes |
TurmaPeriodo
The class period (its end opens the final-feedback deadline). It has its own route and permission rule, separate from the regular class record. Both fields are always present; null = not set.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
dataInicio | Data or null | yes | ||
dataFim | Data or null | yes |
TurmaProntidao
What is still missing for the class to receive attendance (checklist for whoever sets it up). Counts only: no names or emails, so people with accounts and the institution's bindings are not exposed to those who do not manage them.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
centro | boolean | yes | ||
toleranciaPropria | boolean | yes | The class's own tolerance; false = the default applies. | |
atividadesFuturas | integer | yes | 0… | Non-cancelled activities from today on (in the institution's time zone). |
alunos | integer | yes | 0… | |
alunosComAcesso | integer | yes | 0… | Students who already accepted the invitation (active account) and can record attendance. |
avaliadores | integer | yes | 0… | People with an active account who can confirm attendance in this class, at any level (class, discipline, institution). |
avaliadoresConvidados | integer | yes | 0… | People who will be able to assess but have not accepted the invitation yet. |
UsuarioAtualizar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
nome | string | no | 1–200 characters | |
nationality | string or null | no | 2–2 characters; ^[A-Za-z]{2}$ | |
locale | "pt-BR" | "es" | "en-US" or null | no | ||
status | "ATIVO" | "SUSPENSO" | no |
UsuarioContagens
Counts by status in the institution, honouring the query's search, type and role but not the status filter.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
todos | integer | yes | 0… | |
ativos | integer | yes | 0… | |
convidados | integer | yes | 0… | |
suspensos | integer | yes | 0… |
UsuarioDto
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
email | string | yes | ||
nome | string | yes | ||
status | "CONVIDADO" | "ATIVO" | "SUSPENSO" | yes | ||
nationality | string or null | yes | ||
locale | "pt-BR" | "es" | "en-US" or null | yes | ||
compartilhado | boolean | yes | Has a binding or enrollment at another institution: only the platform changes name and status. | |
jaExistia | boolean | no | Only in the create response: the email already had an account and the person was bound to it. |
UsuarioLista
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
items | list of UsuarioDto | yes | ||
total | integer | yes | 0… | |
contagens | UsuarioContagens | no |
VinculoAtualizar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
podeAvaliar | boolean | no | ||
podeCadastrar | boolean | no | ||
ativo | boolean | no |
VinculoCriar
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
usuarioId | string (uuid) | yes | ||
papel | "CURADOR" | "PRECEPTOR" | "COORDENADOR" | "PROFESSOR" | "AUXILIAR" | yes | ||
disciplinaId | string (uuid) or null | no | ||
turmaId | string (uuid) or null | no | ||
podeAvaliar | boolean | no | default: false | |
podeCadastrar | boolean | no | default: false |
VinculoDto
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
papel | "ADMIN_PLATAFORMA" | "CURADOR" | "PRECEPTOR" | "COORDENADOR" | "PROFESSOR" | "AUXILIAR" | yes | ||
instituicaoId | string (uuid) or null | yes | ||
disciplinaId | string (uuid) or null | yes | ||
turmaId | string (uuid) or null | yes | ||
podeAvaliar | boolean | yes | ||
podeCadastrar | boolean | yes |
VinculoItem
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
id | string (uuid) | yes | ||
usuarioId | string (uuid) | yes | ||
nome | string | yes | ||
email | string | yes | ||
papel | "ADMIN_PLATAFORMA" | "CURADOR" | "PRECEPTOR" | "COORDENADOR" | "PROFESSOR" | "AUXILIAR" | yes | ||
instituicaoId | string (uuid) or null | yes | ||
disciplinaId | string (uuid) or null | yes | ||
turmaId | string (uuid) or null | yes | ||
podeAvaliar | boolean | yes | ||
podeCadastrar | boolean | yes | ||
ativo | boolean | yes |