API — Banco de questões (admin-ext)
Contexto
| Item | Valor |
|---|---|
| Prefixo global da API | /api |
| Prefixo do grupo | /admin-ext/questoes |
| Base completa | /api/admin-ext/questoes |
| Autenticação | Token Bearer; usuário institucional com instituição vinculada (mesmo critério de /api/admin-ext/simulados). |
Respostas de validação na busca principal (GET /api/admin-ext/questoes):
{
"success": false,
"message": "Erro de validação",
"errors": {}
}
HTTP 422.
1. Buscar questões (paginado)
| Campo | Valor |
|---|---|
| Método | GET |
| Path | /api/admin-ext/questoes |
Parâmetros de query permitidos
Somente as chaves abaixo são aceitas; qualquer outra chave na query gera erro 422 (“Parâmetro não permitido.”).
| Parâmetro | Regras |
|---|---|
name |
nullable, string, máx. 65535 — busca no texto do enunciado |
page |
nullable, inteiro ≥ 1 |
limit |
nullable, inteiro de 1 a 100 |
simulated_id |
nullable, inteiro ≥ 1 — usado com included para filtrar questões já no simulado externo ou disponíveis |
included |
nullable, boolean — com simulated_id: true = só questões já no simulado; false = só as que ainda não estão |
uf |
nullable, string, tamanho 2 (UF da banca) |
specificallies |
nullable, array de inteiros ≥ 1 |
tests |
nullable, array de inteiros ≥ 1 (IDs de provas) |
type |
nullable, objetiva ou discursiva |
commented |
nullable, boolean — filtra presença de comentário na questão |
themes |
nullable, array de inteiros ≥ 1 |
areas |
nullable, array de inteiros ≥ 1 |
specialties |
nullable, array de inteiros ≥ 1 |
years |
nullable, array de inteiros ≥ 1 |
institutions |
nullable, array de inteiros ≥ 1 |
Observação: em alguns ambientes a mensagem de erro de validação da UF pode mencionar tamanho incorreto; o valor válido continua sendo string de 2 caracteres.
Comportamento da busca
- Inclui, por padrão, questões ativas e não anuladas.
- Ordenação por
iddescendente. - O parâmetro
typefiltra questões objetivas ou discursivas.
Saída (200)
{
"total": 0,
"page": 1,
"limit": 10,
"data": [
{
"id": "1",
"statement": "",
"type": "objetiva",
"themes": [{ "id": 1, "name": "" }],
"areas": [],
"specialties": [],
"specifically": null,
"difficulty": null,
"status": "ativa",
"exam": null,
"alternatives": [],
"correct": null,
"created_at": "2026-01-01T00:00:00+00:00"
}
]
}
Valores típicos de status no item: ativa, inativa, anulada, desatualizada. Na busca padrão prevalecem questões ativas e não anuladas; outros status podem aparecer se os critérios da API forem alterados.
Campos extras quando simulated_id está presente
Se a requisição incluir simulated_id (validado), a resposta acrescenta contagens com os mesmos filtros da página atual, variando só included:
{
"total": 0,
"page": 1,
"limit": 10,
"data": [],
"adicionadas": 0,
"disponiveis": 0
}
adicionadas: total comincluded = true(questões já no simulado externo indicado).disponiveis: total comincluded = false(não vinculadas a esse simulado externo).
2. Filtros — Temas
| Campo | Valor |
|---|---|
| Método | GET |
| Path | /api/admin-ext/questoes/filters/themes |
Entrada (query)
| Parâmetro | Observação |
|---|---|
specialties ou specialty |
Lista de IDs de especialidade. Aceita array na query (specialties[]=1&specialties[]=2), valor único ou string com vírgulas; apenas inteiros positivos são considerados. |
Saída (200)
Array de objetos { "id", "name" } de temas, opcionalmente filtrados pelas especialidades informadas.
3. Filtros — Grandes áreas (medicina)
| Campo | Valor |
|---|---|
| Método | GET |
| Path | /api/admin-ext/questoes/filters/areas |
Entrada
Nenhum.
Saída (200)
Array de { "id", "name" } de grandes áreas (medicina), ordenado por nome.
4. Filtros — Especialidades
| Campo | Valor |
|---|---|
| Método | GET |
| Path | /api/admin-ext/questoes/filters/specialties |
Entrada (query)
| Parâmetro | Observação |
|---|---|
areas ou area |
IDs de grande área; mesma convenção de lista que em Filtros — Temas. |
Saída (200)
Array de { "id", "name" } de especialidades, filtrado pelas grandes áreas quando informadas.
5. Filtros — Finalidades (specificallies)
| Campo | Valor |
|---|---|
| Método | GET |
| Path | /api/admin-ext/questoes/filters/finalidades |
Entrada
Nenhum.
Saída (200)
Array de { "id", "name" } de finalidades (specificallies), ordenado por nome.
6. Filtros — Provas (exams)
| Campo | Valor |
|---|---|
| Método | GET |
| Path | /api/admin-ext/questoes/filters/exams |
Entrada (query)
| Parâmetro | Observação |
|---|---|
uf |
UF da banca (string; comparada em maiúsculas) |
ano |
ID do ano da prova |
specificallies |
Array ou lista separada por vírgula com IDs de finalidade |
institutions |
IDs de instituição (banca) |
Considera provas no formato padrão do catálogo, relacionando banca e ano. Cada item retornado:
{
"id": 1,
"name": "Nome da banca Ano"
}
7. Filtros — Anos
| Campo | Valor |
|---|---|
| Método | GET |
| Path | /api/admin-ext/questoes/filters/years |
Entrada (query)
| Parâmetro | Observação |
|---|---|
uf |
Opcional; restringe a anos que aparecem em provas cuja instituição tem essa UF |
Saída (200)
Array de { "id", "name" } de anos (únicos no resultado), ordenado por nome.
8. Filtros — Instituições (bancas)
| Campo | Valor |
|---|---|
| Método | GET |
| Path | /api/admin-ext/questoes/filters/institutions |
Entrada (query)
| Parâmetro | Observação |
|---|---|
prova |
ID da prova |
finalidade |
ID da finalidade; combina com specificallies quando ambos forem enviados |
specificallies |
IDs adicionais de finalidade |
uf |
String ou array; vírgulas separam várias UFs; valores tratados em maiúsculas |
year ou years |
IDs de ano |
Saída (200)
Array de objetos com pelo menos id, name, uf de cada banca, ordenado por nome.
Agregado único de filtros
Não há endpoint que devolva todos os filtros (dificuldades, temas, áreas, etc.) em uma única resposta. Utilize os caminhos /filters/... documentados nesta página.