Skip to main content
POST
Cria uma aula no fim do módulo

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.

moduleId
string<uuid>
required

Body

application/json
title
string
required
Required string length: 1 - 200
type
enum<string>
required
Available options:
video,
text,
audio,
file
description
string
Maximum string length: 5000
body
any

O documento do editor, opaco para a API.

media_id
string<uuid>

A mídia que a aula toca, da biblioteca do club.

attachment_ids
string<uuid>[]

Os materiais da aula, na ordem. Substitui o conjunto inteiro.

duration_seconds
integer
Required range: x >= 0
published_at
string<date-time>
release
object

A agenda de liberação, como EXPRESSÃO: quando a aula (ou o módulo) abre para quem já tem direito a ela. Nunca amplia direito — só segura o que a matrícula já deu.

Cada condição responde com uma DATA, não com sim ou não, e é por isso que elas compõem sem ambiguidade: all é a maior das datas, any é a menor. Condição que depende de algo que o aluno ainda não fez não tem data: dentro de all ela segura tudo, dentro de any ela é só um caminho que ainda não abriu.

As folhas são todas MONÓTONAS — uma vez verdadeiras, verdadeiras para sempre:

  • immediate: sem condição.
  • days_after_start: days dias depois de o acesso começar (a matrícula mais antiga que abre o curso, ou o início da turma).
  • on_date: na data at.
  • after_previous: depois de concluir a aula anterior na ordem do curso. Na primeira aula, libera.
  • after_lesson: depois de concluir a aula lesson_id, do mesmo curso.
  • after_module: depois de concluir todas as aulas de module_id.
  • after_count: depois de concluir count aulas do curso.

days atrasa o que o nó decidiu ("7 dias depois de concluir o módulo 1") e vale em qualquer nó, menos em immediate.

Quem tem direito é pergunta de matrícula, não de agenda: não há condição de turma, de etiqueta nem de perfil aqui, de propósito — elas podem deixar de valer, e acesso que oscila é acesso que ninguém sabe explicar.

A aula referenciada que sai do curso (arquivada, despublicada) deixa de segurar: esperar por uma conclusão que não pode mais acontecer trancaria o curso para sempre.

Response

Aula criada

data
object
required