Skip to main content
POST
Pede uma ação em lote
A ação anda em segundo plano, em lotes. Acompanhe o andamento com Andamento de ação em lote até status ser done ou failed.

Authorizations

Authorization
string
header
required

Token OPACO de sessão de quem administra, emitido por /v1/auth/admin/sign-in e verificado contra a nossa tabela — o mesmo desenho do studentSession, para a outra identidade.

É o esquema de quem ADMINISTRA — o dashboard. O aluno do classroom usa o studentSession; uma rota consumida pelos dois declara os dois esquemas, e o middleware aceita qualquer um deles. As duas credenciais são opacas e chegam pelo mesmo cabeçalho: quem as separa é a tabela em que cada uma existe.

O dashboard o guarda em cookie httpOnly, que o BFF troca pelo Authorization a cada chamada.

Path Parameters

clubId
string<uuid>
required

Id público da organização — o mesmo que GET /v1/me devolve em organization_id.

Na URL o recurso se chama club; no contrato e no domínio, organization. A divergência é deliberada: clubs é a palavra do produto, e a URL é o que as pessoas leem.

É o identificador do provedor de autenticação, e é assim de propósito: o cliente precisa nomear a organização ao pedir o token, e o token é o que prova o escopo. Um id só nosso obrigaria a traduzir um no outro antes de ter um token — e a tradução exigiria uma chamada escopada, que é justamente a que ainda não dá para fazer.

O uuid interno da organização não aparece no contrato: ele é o que as chaves estrangeiras do domínio referenciam, e continua sendo nosso.

Body

application/json

Quem a ação alcança vem em target_ids OU em target_query — um dos dois, nunca os dois.

kind
enum<string>
required
Available options:
students_tag,
students_untag,
students_grant,
students_cohort,
students_expiry
target_query
object

"Todos do filtro": os mesmos filtros de GET .../students, resolvidos pela API NO PEDIDO — a ação alcança quem estava no recorte quando foi pedida. Contas removidas e as de quem administra o club ficam de fora. Mais de 5000 alunos no recorte responde 422 selection_too_large.

target_ids
string<uuid>[]
Required array length: 1 - 5000 elements
tag_id
string<uuid>

A tag de students_tag e students_untag.

delivery_id
string<uuid>

A entrega de students_grant.

cohort_id
string<uuid> | null

Em students_grant, a mesma regra da concessão individual. Em students_cohort, obrigatório: a turma de destino.

expires_at
string<date-time>

Em students_grant, o fim do acesso; ausente é o da turma, ou vitalício. Em students_expiry com expiry_mode date, a data nova (no futuro).

expiry_mode
enum<string>

Em students_expiry: date usa expires_at; add_days soma days à validade de cada matrícula (a vitalícia continua vitalícia); from_today é hoje mais days, a mesma data para todos; lifetime tira a data.

Available options:
date,
add_days,
from_today,
lifetime
days
integer

Em students_expiry, os dias de add_days e from_today.

Required range: 1 <= x <= 3650

Response

Na fila

data
object
required