Skip to main content
PATCH
Altera uma aula

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.

lessonId
string<uuid>
required

Body

application/json
title
string
Required string length: 1 - 200
type
enum<string>
Available options:
video,
text,
audio,
file
description
string | null
Maximum string length: 5000
body
unknown
media_id
string<uuid> | null

A mídia que a aula toca. Nulo tira a mídia da aula.

attachment_ids
string<uuid>[]

Substitui os materiais da aula. [] esvazia.

duration_seconds
integer | null
Required range: x >= 0
published_at
string<date-time> | null
archived
boolean
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 alterada

data
object
required