{"openapi":"3.1.1","info":{"title":"Live Copiloto API","version":"1.0.0","description":"API de consulta e controle das suas lives. Bearer obrigatório. Limite de 120 requisições por minuto por chave e por processo. Sem autenticação por cookie."},"servers":[{"url":"https://api.livecopiloto.com/api/v1"}],"security":[{"BearerAuth":[]}],"tags":[{"name":"TikTok LIVE"},{"name":"Conta"},{"name":"Conexões"},{"name":"Sessões"},{"name":"Atividade"}],"paths":{"/connections/{id}/chat-session":{"get":{"operationId":"chatSession","tags":["TikTok LIVE"],"summary":"Consultar sessão do TikTok","description":"Consulte se há uma sessão salva e abra loginUrl no painel para entrar no TikTok. sessionStored não garante que a sessão ainda esteja válida. A conta conectada publica; o @ da conexão identifica a LIVE de destino. Permissão: leitura ou leitura e escrita.","x-permission":"read","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ChatSession"}},"required":["data"],"additionalProperties":false},"example":{"data":{"connectionId":"3f2b1c9e-5d4a-4b8e-9c1a-7e2d6f0a1b34","sessionStored":true,"simulate":false,"loginUrl":"/app/conexoes/3f2b1c9e-5d4a-4b8e-9c1a-7e2d6f0a1b34/conta"}}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Envio ou navegador indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"disconnectChatSession","tags":["TikTok LIVE"],"summary":"Desconectar conta do TikTok","description":"Remove cookies e armazenamento de login e cancela tentativas em andamento. Uma mensagem já submetida pode ter sido entregue; confira seu resultado no histórico. Permissão: leitura e escrita.","x-permission":"write","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Operação concluída, sem corpo."},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Envio ou navegador indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/connections/{id}/messages":{"get":{"operationId":"chatMessages","tags":["TikTok LIVE"],"summary":"Listar envios ao TikTok","description":"Retorna os últimos 50 envios desta conexão, do mais recente para o mais antigo, sem paginação. Inclui mensagens do painel e da API. sent exige confirmação com identificador; unknown exige conferência no TikTok, sem reenvio automático. Permissão: leitura ou leitura e escrita.","x-permission":"read","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"}}},"required":["data"],"additionalProperties":false},"example":{"data":[{"id":"ef58daea-3c88-4dd7-a9cd-f8c1e168a923","connectionId":"3f2b1c9e-5d4a-4b8e-9c1a-7e2d6f0a1b34","text":"Obrigado pela presença!","status":"sent","remoteMessageId":"9876543210123456789","errorCode":null,"createdAt":"2026-10-09T18:00:00.000Z","updatedAt":"2026-10-09T18:00:05.000Z"}]}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Envio ou navegador indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"sendChatMessage","tags":["TikTok LIVE"],"summary":"Enviar mensagem ao TikTok","description":"Envio experimental pela interface web. Conecte a conta no painel e desative a demonstração. Até 150 caracteres e uma tentativa a cada 10 segundos por usuário; uma em andamento por usuário e duas no servidor. Aguarda até 60 segundos. HTTP 201 registra a tentativa, inclusive failed/unknown: leia data.status. Repetição retorna 200 ou 202 se ainda em andamento. Nunca crie outra chave para repetir um resultado unknown sem conferir o chat. Permissão: leitura e escrita.","x-permission":"write","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Identificação única por conexão, de 1 a 128 caracteres (letras, números, ponto, hífen, sublinhado ou dois-pontos). Repita a mesma chave e texto após falha de rede.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-zA-Z0-9_.:-]+$"}}],"responses":{"200":{"description":"Resultado de uma tentativa com a mesma chave.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ChatMessage"},"replayed":{"type":"boolean"}},"required":["data","replayed"],"additionalProperties":false},"example":{"data":{"id":"ef58daea-3c88-4dd7-a9cd-f8c1e168a923","connectionId":"3f2b1c9e-5d4a-4b8e-9c1a-7e2d6f0a1b34","text":"Obrigado pela presença!","status":"sent","remoteMessageId":"9876543210123456789","errorCode":null,"createdAt":"2026-10-09T18:00:00.000Z","updatedAt":"2026-10-09T18:00:05.000Z"},"replayed":false}}}},"201":{"description":"Tentativa registrada. Confira data.status para saber o resultado do envio.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ChatMessage"},"replayed":{"type":"boolean"}},"required":["data","replayed"],"additionalProperties":false},"example":{"data":{"id":"ef58daea-3c88-4dd7-a9cd-f8c1e168a923","connectionId":"3f2b1c9e-5d4a-4b8e-9c1a-7e2d6f0a1b34","text":"Obrigado pela presença!","status":"sent","remoteMessageId":"9876543210123456789","errorCode":null,"createdAt":"2026-10-09T18:00:00.000Z","updatedAt":"2026-10-09T18:00:05.000Z"},"replayed":false}}}},"202":{"description":"Tentativa ainda em andamento.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ChatMessage"},"replayed":{"type":"boolean"}},"required":["data","replayed"],"additionalProperties":false},"example":{"data":{"id":"ef58daea-3c88-4dd7-a9cd-f8c1e168a923","connectionId":"3f2b1c9e-5d4a-4b8e-9c1a-7e2d6f0a1b34","text":"Obrigado pela presença!","status":"sent","remoteMessageId":"9876543210123456789","errorCode":null,"createdAt":"2026-10-09T18:00:00.000Z","updatedAt":"2026-10-09T18:00:05.000Z"},"replayed":false}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Envio ou navegador indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"additionalProperties":false,"properties":{"text":{"type":"string","minLength":1,"maxLength":150,"description":"Uma linha, sem caracteres de controle; espaços nas pontas são removidos."}}},"example":{"text":"Obrigado pela presença!"}}}}}},"/connections/{id}/messages/{messageId}":{"get":{"operationId":"chatMessage","tags":["TikTok LIVE"],"summary":"Consultar um envio","description":"Consulta uma tentativa pelo UUID. Os estados são sending (em andamento), sent (confirmado), failed (não enviado ou recusado) e unknown (resultado incerto). Um resultado incerto nunca é repetido automaticamente. Permissão: leitura ou leitura e escrita.","x-permission":"read","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}},{"name":"messageId","in":"path","required":true,"description":"UUID retornado ao criar a tentativa.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ChatMessage"}},"required":["data"],"additionalProperties":false},"example":{"data":{"id":"ef58daea-3c88-4dd7-a9cd-f8c1e168a923","connectionId":"3f2b1c9e-5d4a-4b8e-9c1a-7e2d6f0a1b34","text":"Obrigado pela presença!","status":"sent","remoteMessageId":"9876543210123456789","errorCode":null,"createdAt":"2026-10-09T18:00:00.000Z","updatedAt":"2026-10-09T18:00:05.000Z"}}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Envio ou navegador indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/me":{"get":{"operationId":"account","tags":["Conta"],"summary":"Consultar sua conta","description":"Identifica a conta associada à chave. Não retorna permissões administrativas nem dados de autenticação. Permissão: leitura ou leitura e escrita.","x-permission":"read","parameters":[],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Account"}},"required":["data"],"additionalProperties":false},"example":{"data":{"id":"0d9c4e6b-7a15-4c3f-8e2a-b6f1d5a79c03","name":"João Criador","email":"joao@example.com"}}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/connections":{"get":{"operationId":"connections","tags":["Conexões"],"summary":"Listar conexões","description":"Lista as conexões da sua conta em ordem de criação. Credenciais das plataformas e links privados de overlay não são retornados. Permissão: leitura ou leitura e escrita.","x-permission":"read","parameters":[{"name":"limit","in":"query","description":"Quantidade por página (1–100).","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"afterId","in":"query","description":"UUID do último item da página anterior (o nextAfterId); sem ele a lista começa do início, em ordem crescente.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Connection"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"],"additionalProperties":false},"example":{"data":[{"id":"3f2b1c9e-5d4a-4b8e-9c1a-7e2d6f0a1b34","platform":"tiktok","provider":"ttl-live","uniqueId":"seu.canal","label":"Live principal","aiMode":"copiloto","simulate":false,"createdAt":"2026-10-09T18:00:00.000Z","updatedAt":"2026-10-09T18:00:00.000Z"}],"pagination":{"limit":50,"hasMore":false,"nextAfterId":null}}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/connections/{id}":{"get":{"operationId":"connection","tags":["Conexões"],"summary":"Consultar uma conexão","description":"Retorna a plataforma, o canal e o modo do copiloto. Crie e configure conexões pelo painel antes de usar a API. Permissão: leitura ou leitura e escrita.","x-permission":"read","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Connection"}},"required":["data"],"additionalProperties":false},"example":{"data":{"id":"3f2b1c9e-5d4a-4b8e-9c1a-7e2d6f0a1b34","platform":"tiktok","provider":"ttl-live","uniqueId":"seu.canal","label":"Live principal","aiMode":"copiloto","simulate":false,"createdAt":"2026-10-09T18:00:00.000Z","updatedAt":"2026-10-09T18:00:00.000Z"}}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/connections/{id}/status":{"get":{"operationId":"status","tags":["Conexões"],"summary":"Consultar o estado da escuta","description":"Retorna o estado atual da escuta, espectadores e ID da sessão em andamento. Use liveSessionId para consultar eventos e respostas. Detalhes de falhas ficam no painel. Permissão: leitura ou leitura e escrita.","x-permission":"read","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Status"}},"required":["data"],"additionalProperties":false},"example":{"data":{"state":"ao_vivo","since":"2026-10-09T18:00:00.000Z","viewers":1240,"liveSessionId":"8a6e0d52-1f3c-4e7b-a9d4-2c5b7e1f9a60"}}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/connections/{id}/start":{"post":{"operationId":"start","tags":["Conexões"],"summary":"Iniciar a escuta","description":"Inicia a leitura da live com as configurações salvas, incluindo o modo demonstração. Não inicia a transmissão na rede social. A IA pode consumir créditos do provedor quando ativada. Uma falha de conexão retorna 409; confira o painel antes de tentar novamente. Permissão: leitura e escrita.","x-permission":"write","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Status"}},"required":["data"],"additionalProperties":false},"example":{"data":{"state":"ao_vivo","since":"2026-10-09T18:00:00.000Z","viewers":1240,"liveSessionId":"8a6e0d52-1f3c-4e7b-a9d4-2c5b7e1f9a60"}}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false},"example":{}}}}}},"/connections/{id}/stop":{"post":{"operationId":"stop","tags":["Conexões"],"summary":"Parar a escuta","description":"Encerra a escuta e a sessão local, preservando seu histórico. A transmissão na plataforma continua. Permissão: leitura e escrita.","x-permission":"write","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Status"}},"required":["data"],"additionalProperties":false},"example":{"data":{"state":"parado","since":"2026-10-09T19:00:00.000Z","viewers":0,"liveSessionId":null}}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false},"example":{}}}}}},"/connections/{id}/sessions":{"get":{"operationId":"sessions","tags":["Sessões"],"summary":"Listar sessões de uma conexão","description":"Percorre o histórico de sessões em ordem de criação, com métricas acumuladas de cada live. Permissão: leitura ou leitura e escrita.","x-permission":"read","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","description":"Quantidade por página (1–100).","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"afterId","in":"query","description":"UUID do último item da página anterior (o nextAfterId); sem ele a lista começa do início, em ordem crescente.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Session"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"],"additionalProperties":false},"example":{"data":[{"id":"8a6e0d52-1f3c-4e7b-a9d4-2c5b7e1f9a60","connectionId":"3f2b1c9e-5d4a-4b8e-9c1a-7e2d6f0a1b34","source":"tiktok","startedAt":"2026-10-09T18:00:00.000Z","endedAt":null,"endReason":null,"peakViewers":1240,"totalComments":356,"totalGifts":12,"totalDiamonds":50,"totalLikes":860,"totalMembers":28,"totalFollows":15,"totalShares":9,"totalReplies":24}],"pagination":{"limit":50,"hasMore":false,"nextAfterId":null}}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sessions/{id}":{"get":{"operationId":"session","tags":["Sessões"],"summary":"Consultar sessão e métricas","description":"Retorna início, encerramento e totais da sessão. endedAt igual a null indica uma sessão aberta. Permissão: leitura ou leitura e escrita.","x-permission":"read","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Session"}},"required":["data"],"additionalProperties":false},"example":{"data":{"id":"8a6e0d52-1f3c-4e7b-a9d4-2c5b7e1f9a60","connectionId":"3f2b1c9e-5d4a-4b8e-9c1a-7e2d6f0a1b34","source":"tiktok","startedAt":"2026-10-09T18:00:00.000Z","endedAt":null,"endReason":null,"peakViewers":1240,"totalComments":356,"totalGifts":12,"totalDiamonds":50,"totalLikes":860,"totalMembers":28,"totalFollows":15,"totalShares":9,"totalReplies":24}}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sessions/{id}/events":{"get":{"operationId":"events","tags":["Atividade"],"summary":"Ler eventos do chat","description":"Retorna eventos normalizados em ordem de criação. Para acompanhar novos eventos, consulte a cada 5 segundos e use o UUID do último item recebido como afterId. Os tipos dependem da plataforma. Payloads brutos e credenciais são omitidos. Permissão: leitura ou leitura e escrita.","x-permission":"read","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","description":"Quantidade por página (1–100).","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"afterId","in":"query","description":"UUID do último item da página anterior (o nextAfterId); sem ele a lista começa do início, em ordem crescente.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Event"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"],"additionalProperties":false},"example":{"data":[{"id":"5e7a3c18-9b2d-4a61-b0f4-d83c6e1a7529","liveSessionId":"8a6e0d52-1f3c-4e7b-a9d4-2c5b7e1f9a60","type":"comment","text":"Onde está o link?","amount":null,"diamonds":null,"occurredAt":"2026-10-09T18:01:00.000Z","user":{"uniqueId":"carla","nickname":"Carla"}}],"pagination":{"limit":50,"hasMore":false,"nextAfterId":null}}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sessions/{id}/replies":{"get":{"operationId":"replies","tags":["Atividade"],"summary":"Listar respostas do copiloto","description":"Lista sugestões, respostas publicadas e descartadas. O cursor descobre novas respostas; releia a página correspondente para atualizar o status de respostas anteriores. Permissão: leitura ou leitura e escrita.","x-permission":"read","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","description":"Quantidade por página (1–100).","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"afterId","in":"query","description":"UUID do último item da página anterior (o nextAfterId); sem ele a lista começa do início, em ordem crescente.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Reply"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"],"additionalProperties":false},"example":{"data":[{"id":"c1d94b7a-62e8-4f0d-8b35-a7e10c9d2f48","liveSessionId":"8a6e0d52-1f3c-4e7b-a9d4-2c5b7e1f9a60","eventId":"5e7a3c18-9b2d-4a61-b0f4-d83c6e1a7529","kind":"resposta","targetUniqueId":"carla","text":"O link está fixado na live, Carla!","status":"sugerida","createdAt":"2026-10-09T18:01:00.000Z","publishedAt":null}],"pagination":{"limit":50,"hasMore":false,"nextAfterId":null}}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/replies/{id}/publish":{"post":{"operationId":"publish","tags":["Atividade"],"summary":"Publicar resposta no overlay","description":"Publica uma sugestão no overlay da live. Não envia ao chat da rede social. Exige sessão aberta, resposta sugerida e tipo diferente de aviso. Repetir a ação retorna 409 sem republicar. Permissão: leitura e escrita.","x-permission":"write","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Reply"}},"required":["data"],"additionalProperties":false},"example":{"data":{"id":"c1d94b7a-62e8-4f0d-8b35-a7e10c9d2f48","liveSessionId":"8a6e0d52-1f3c-4e7b-a9d4-2c5b7e1f9a60","eventId":"5e7a3c18-9b2d-4a61-b0f4-d83c6e1a7529","kind":"resposta","targetUniqueId":"carla","text":"O link está fixado na live, Carla!","status":"publicada","createdAt":"2026-10-09T18:01:00.000Z","publishedAt":"2026-10-09T18:02:00.000Z"}}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false},"example":{}}}}}},"/replies/{id}/discard":{"post":{"operationId":"discard","tags":["Atividade"],"summary":"Descartar uma sugestão","description":"Descarta uma resposta ainda sugerida, inclusive avisos e sugestões de sessões encerradas. Respostas publicadas ou já descartadas retornam 409. Permissão: leitura e escrita.","x-permission":"write","parameters":[{"name":"id","in":"path","required":true,"description":"UUID do recurso indicado na URL, pertencente à sua conta.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operação concluída.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Reply"}},"required":["data"],"additionalProperties":false},"example":{"data":{"id":"c1d94b7a-62e8-4f0d-8b35-a7e10c9d2f48","liveSessionId":"8a6e0d52-1f3c-4e7b-a9d4-2c5b7e1f9a60","eventId":"5e7a3c18-9b2d-4a61-b0f4-d83c6e1a7529","kind":"resposta","targetUniqueId":"carla","text":"O link está fixado na live, Carla!","status":"descartada","createdAt":"2026-10-09T18:01:00.000Z","publishedAt":null}}}}},"400":{"description":"JSON ou URL inválida.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Chave ausente, inválida, expirada, revogada ou conta desativada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Esta operação exige permissão de escrita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Recurso inexistente ou de outra conta.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Estado atual não permite a ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Corpo acima de 64 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use Content-Type: application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Parâmetro inválido ou corpo não vazio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limite de requisições atingido. Aguarde Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Segundos até a próxima tentativa.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Falha interna.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false},"example":{}}}}}}},"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Chave criada em /app/developers. Use somente em seu servidor."}},"schemas":{"ChatMessage":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"connectionId":{"type":"string","format":"uuid"},"text":{"type":"string"},"status":{"enum":["sending","sent","failed","unknown"]},"remoteMessageId":{"type":["string","null"]},"errorCode":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","connectionId","text","status","remoteMessageId","errorCode","createdAt","updatedAt"],"additionalProperties":false},"ChatSession":{"type":"object","properties":{"connectionId":{"type":"string","format":"uuid"},"sessionStored":{"type":"boolean"},"simulate":{"type":"boolean"},"loginUrl":{"type":"string"}},"required":["connectionId","sessionStored","simulate","loginUrl"],"additionalProperties":false},"Account":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"email":{"type":"string","format":"email"}},"required":["id","name","email"],"additionalProperties":false},"Connection":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"platform":{"type":"string"},"provider":{"type":"string"},"uniqueId":{"type":"string"},"label":{"type":["string","null"]},"aiMode":{"enum":["desligado","copiloto","overlay"]},"simulate":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","platform","provider","uniqueId","label","aiMode","simulate","createdAt","updatedAt"],"additionalProperties":false},"Status":{"type":"object","properties":{"state":{"type":"string"},"since":{"type":["string","null"],"format":"date-time"},"viewers":{"type":"integer","minimum":0},"liveSessionId":{"type":["string","null"],"format":"uuid"}},"required":["state","since","viewers","liveSessionId"],"additionalProperties":false},"Session":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"connectionId":{"type":"string","format":"uuid"},"source":{"type":"string"},"startedAt":{"type":"string","format":"date-time"},"endedAt":{"type":["string","null"],"format":"date-time"},"endReason":{"type":["string","null"]},"peakViewers":{"type":"integer","minimum":0},"totalComments":{"type":"integer","minimum":0},"totalGifts":{"type":"integer","minimum":0},"totalDiamonds":{"type":"integer","minimum":0},"totalLikes":{"type":"integer","minimum":0},"totalMembers":{"type":"integer","minimum":0},"totalFollows":{"type":"integer","minimum":0},"totalShares":{"type":"integer","minimum":0},"totalReplies":{"type":"integer","minimum":0}},"required":["id","connectionId","source","startedAt","endedAt","endReason","peakViewers","totalComments","totalGifts","totalDiamonds","totalLikes","totalMembers","totalFollows","totalShares","totalReplies"],"additionalProperties":false},"Event":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"liveSessionId":{"type":"string","format":"uuid"},"type":{"type":"string"},"text":{"type":["string","null"]},"amount":{"type":["number","null"]},"diamonds":{"type":["number","null"]},"occurredAt":{"type":"string","format":"date-time"},"user":{"anyOf":[{"type":"object","properties":{"uniqueId":{"type":["string","null"]},"nickname":{"type":["string","null"]}},"required":["uniqueId","nickname"],"additionalProperties":false},{"type":"null"}]}},"required":["id","liveSessionId","type","text","amount","diamonds","occurredAt","user"],"additionalProperties":false},"Reply":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"liveSessionId":{"type":"string","format":"uuid"},"eventId":{"type":["string","null"],"format":"uuid"},"kind":{"type":"string"},"targetUniqueId":{"type":["string","null"]},"text":{"type":"string"},"status":{"enum":["sugerida","publicada","descartada"]},"createdAt":{"type":"string","format":"date-time"},"publishedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","liveSessionId","eventId","kind","targetUniqueId","text","status","createdAt","publishedAt"],"additionalProperties":false},"Pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"hasMore":{"type":"boolean"},"nextAfterId":{"type":["string","null"],"format":"uuid"}},"required":["limit","hasMore","nextAfterId"],"additionalProperties":false},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"}},"required":["code","message","requestId"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}