Skip to main content
POST
Pergunta ao agente, com a resposta em streaming
A resposta é text/event-stream: quatro eventos, cada data: um JSON (ver os esquemas AgentStreamAccepted, AgentStreamDelta, AgentStreamDone e AgentStreamError). O EventSource do browser só faz GET; leia o corpo do fetch:
Gere o id antes de mostrar a pergunta na tela e reuse-o se precisar reenviar: é ele que impede a pergunta de ser feita — e cobrada — duas vezes. Se a conexão cair no meio, a resposta continua sendo gerada; leia-a em GET .../conversations/{conversationId}.

Authorizations

Authorization
string
header
required

Token OPACO de sessão de aluno, emitido por /v1/auth/sign-in e verificado contra a nossa tabela — não é JWT e não se lê nada dele.

A ida ao banco não é custo novo: toda requisição autenticada já resolve o dono da sessão. Em troca, encerrar uma sessão vale no mesmo instante, sem lista de bloqueio nem janela de tolerância.

O classroom o guarda em cookie host-only: um cookie de domínio o mandaria para os subdomínios dos outros clubs.

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.

publicId
string
required

A chave curta da URL do classroom.

Required string length: 1 - 32

Body

application/json
id
string<uuid>
required

Gerado pelo cliente. Repetido, responde 409 message_exists.

content
string
required
Required string length: 1 - 8000
conversation_id
string<uuid>

Ausente abre uma conversa nova.

image_ids
string<uuid>[]

Imagens enviadas por POST .../classroom/agent-images.

Maximum array length: 2

Response

A resposta, em eventos. Cada data: é um JSON de um dos quatro formatos, conforme o event:accepted, delta, done ou error.

O evento accepted.

conversation
object
required
question
object
required
answer
object
required
limits
object
required