{"openapi":"3.0.3","info":{"title":"MVO WhatsApp API — cliente-01","version":"1.0.0","description":"API da instância cliente-01. Clique em Authorize e informe somente seu token de instância. Conecte o WhatsApp, acompanhe os eventos e envie mensagens. A autorização é verificada no servidor em todas as requisições. HTTP 202 significa comando em processamento; consulte jobs/{job_id}. Mensagens e Business exigem sessão conectada."},"servers":[{"url":"/","description":"Mesmo servidor e protocolo deste Swagger"}],"tags":[{"name":"Sessão","description":"Conexão, reconexão e vínculo WhatsApp."},{"name":"Mensagens","description":"Envio de mensagens."},{"name":"Canais","description":"Canais públicos: configuração, administradores, diretório, seguidores, métricas e publicações."},{"name":"Status","description":"Publicações temporárias: texto, mídia, privacidade, interações e visualizações observadas."},{"name":"Comunidades","description":"Criação, membros, administradores, convites, subgrupos, solicitações e configurações."},{"name":"Eventos e jobs","description":"Eventos recebidos e resultados de comandos."},{"name":"Webhooks","description":"Eventos em seu servidor HTTPS."},{"name":"WhatsApp Business","description":"Perfil, produtos, coleções, carrinho, etiquetas e ferramentas comerciais."}],"paths":{"/v1/instances/cliente-01":{"get":{"operationId":"instance_status","summary":"Consultar estado da instância","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstanceResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[]}},"/v1/instances/cliente-01/connect":{"post":{"operationId":"instance_connect","summary":"Conectar por QR Code ou código","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[{"name":"wait","in":"query","required":false,"schema":{"type":"number","minimum":0,"maximum":10,"default":0},"description":"Espera até 10 segundos pela geração do QR/código."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectRequest"},"examples":{"qrcode":{"summary":"Gerar ou atualizar QR Code","value":{"mode":"qrcode"}},"codigo":{"summary":"Vincular por número e código","value":{"mode":"codigo","numero":"5511999999999"}}}}}},"description":"Inicia o worker preservando a sessão registrada. Consulte novamente respeitando refresh_after_ms ou acompanhe auth_qr nos eventos. Uma sessão salva pode voltar sem novo QR. Cadastro por SMS/ligação não está disponível."}},"/v1/instances/cliente-01/stop":{"post":{"operationId":"instance_stop","summary":"Pausar preservando credenciais","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"description":"Pausa a instância. Use connect ou restart para retomar."}},"/v1/instances/cliente-01/restart":{"post":{"operationId":"instance_restart","summary":"Reiniciar preservando o vínculo","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"description":"Reinicia o worker reutilizando as credenciais salvas."}},"/v1/instances/cliente-01/reset":{"post":{"operationId":"instance_reset","summary":"Arquivar credenciais e preparar novo vínculo","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"description":"Arquiva as credenciais e solicita novo pareamento. Ação explícita do cliente."}},"/v1/instances/cliente-01/logout":{"delete":{"operationId":"instance_logout","summary":"Revogar vínculo no WhatsApp","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"description":"Desvincula a sessão no WhatsApp. Será necessário parear novamente. POST anterior continua aceito por compatibilidade."}},"/v1/instances/cliente-01/messages":{"post":{"operationId":"instance_send_message","summary":"Enviar mensagem","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageRequest"},"examples":{"text":{"summary":"text","value":{"type":"text","payload":{"messageData":{"numero":"5511999999999","text":"Olá! Esta mensagem foi enviada pela API MVO."}}}},"reply":{"summary":"reply","value":{"type":"reply","payload":{"messageData":{"numero":"5511999999999","text":"Olá! Vou ajudar você."},"mensagem":{"key":{"id":"3EB0MVOEXEMPLO001","remoteJid":"5511999999999@s.whatsapp.net","fromMe":false},"message":{"conversation":"Olá! Preciso de ajuda."}}}}},"forward":{"summary":"forward","value":{"type":"forward","payload":{"numero":"5511999999999","mensagem":{"key":{"id":"3EB0MVOEXEMPLO001","remoteJid":"5511999999999@s.whatsapp.net","fromMe":false},"message":{"conversation":"Olá! Preciso de ajuda."}}}}},"media":{"summary":"media","value":{"type":"media","payload":{"messageData":{"numero":"5511999999999","type":"image","base64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+jVZkAAAAASUVORK5CYII=","caption":"Imagem MVO","mimeType":"image/png"}}}},"voice":{"summary":"voice","value":{"type":"voice","payload":{"messageData":{"numero":"5511999999999","url":"https://seu-cdn.example/audio.ogg","mimeType":"audio/ogg; codecs=opus","seconds":5}}}},"link":{"summary":"link","value":{"type":"link","payload":{"messageData":{"numero":"5511999999999","text":"Conheça a MVO: https://www.mvo.host/","sourceUrl":"https://www.mvo.host/","title":"MVO","body":"Hospedagem e tecnologia"}}}},"poll":{"summary":"poll","value":{"type":"poll","payload":{"messageData":{"numero":"5511999999999","pergunta":"Como prefere ser atendido?","opcoes":["WhatsApp","Telefone","E-mail"],"selectableCount":1}}}},"location":{"summary":"location","value":{"type":"location","payload":{"messageData":{"numero":"5511999999999","coordenadas":{"latitude":-23.5505,"longitude":-46.6333},"name":"São Paulo","address":"São Paulo, SP"}}}},"contact":{"summary":"contact","value":{"type":"contact","payload":{"messageData":{"numero":"5511999999999","vcard":{"fullName":"Equipe MVO","phoneNumber":"5511999999999","organization":"MVO Host"}}}}},"form":{"summary":"form","value":{"type":"form","payload":{"messageData":{"numero":"5511999999999","texto":"Como você prefere ser atendido?","titulo":"Atendimento MVO","cta":"Responder","steps":[{"id":"preferencia","label":"Escolha o atendimento","selection":"single","options":[{"id":"suporte","title":"Suporte técnico"},{"id":"comercial","title":"Comercial"}],"allow_custom_answer":true}]}}}},"flow":{"summary":"flow","value":{"type":"flow","payload":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_json":{"version":"7.3","screens":[{"id":"INICIO","title":"Cadastro MVO","terminal":true,"success":true,"data":{},"layout":{"type":"SingleColumnLayout","children":[{"type":"Form","name":"form","children":[{"type":"TextInput","name":"name","label":"Nome","required":true},{"type":"Footer","label":"Enviar","on-click-action":{"name":"complete","payload":{"name":"${form.name}"}}}]}]}}]}}}}},"flow.navigate":{"summary":"flow.navigate","value":{"type":"flow.navigate","payload":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_json":{"version":"7.3","screens":[{"id":"INICIO","title":"Cadastro MVO","terminal":true,"success":true,"data":{},"layout":{"type":"SingleColumnLayout","children":[{"type":"Form","name":"form","children":[{"type":"TextInput","name":"name","label":"Nome","required":true},{"type":"Footer","label":"Enviar","on-click-action":{"name":"complete","payload":{"name":"${form.name}"}}}]}]}}]}}}}},"flow.exchange":{"summary":"flow.exchange","value":{"type":"flow.exchange","payload":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_id":"123456789012345","data_api_version":"3.0"}}}},"buttons":{"summary":"buttons","value":{"type":"buttons","payload":{"messageData":{"numero":"5511999999999","texto":"Como podemos ajudar?","botoes":[{"type":"quick_reply","id":"suporte","texto":"Suporte"},{"type":"quick_reply","id":"vendas","texto":"Vendas"}]}}}},"list":{"summary":"list","value":{"type":"list","payload":{"messageData":{"numero":"5511999999999","titulo":"Atendimento MVO","texto":"Selecione o serviço desejado","textoBotao":"Ver serviços","footer":"MVO","secoes":[{"titulo":"Serviços","opcoes":[{"id":"hospedagem","titulo":"Hospedagem","texto":"Conhecer nossos planos"},{"id":"suporte","titulo":"Suporte","texto":"Falar com a equipe"}]}]}}}},"charge":{"summary":"charge","value":{"type":"charge","payload":{"numero":"5511999999999","body":{"texto":"Cobrança do plano MVO","header":{"title":"Pedido MVO-001"},"footer":"MVO","items":[{"retailer_id":"plano-01","name":"Hospedagem","amount":{"value":2990,"offset":100},"quantity":1}],"UrlEnabled":true,"urlData":{"uri":"https://www.mvo.host/"}}}}},"payment":{"summary":"payment","value":{"type":"payment","payload":{"messageData":{"numero":"5511999999999","text":"Pedido MVO-001","valor":29.9}}}},"event":{"summary":"event","value":{"type":"event","payload":{"messageData":{"numero":"5511999999999","evento":{"name":"Demonstração MVO","startDate":1800000000,"endDate":1800003600,"description":"Apresentação do serviço","location":{"latitude":-23.5505,"longitude":-46.6333,"name":"São Paulo"}}}}}},"reaction":{"summary":"reaction","value":{"type":"reaction","payload":{"messageData":{"numero":"5511999999999","key":{"id":"3EB0MVOEXEMPLO001","fromMe":false},"reacao":"👍"}}}},"edit":{"summary":"edit","value":{"type":"edit","payload":{"messageData":{"numero":"5511999999999","text":"Texto corrigido pela API MVO","keyMsg":{"id":"3EB0MVOEXEMPLO001","remoteJid":"5511999999999@s.whatsapp.net","fromMe":true}}}}},"delete":{"summary":"delete","value":{"type":"delete","payload":{"messageData":{"numero":"5511999999999","key":{"id":"3EB0MVOEXEMPLO001","remoteJid":"5511999999999@s.whatsapp.net","fromMe":true}}}}},"text_username":{"summary":"Enviar para username","value":{"type":"text","payload":{"messageData":{"numero":"maik.venancio","text":"Olá! Esta mensagem foi enviada pela API MVO."}}}},"text_username_pin":{"summary":"Username que exige chave de contato","value":{"type":"text","payload":{"messageData":{"numero":"@maik.venancio:1234","text":"Olá pela API MVO!"}}}}}}}},"description":"type seleciona message.{type}; payload contém os campos dessa operação. Texto: payload.numero e payload.text. Imagem: type=media e payload.type=image. HTTP 202 fornece um job; resultado e recibos chegam posteriormente."}},"/v1/instances/cliente-01/messages/form":{"post":{"operationId":"instance_send_form","summary":"Enviar formulário nativo sem cadastro Meta","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar formulário nativo form_message/a2ui_form pela sessão PHP, sem cadastro Meta, flow_id, flow_token ou endpoint. Use 1 a 3 etapas. platform=portable é o padrão, com escolhas de 1 a 5 opções por etapa validadas no Web e Android. platform=android habilita kind=input com 1 a 5 campos de texto, validado no Android; não prometa compatibilidade Web para InputFields. Não recebe flow_json, schema bruto nem metadados de protocolo. Respostas chegam em parsedFormResponse nos eventos e formResponse nos webhooks. Correlacione pelo ID citado quando disponível ou por IDs únicos dos campos; não há flow_token inventado. Esse formato é distinto de Galaxy data_exchange.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false}},"platform":{"type":"string","enum":["portable"],"default":"portable","description":"Escolhas compatíveis com o caminho validado no Web e Android. Campos input não são aceitos."}},"required":["numero","cta","steps"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"oneOf":[{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false},{"type":"object","required":["id","label","kind","fields"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Título da etapa, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["input"]},"fields":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","label","type","required"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID do campo retornado, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Rótulo do campo, até 1024 bytes UTF-8."},"type":{"type":"string","enum":["text"]},"required":{"type":"boolean","description":"Indica se o preenchimento é obrigatório."},"default":{"type":"string","maxLength":128,"description":"Valor inicial opcional. Limite real de 128 unidades UTF-16, como no Android: um emoji ocupa duas unidades."}},"additionalProperties":false}},"button":{"type":"string","minLength":1,"maxLength":30,"description":"Botão de envio da etapa. Se omitido, usa cta; até 30 caracteres Unicode."}},"additionalProperties":false}]}},"platform":{"type":"string","enum":["android"],"description":"Habilita InputFields validado no Android. Não há suporte Web confirmado para essas etapas."}},"required":["numero","cta","steps","platform"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]}]}},"required":["messageData"],"additionalProperties":false},{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false}},"platform":{"type":"string","enum":["portable"],"default":"portable","description":"Escolhas compatíveis com o caminho validado no Web e Android. Campos input não são aceitos."}},"required":["numero","cta","steps"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"oneOf":[{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false},{"type":"object","required":["id","label","kind","fields"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Título da etapa, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["input"]},"fields":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","label","type","required"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID do campo retornado, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Rótulo do campo, até 1024 bytes UTF-8."},"type":{"type":"string","enum":["text"]},"required":{"type":"boolean","description":"Indica se o preenchimento é obrigatório."},"default":{"type":"string","maxLength":128,"description":"Valor inicial opcional. Limite real de 128 unidades UTF-16, como no Android: um emoji ocupa duas unidades."}},"additionalProperties":false}},"button":{"type":"string","minLength":1,"maxLength":30,"description":"Botão de envio da etapa. Se omitido, usa cta; até 30 caracteres Unicode."}},"additionalProperties":false}]}},"platform":{"type":"string","enum":["android"],"description":"Habilita InputFields validado no Android. Não há suporte Web confirmado para essas etapas."}},"required":["numero","cta","steps","platform"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]}]}],"description":"Aceita messageData ou os mesmos campos diretamente no corpo."},"examples":{"single":{"summary":"Formulário nativo com escolha única","value":{"messageData":{"numero":"5511999999999","texto":"Como você prefere ser atendido?","titulo":"Atendimento MVO","cta":"Responder","steps":[{"id":"preferencia","label":"Escolha o atendimento","selection":"single","options":[{"id":"suporte","title":"Suporte técnico"},{"id":"comercial","title":"Comercial"}],"allow_custom_answer":true}]}}},"multiple":{"summary":"Escolhas múltiplas e mais de uma etapa","value":{"messageData":{"numero":"5511999999999","texto":"Personalize seu atendimento.","cta":"Escolher","steps":[{"id":"servicos","label":"Quais serviços você procura?","selection":"multiple","options":[{"id":"hospedagem","title":"Hospedagem"},{"id":"whatsapp","title":"WhatsApp"},{"id":"dominio","title":"Domínio"}]},{"id":"periodo","label":"Quando prefere receber contato?","selection":"single","options":[{"id":"manha","title":"Manhã"},{"id":"tarde","title":"Tarde"}]}]}}},"android_input":{"summary":"Campo Nome validado no Android; exige platform=android","value":{"messageData":{"numero":"5511999999999","texto":"Informe seu nome.","cta":"Abrir cadastro","platform":"android","steps":[{"id":"cadastro","label":"Cadastro MVO","kind":"input","button":"Enviar","fields":[{"id":"name","label":"Nome","type":"text","required":true,"default":""}]}]}}}}}}},"description":"Enviar formulário nativo form_message/a2ui_form pela sessão PHP, sem cadastro Meta, flow_id, flow_token ou endpoint. Use 1 a 3 etapas. platform=portable é o padrão, com escolhas de 1 a 5 opções por etapa validadas no Web e Android. platform=android habilita kind=input com 1 a 5 campos de texto, validado no Android; não prometa compatibilidade Web para InputFields. Não recebe flow_json, schema bruto nem metadados de protocolo. Respostas chegam em parsedFormResponse nos eventos e formResponse nos webhooks. Correlacione pelo ID citado quando disponível ou por IDs únicos dos campos; não há flow_token inventado. Esse formato é distinto de Galaxy data_exchange.","x-mvo-native-form-operation":"message.form"}},"/v1/instances/cliente-01/operations/{operation}":{"post":{"operationId":"instance_operation","summary":"Dispatcher POST de compatibilidade","tags":["Operações"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[{"name":"operation","in":"path","required":true,"schema":{"type":"string","enum":["bot.list","bot.profile","bot.response","bot.send","business.broadcast-list-delete","business.broadcast-list-save","business.broadcast-lists","business.cart-refresh","business.categories","business.cover-delete","business.cover-set","business.labels-chat","business.labels-chat-get","business.labels-create","business.labels-delete","business.labels-get","business.labels-list","business.labels-message","business.labels-message-get","business.labels-update","business.order-create","business.order-get","business.profile-get","business.profile-set","business.quick-replies-delete","business.quick-replies-get","business.quick-replies-list","business.quick-replies-save","business.verified-name","business.verified-names","call.link","channel.admin-demote","channel.admin-invite-accept","channel.admin-invite-create","channel.admin-invite-revoke","channel.admins","channel.ai-content","channel.by-invite","channel.capabilities","channel.categories","channel.create","channel.dehydrated","channel.delete","channel.description","channel.directory","channel.domains","channel.edit","channel.enforcements","channel.follow","channel.followers","channel.get","channel.insights","channel.list","channel.live","channel.media-download","channel.message-get","channel.messages","channel.messages-local","channel.mute","channel.name","channel.owner-transfer","channel.paid-partnership","channel.pending-invites","channel.photo-delete","channel.photo-get","channel.photo-set","channel.pin","channel.poll-voters","channel.react","channel.reaction-senders","channel.reactions-setting","channel.recommended","channel.reports","channel.reshare-question","channel.respond-question","channel.revoke","channel.search","channel.send-contact","channel.send-media","channel.send-poll","channel.send-poll-snapshot","channel.send-question","channel.send-text","channel.similar","channel.statuses","channel.tos-accept","channel.tos-get","channel.unfollow","channel.unpin","channel.update","channel.updates","channel.views","channel.vote","chat.archive","chat.read","community.admins-demote","community.admins-list","community.admins-promote","community.appeal","community.create","community.deactivate","community.description","community.ephemeral","community.get","community.history-share-mode","community.internal","community.invite-get","community.invite-info","community.invite-revoke","community.join","community.leave","community.list","community.member-add-mode","community.member-link-mode","community.members-add","community.members-list","community.members-remove","community.owner-transfer","community.photo-delete","community.photo-get","community.photo-set","community.requests-approve","community.requests-cancel","community.requests-list","community.requests-reject","community.setting","community.subgroups-create","community.subgroups-join","community.subgroups-link","community.subgroups-list","community.subgroups-participants","community.subgroups-suggestions","community.subgroups-unlink","community.subject","contact.block","contact.photo","contact.presence","contact.status","contact.unblock","event.by-number","event.list","group.add","group.admins","group.admins.participants","group.create","group.demote","group.ephemeral","group.get","group.invite","group.join-list","group.join-review","group.leave","group.list","group.photo","group.promote","group.remove","group.send-policy","group.settings-policy","history.chat","history.chats","history.contacts","history.messages","message.buttons","message.charge","message.contact","message.delete","message.download","message.edit","message.event","message.flow","message.flow.exchange","message.flow.navigate","message.form","message.forward","message.link","message.list","message.location","message.media","message.payment","message.poll","message.reaction","message.reply","message.text","message.voice","mobile.devices","mobile.link","mobile.unlink","passkey.sign","passkey.state","product.cart-get","product.cart-set","product.catalog-create","product.collection-appeal","product.collection-create","product.collection-delete","product.collection-get","product.collection-reorder","product.collection-update","product.collections","product.create","product.delete","product.edit","product.get","product.list","product.send","product.visibility","profile.business","profile.get","profile.name","profile.photo","profile.status","service.number","session.connect","session.disconnect","session.logout","session.reset","session.restart","session.start","settings.calls.get","settings.calls.set","settings.messages.get","settings.messages.set","status.delete","status.download","status.get","status.list","status.mute","status.muted-list","status.own","status.privacy-get","status.privacy-set","status.publish-image","status.publish-text","status.publish-video","status.publish-voice","status.react","status.read","status.received","status.reply","status.unmute","status.viewers","voip.accept","voip.audio","voip.buffer","voip.end","voip.get","voip.inbound-audio","voip.inbound-video","voip.list","voip.live-audio","voip.live-mode","voip.live-ticket","voip.live-video","voip.mute","voip.reject","voip.start","webhooks.add","webhooks.delete","webhooks.list","webhooks.update"]}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":false,"description":"Selecione em Examples o mesmo nome informado no parâmetro operation. Operações sem corpo não precisam de JSON. O Swagger por cliente também oferece cada operação separadamente.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"_params":{"type":"object","required":["message_id"],"properties":{"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$","description":"ID real da mensagem recebida/enviada.","example":"3EB01234567890ABCDEF"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":65536,"description":"Pergunta/texto enviado ao bot."},"bot_jid":{"type":"string","minLength":1,"maxLength":200,"description":"Bot opcional; omita para usar o bot padrão descoberto na conta.","pattern":"^\\d+@(?:bot|s\\.whatsapp\\.net)$"},"persona_id":{"type":"string","minLength":1,"maxLength":200,"description":"Persona opcional; omita para usar a persona descoberta."},"ai_thread_id":{"type":"string","minLength":1,"maxLength":200,"description":"ID retornado anteriormente para continuar a conversa com o bot."}},"required":["prompt"],"additionalProperties":false},{"type":"object","properties":{"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","example":"RESOURCE_ID"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":128,"example":"mvo-clientes","description":"Identificador da lista comercial; pode vir da rota."},"listName":{"type":"string","minLength":1,"maxLength":100},"participants":{"type":"array","items":{"oneOf":[{"type":"string","example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI/JID individual. Telefones são resolvidos para LID pelo WhatsApp antes da alteração."},{"type":"object","properties":{"lidJid":{"type":"string","pattern":"^[0-9]+@lid$","example":"123456789@lid","description":"LID verdadeiro retornado pelo WhatsApp."},"pnJid":{"type":"string","pattern":"^[0-9]+@s\\.whatsapp\\.net$","example":"5511999999999@s.whatsapp.net","description":"Telefone correspondente, quando conhecido."}},"additionalProperties":false,"required":["lidJid"]}]},"minItems":1,"maxItems":256},"recipients":{"type":"array","items":{"oneOf":[{"type":"string","example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI/JID individual. Telefones são resolvidos para LID pelo WhatsApp antes da alteração."},{"type":"object","properties":{"lidJid":{"type":"string","pattern":"^[0-9]+@lid$","example":"123456789@lid","description":"LID verdadeiro retornado pelo WhatsApp."},"pnJid":{"type":"string","pattern":"^[0-9]+@s\\.whatsapp\\.net$","example":"5511999999999@s.whatsapp.net","description":"Telefone correspondente, quando conhecido."}},"additionalProperties":false,"required":["lidJid"]}]},"minItems":1,"maxItems":256,"description":"Alias de participants; não enviar ambos."},"labelIds":{"type":"array","items":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","maxLength":10,"example":"1","description":"ID de etiqueta como texto entre 1 e 2147483647. Pode vir da rota."},"minItems":0,"maxItems":100,"uniqueItems":true}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["participants"]},{"required":["recipients"]}]},{"not":{"required":["participants","recipients"]}}],"required":["listName"]},{"type":"object","properties":{"request":{"type":"object","properties":{"cart":{"type":"object","properties":{"products":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"quantity":{"oneOf":[{"type":"integer","minimum":1,"maximum":999999},{"type":"string","pattern":"^[1-9][0-9]{0,5}$"}],"description":"Quantidade positiva no checkout.","example":1}},"additionalProperties":true,"description":"Item nativo de checkout: id obrigatório, quantity opcional; extensões nativas são preservadas.","required":["id"]},"minItems":1,"maxItems":100}},"additionalProperties":true,"description":"Exemplo de carrinho nativo; campos comerciais adicionais dependem do contrato da conta."}},"additionalProperties":true,"minProperties":1,"description":"Registro avançado BizGraphQLRefreshCart repassado ao WhatsApp. O exemplo foi validado em transporte local; não inventa campos remotos obrigatórios. Aceitação depende da conta e da versão do WhatsApp."}},"additionalProperties":false,"required":["request"]},{"type":"object","properties":{"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","example":"RESOURCE_ID"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"image":{"oneOf":[{"type":"string","minLength":1,"example":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII=","description":"URL HTTPS pública ou data:image/png;base64,...; não aceita caminho local."},{"type":"object","properties":{"url":{"type":"string","pattern":"^https://","maxLength":8192,"example":"https://seu-dominio.example/imagens/produto.png","description":"URL HTTPS pública na porta 443, sem credenciais nem fragmento. Não aceita arquivos locais ou redes privadas."}},"additionalProperties":false,"required":["url"]},{"type":"object","properties":{"base64":{"type":"string","minLength":1,"example":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII=","description":"Bytes completos da imagem em base64. JPEG, PNG ou WebP; até 8192 por eixo e 16777216 pixels. Respeite o limite de mídia configurado."}},"additionalProperties":false,"required":["base64"]}]},"url":{"type":"string","pattern":"^https://","maxLength":8192,"example":"https://seu-dominio.example/imagens/produto.png","description":"URL HTTPS pública na porta 443, sem credenciais nem fragmento. Não aceita arquivos locais ou redes privadas."},"base64":{"type":"string","minLength":1,"example":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII=","description":"Bytes completos da imagem em base64. JPEG, PNG ou WebP; até 8192 por eixo e 16777216 pixels. Respeite o limite de mídia configurado."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["image"]},{"required":["url"]},{"required":["base64"]}]}]},{"type":"object","properties":{"labelId":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","maxLength":10,"example":"1","description":"Alias de id para a etiqueta."},"etiqueta_id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","maxLength":10,"example":"1","description":"Alias legado de labelId."},"jid":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"numero":{"type":"string","example":"5511999999999","description":"Alias de jid."},"added":{"type":"boolean","description":"true adiciona a associação; false remove."},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","description":"ID numérico positivo da etiqueta, até 2147483647.","example":"1"}},"additionalProperties":false}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["jid"]},{"required":["numero"]}]}],"required":["added","_params"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","maxLength":10,"example":"1","description":"ID de etiqueta como texto entre 1 e 2147483647. Pode vir da rota."},"name":{"type":"string","minLength":1,"maxLength":100},"color":{"type":"integer","minimum":0,"maximum":19,"example":3,"description":"Índice da paleta de etiquetas (0 a 19)."}},"additionalProperties":false,"required":["name","color"]},{"type":"object","properties":{"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","description":"ID numérico positivo da etiqueta, até 2147483647.","example":"1"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","description":"ID numérico positivo da etiqueta, até 2147483647.","example":"1"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"labelId":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","maxLength":10,"example":"1","description":"Alias de id para a etiqueta."},"etiqueta_id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","maxLength":10,"example":"1","description":"Alias legado de labelId."},"jid":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"numero":{"type":"string","example":"5511999999999","description":"Alias de jid."},"added":{"type":"boolean","description":"true adiciona a associação; false remove."},"messageId":{"type":"string","minLength":1,"maxLength":128,"example":"3EB0123456789ABCDEF012","description":"ID real da mensagem; não é o cursor do evento."},"idMsg":{"type":"string","minLength":1,"maxLength":128,"example":"3EB0123456789ABCDEF012","description":"Alias de messageId."},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","description":"ID numérico positivo da etiqueta, até 2147483647.","example":"1"}},"additionalProperties":false}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["jid"]},{"required":["numero"]}]},{"anyOf":[{"required":["messageId"]},{"required":["idMsg"]}]}],"required":["added","_params"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"color":{"type":"integer","minimum":0,"maximum":19,"example":3,"description":"Índice da paleta de etiquetas (0 a 19)."},"predefinedId":{"type":"integer","minimum":0,"maximum":2147483647},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","description":"ID numérico positivo da etiqueta, até 2147483647.","example":"1"}},"additionalProperties":false}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["name"]},{"required":["color"]},{"required":["predefinedId"]}]}],"required":["_params"]},{"type":"object","properties":{"jid":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"numero":{"type":"string","example":"5511999999999","description":"Alias de jid."},"products":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"quantity":{"oneOf":[{"type":"integer","minimum":1,"maximum":999999},{"type":"string","pattern":"^[1-9][0-9]{0,5}$"}],"description":"Quantidade positiva no checkout.","example":1}},"additionalProperties":true,"description":"Item nativo de checkout: id obrigatório, quantity opcional; extensões nativas são preservadas.","required":["id"]},"minItems":1,"maxItems":100}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["jid"]},{"required":["numero"]}]}],"required":["products"]},{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":8192,"example":"TOKEN_DO_PEDIDO_RETORNADO_PELO_WHATSAPP","description":"Token retornado pelo WhatsApp; enviar no corpo, nunca na query."},"jid":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"owner":{"type":"string","example":"5511999999999@s.whatsapp.net","description":"Alias de jid. Omita para usar a própria conta."},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."}},"additionalProperties":false}},"additionalProperties":false,"required":["token","_params"]},{"type":"object","properties":{"address":{"type":"string","maxLength":512,"description":"Texto vazio limpa."},"email":{"type":"string","maxLength":254,"example":"contato@mvo.host","description":"E-mail válido ou vazio para limpar."},"description":{"type":"string","maxLength":4096,"description":"Texto vazio limpa."},"websites":{"type":"array","items":{"type":"string","maxLength":2048,"example":"https://www.mvo.host","description":"URL HTTP/HTTPS sem credenciais."},"minItems":0,"maxItems":2},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"categories":{"type":"array","items":{"oneOf":[{"type":"string","minLength":1,"maxLength":128,"example":"123456789","description":"ID obtido em business.categories."},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":128}},"additionalProperties":false,"required":["id"]}]},"minItems":0,"maxItems":3},"hours":{"type":"object","properties":{"timezone":{"type":"string","minLength":1,"maxLength":100,"example":"America/Sao_Paulo","description":"Fuso válido para PHP DateTimeZone."},"days":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string","enum":["mon","tue","wed","thu","fri","sat","sun","monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"mode":{"type":"string","enum":["closed","open_24h","specific_hours","appointment_only"]},"open":{"type":"string","pattern":"^(?:[01][0-9]|2[0-3]):[0-5][0-9]$","example":"08:00","description":"Obrigatório em specific_hours; HH:MM."},"close":{"type":"string","pattern":"^(?:(?:[01][0-9]|2[0-3]):[0-5][0-9]|24:00)$","example":"18:00","description":"Obrigatório em specific_hours; permite 24:00."}},"additionalProperties":false,"required":["day","mode"],"allOf":[{"anyOf":[{"properties":{"mode":{"enum":["specific_hours"]}},"required":["open","close"]},{"properties":{"mode":{"enum":["closed","open_24h","appointment_only"]}}}]}]},"minItems":0,"maxItems":32}},"additionalProperties":false,"description":"Formato prático; múltiplos intervalos no mesmo dia. specific_hours exige open e close; closed remove o dia.","required":["timezone","days"]},"businessHours":{"type":"object","properties":{"timezone":{"type":"string","minLength":1,"maxLength":100,"example":"America/Sao_Paulo","description":"Fuso válido para PHP DateTimeZone."},"config":{"type":"array","items":{"type":"object","properties":{"dayOfWeek":{"type":"string","enum":["mon","tue","wed","thu","fri","sat","sun"]},"mode":{"type":"string","enum":["closed","open_24h","specific_hours","appointment_only"]},"openTime":{"type":"integer","minimum":0,"maximum":1439,"description":"Obrigatório em specific_hours; minutos após meia-noite.","example":480},"closeTime":{"type":"integer","minimum":0,"maximum":1440,"description":"Obrigatório em specific_hours; 1440 representa 24:00.","example":1080}},"additionalProperties":false,"required":["dayOfWeek","mode"],"allOf":[{"anyOf":[{"properties":{"mode":{"enum":["specific_hours"]}},"required":["openTime","closeTime"]},{"properties":{"mode":{"enum":["closed","open_24h","appointment_only"]}}}]}]},"minItems":0,"maxItems":32}},"additionalProperties":false,"description":"Alternativa nativa em minutos. Não enviar junto com hours.","required":["timezone","config"]}},"additionalProperties":false,"minProperties":1,"allOf":[{"not":{"required":["hours","businessHours"]}}]},{"type":"object","properties":{"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,18}$","description":"ID numérico positivo da resposta rápida (até 19 dígitos).","example":"1700000000000001"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,18}$","description":"ID numérico positivo da resposta rápida (até 19 dígitos).","example":"1700000000000001"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,18}$","example":"1700000000000001","description":"ID de resposta rápida como inteiro positivo em texto; pode vir da rota."},"shortcut":{"type":"string","minLength":1,"maxLength":64,"example":"planos","description":"Obrigatório na criação; opcional na atualização."},"message":{"type":"string","minLength":1,"maxLength":4096,"example":"Conheça os planos em https://www.mvo.host","description":"Obrigatório na criação; opcional na atualização."},"keywords":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"minItems":0,"maxItems":20,"uniqueItems":true},"count":{"type":"integer","minimum":0,"maximum":2147483647,"default":0},"deleted":{"type":"boolean","default":false,"description":"Marca como excluída. Para exclusão simples use quick-replies-delete."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["shortcut"]},{"required":["message"]},{"required":["keywords"]},{"required":["count"]},{"required":["deleted"]}]}]},{"type":"object","properties":{"jids":{"type":"array","items":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"minItems":1,"maxItems":100}},"additionalProperties":false,"required":["jids"]},{"type":"object","properties":{"user":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","example":"5511999999999@s.whatsapp.net"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["user","_params"],"additionalProperties":false},{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"user":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","example":"5511999999999@s.whatsapp.net"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["user","_params"],"additionalProperties":false},{"type":"object","properties":{"user":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","example":"5511999999999@s.whatsapp.net"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["user","_params"],"additionalProperties":false},{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"messageType":{"type":"string","enum":["MESSAGE","STATUS"],"default":"MESSAGE"},"_params":{"type":"object","required":["channel_id","serverId"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"invite":{"type":"string","minLength":1,"maxLength":256,"example":"MVO_CONVITE"},"viewRole":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"},"fetchViewerMetadata":{"type":"boolean","default":true},"fetchFullImage":{"type":"boolean","default":false},"fetchCreationTime":{"type":"boolean","default":true},"fetchWamoSub":{"type":"boolean","default":false}},"required":["invite"],"additionalProperties":false},{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"categories":{"type":"array","items":{"type":"string","enum":["BUSINESS","ENTERTAINMENT","LIFESTYLE","NEWS","ORGANIZATIONS","PEOPLE","SPORTS","SPECIAL_EVENTS","SPECIAL_EVENTS_2","SPECIAL_EVENTS_3","SPECIAL_EVENTS_4","SPECIAL_EVENTS_5"]},"minItems":1,"maxItems":100,"uniqueItems":true},"country":{"type":"string","minLength":1,"maxLength":2,"pattern":"^[A-Z]{2}$","example":"BR"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10}},"required":["categories"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"example":"Novidades MVO"},"description":{"type":"string","maxLength":2048},"url":{"type":"string","minLength":1,"maxLength":8192,"format":"uri","example":"https://example.com/canal.jpg"},"base64":{"type":"string","minLength":1,"maxLength":11184816,"example":"/9j/4AAQSkZJRgABAQAAAQABAAD="}},"required":["name"],"additionalProperties":false},{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":256,"example":"120363000000000000@newsletter"},"viewRole":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"},"fetchWamoSub":{"type":"boolean","default":false}},"required":["key"],"additionalProperties":false},{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"description":{"type":"string","maxLength":2048},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["description","_params"],"additionalProperties":false},{"type":"object","properties":{"view":{"type":"string","enum":["POPULAR","RECOMMENDED","NEW","FEATURED","TRENDING"]},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25},"countryCodes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2,"pattern":"^[A-Z]{2}$","example":"BR"},"minItems":0,"maxItems":100,"uniqueItems":true},"categories":{"type":"array","items":{"type":"string","enum":["BUSINESS","ENTERTAINMENT","LIFESTYLE","NEWS","ORGANIZATIONS","PEOPLE","SPORTS","SPECIAL_EVENTS","SPECIAL_EVENTS_2","SPECIAL_EVENTS_3","SPECIAL_EVENTS_4","SPECIAL_EVENTS_5"]},"minItems":0,"maxItems":100,"uniqueItems":true},"startCursor":{"type":"string","minLength":1,"maxLength":4096}},"required":["view"],"additionalProperties":false},{"type":"object","properties":{"domains":{"type":"array","items":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\\.)+[A-Za-z]{2,63}$"},"minItems":1,"maxItems":100,"uniqueItems":true}},"required":["domains"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":65536},"type":{"type":"string","enum":["image","video","gif","ptv","audio","ptt","document","sticker"]},"url":{"type":"string","minLength":1,"maxLength":8192,"format":"uri","example":"https://example.com/novidades.jpg"},"base64":{"type":"string","minLength":1,"maxLength":44739248},"caption":{"type":"string","maxLength":65536},"mimetype":{"type":"string","minLength":1,"maxLength":128},"fileName":{"type":"string","minLength":1,"maxLength":256},"seconds":{"type":"integer","minimum":0,"maximum":86400},"width":{"type":"integer","minimum":1,"maximum":8192},"height":{"type":"integer","minimum":1,"maximum":8192},"_params":{"type":"object","required":["channel_id","message_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_CHANNEL_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"oneOf":[{"required":["text"]},{"required":["type"]}],"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"count":{"type":"integer","minimum":1,"maximum":1000,"default":50},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"viewRole":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"},"fetchViewerMetadata":{"type":"boolean","default":true},"fetchFullImage":{"type":"boolean","default":true},"fetchCreationTime":{"type":"boolean","default":true},"fetchWamoSub":{"type":"boolean","default":false},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"metrics":{"type":"array","items":{"type":"object","additionalProperties":true,"minProperties":1,"description":"Estrutura nativa de métrica determinada pelo WhatsApp. Campos específicos não foram observados na referência atual; esta operação avançada não foi homologada com uma conta real."},"minItems":1,"maxItems":100,"uniqueItems":true},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["metrics","_params"],"additionalProperties":false},{"type":"object","properties":{"fetchWamoSub":{"type":"boolean","default":false}},"required":[],"additionalProperties":false},{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991},"_params":{"type":"object","required":["channel_id","message_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"message_id":{"type":"string","pattern":"^(?:[A-Za-z0-9_-]{1,128}|server:[1-9][0-9]{0,17}|response:[A-Za-z0-9_-]{1,119})$","description":"ID real da mensagem recebida/enviada.","example":"MVO_CHANNEL_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991},"_params":{"type":"object","required":["channel_id","message_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"message_id":{"type":"string","pattern":"^(?:[A-Za-z0-9_-]{1,128}|server:[1-9][0-9]{0,17}|response:[A-Za-z0-9_-]{1,119})$","description":"ID real da mensagem recebida/enviada.","example":"MVO_CHANNEL_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"count":{"type":"integer","minimum":1,"maximum":1000,"default":50},"before":{"type":"integer","minimum":1,"maximum":9007199254740991},"after":{"type":"integer","minimum":1,"maximum":9007199254740991},"viewRole":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":1000,"default":50},"before":{"type":"integer","minimum":0,"maximum":9007199254740991},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"muted":{"type":"boolean","default":false},"adminActivity":{"type":"boolean","default":false},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["muted","_params"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"example":"Novidades MVO"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["name","_params"],"additionalProperties":false},{"type":"object","properties":{"user":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","example":"5511999999999@s.whatsapp.net"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["user","_params"],"additionalProperties":false},{"type":"object","properties":{"messageType":{"type":"string","enum":["MESSAGE","STATUS"],"default":"MESSAGE"},"_params":{"type":"object","required":["channel_id","serverId"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"type":{"type":"string","enum":["image","preview"],"default":"image"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":8192,"format":"uri","example":"https://example.com/canal.jpg"},"base64":{"type":"string","minLength":1,"maxLength":11184816,"example":"/9j/4AAQSkZJRgABAQAAAQABAAD="},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"serverIds":{"type":"array","items":{"type":"integer","minimum":1,"maximum":9007199254740991},"minItems":1,"maxItems":10,"uniqueItems":true},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["serverIds","_params"],"additionalProperties":false},{"type":"object","properties":{"voteHash":{"type":"string","minLength":1,"maxLength":128,"example":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="},"limit":{"type":"integer","minimum":1,"maximum":1000,"default":50},"_params":{"type":"object","required":["channel_id","serverId"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},"additionalProperties":false}},"required":["voteHash","_params"],"additionalProperties":false},{"type":"object","properties":{"emoji":{"type":"string","maxLength":128},"revoke":{"type":"boolean","default":false},"_params":{"type":"object","required":["channel_id","serverId"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},"additionalProperties":false}},"required":["emoji","_params"],"additionalProperties":false},{"type":"object","properties":{"_params":{"type":"object","required":["channel_id","serverId"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"reactionCodesSetting":{"type":"string","enum":["ALL","BASIC","NONE","BLOCKLIST"]},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["reactionCodesSetting","_params"],"additionalProperties":false},{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":25},"countryCodes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2,"pattern":"^[A-Z]{2}$","example":"BR"},"minItems":0,"maxItems":100,"uniqueItems":true}},"required":[],"additionalProperties":false},{"type":"object","properties":{"question_message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:[A-Za-z0-9_-]{1,128}|server:[1-9][0-9]{0,17}|response:[A-Za-z0-9_-]{1,119})$","example":"MVO_CHANNEL_EXAMPLE"},"response_message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:[A-Za-z0-9_-]{1,128}|server:[1-9][0-9]{0,17}|response:[A-Za-z0-9_-]{1,119})$","example":"MVO_CHANNEL_EXAMPLE"},"text":{"type":"string","minLength":1,"maxLength":65536},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"},"_params":{"type":"object","required":["channel_id","serverId","responseServerId"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"serverId":{"type":"integer","minimum":1,"maximum":2147483647,"example":1},"responseServerId":{"type":"string","minLength":1,"maxLength":128,"example":"MVO_RESPONSE_EXAMPLE"}},"additionalProperties":false}},"required":["question_message_id","response_message_id","text","_params"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":65536},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"},"_params":{"type":"object","required":["channel_id","serverId"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},"additionalProperties":false}},"required":["text","_params"],"additionalProperties":false},{"type":"object","properties":{"_params":{"type":"object","required":["channel_id","message_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_CHANNEL_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"searchText":{"type":"string","maxLength":1024},"categories":{"type":"array","items":{"type":"string","enum":["BUSINESS","ENTERTAINMENT","LIFESTYLE","NEWS","ORGANIZATIONS","PEOPLE","SPORTS","SPECIAL_EVENTS","SPECIAL_EVENTS_2","SPECIAL_EVENTS_3","SPECIAL_EVENTS_4","SPECIAL_EVENTS_5"]},"minItems":0,"maxItems":100,"uniqueItems":true},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25},"startCursor":{"type":"string","minLength":1,"maxLength":4096}},"required":[],"additionalProperties":false},{"type":"object","properties":{"displayName":{"type":"string","minLength":1,"maxLength":256},"vcard":{"type":"string","minLength":1,"maxLength":65536},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["vcard","_params"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif","ptv","audio","ptt","document","sticker"]},"url":{"type":"string","minLength":1,"maxLength":8192,"format":"uri","example":"https://example.com/novidades.jpg"},"base64":{"type":"string","minLength":1,"maxLength":44739248},"caption":{"type":"string","maxLength":65536},"mimetype":{"type":"string","minLength":1,"maxLength":128},"fileName":{"type":"string","minLength":1,"maxLength":256},"seconds":{"type":"integer","minimum":0,"maximum":86400},"width":{"type":"integer","minimum":1,"maximum":8192},"height":{"type":"integer","minimum":1,"maximum":8192},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["type","_params"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"options":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100},"minItems":2,"maxItems":12,"uniqueItems":true},"selectableCount":{"type":"integer","minimum":0,"maximum":12,"default":1},"allowAddOption":{"type":"boolean"},"hideParticipantName":{"type":"boolean"},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["name","options","_params"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"pollVotes":{"type":"array","items":{"type":"object","properties":{"optionName":{"type":"string","minLength":1,"maxLength":100},"optionVoteCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["optionName","optionVoteCount"],"additionalProperties":false},"minItems":1,"maxItems":12,"uniqueItems":true},"version3":{"type":"boolean","default":false},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["name","pollVotes","_params"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":65536},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["text","_params"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":65536,"example":"Novidades da MVO!"},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["text","_params"],"additionalProperties":false},{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10},"countryCodes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2,"pattern":"^[A-Z]{2}$","example":"BR"},"minItems":0,"maxItems":100,"uniqueItems":true},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"count":{"type":"integer","minimum":1,"maximum":100,"default":50},"before":{"type":"integer","minimum":1,"maximum":9007199254740991},"after":{"type":"integer","minimum":1,"maximum":9007199254740991},"viewRole":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"notices":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"minItems":1,"maxItems":20,"uniqueItems":true}},"required":["notices"],"additionalProperties":false},{"type":"object","properties":{"notices":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"minItems":1,"maxItems":20,"uniqueItems":true}},"required":["notices"],"additionalProperties":false},{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"serverIds":{"type":"array","items":{"type":"integer","minimum":1,"maximum":9007199254740991},"minItems":1,"maxItems":10,"uniqueItems":true},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["serverIds","_params"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","maxLength":2048},"reactionCodesSetting":{"type":"string","enum":["ALL","BASIC","NONE","BLOCKLIST"]},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"count":{"type":"integer","minimum":1,"maximum":1000,"default":50},"since":{"type":"integer","minimum":0,"maximum":9007199254740991},"before":{"type":"integer","minimum":1,"maximum":9007199254740991},"after":{"type":"integer","minimum":1,"maximum":9007199254740991},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"serverIds":{"type":"array","items":{"type":"integer","minimum":1,"maximum":9007199254740991},"minItems":1,"maxItems":1000,"uniqueItems":true},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["serverIds","_params"],"additionalProperties":false},{"type":"object","properties":{"votes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64,"pattern":"^(?:[a-fA-F0-9]{64}|[A-Za-z0-9+/]{43}=)$"},"minItems":0,"maxItems":12,"uniqueItems":true},"contentType":{"type":"string","minLength":1,"maxLength":64},"_params":{"type":"object","required":["channel_id","serverId"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},"additionalProperties":false}},"required":["votes","_params"],"additionalProperties":false},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"arquivar":{"anyOf":[{"type":"boolean"},{"type":"integer","enum":[0,1]},{"type":"string","enum":["true","false","0","1"]}],"description":"Booleano JSON recomendado; também aceita 0/1 e true/false como string."},"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"arquivar":{"anyOf":[{"type":"boolean"},{"type":"integer","enum":[0,1]},{"type":"string","enum":["true","false","0","1"]}],"description":"Booleano JSON recomendado; também aceita 0/1 e true/false como string."}},"required":["numero","arquivar"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["numero","arquivar"]},{"required":["messageData"]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"idMsg":{"type":"string","minLength":1,"maxLength":128,"description":"ID real da mensagem recebida."},"participant":{"type":"string","minLength":1,"maxLength":200,"description":"Participante remetente; necessário em recibos de mensagens de grupo.","example":"5511999999999"},"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"idMsg":{"type":"string","minLength":1,"maxLength":128,"description":"ID real da mensagem recebida."},"participant":{"type":"string","minLength":1,"maxLength":200,"description":"Participante remetente; necessário em recibos de mensagens de grupo.","example":"5511999999999"}},"required":["numero","idMsg"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["numero","idMsg"]},{"required":["messageData"]}]},{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["participants","_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["participants","_params"]},{"type":"object","properties":{"reason":{"type":"string","nullable":true,"minLength":1,"maxLength":1024,"example":"Solicito a revisão da suspensão."},"debugInfo":{"type":"string","minLength":2,"maxLength":16384,"example":"{\"source\":\"customer-support\"}","description":"Texto JSON cujo valor é um objeto. Não enviar credenciais nem dados privados."},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":100,"example":"Clientes MVO"},"options":{"type":"object","additionalProperties":false,"properties":{"description":{"type":"string","nullable":false,"maxLength":2048,"example":"Avisos e grupos de atendimento da MVO."},"membershipApprovalMode":{"type":"string","enum":["open","request_required"],"default":"request_required"},"allowNonAdminSubGroupCreation":{"type":"boolean"},"createGeneralChat":{"type":"boolean"}}}},"additionalProperties":false,"required":["subject"]},{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"description":{"type":"string","nullable":true,"maxLength":2048,"example":"Avisos e grupos de atendimento da MVO."},"previousId":{"type":"string","minLength":1,"maxLength":128,"example":"1700000000000","description":"descId anterior, quando conhecido."},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["description","_params"]},{"type":"object","properties":{"seconds":{"type":"integer","enum":[0,86400,604800,7776000],"description":"Segundos: 0 desativa; demais valores representam 1, 7 ou 90 dias."},"trigger":{"type":"integer","minimum":0,"maximum":2147483647},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["seconds","_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"mode":{"type":"string","enum":["admin_share","all_member_share"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["mode","_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID @g.us do grupo/subgrupo a verificar. O campo se chama community_id por consistência da rota; a consulta verifica esse ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$","example":"CODIGO_DO_CONVITE","description":"Código do convite. Enviado no JSON para evitar registro na URL."}},"additionalProperties":false,"required":["code"]},{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$","example":"CODIGO_DO_CONVITE","description":"Código do convite. Enviado no JSON para evitar registro na URL."}},"additionalProperties":false,"required":["code"]},{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"mode":{"type":"string","enum":["admin_add","all_member_add"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["mode","_params"]},{"type":"object","properties":{"mode":{"type":"string","enum":["admin_link","all_member_link"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["mode","_params"]},{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["participants","_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["participants","_params"]},{"type":"object","properties":{"newOwner":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["newOwner","_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"type":{"type":"string","enum":["image","preview"],"default":"image"},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":8192,"example":"https://cdn.sua-empresa.example/comunidade.jpg","description":"URL HTTPS pública da imagem; não combine com base64."},"base64":{"type":"string","minLength":1,"maxLength":11184816,"description":"Bytes da imagem em base64, até 8 MiB após decodificar; não combine com url."},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"oneOf":[{"required":["url"],"not":{"required":["base64"]}},{"required":["base64"],"not":{"required":["url"]}}],"required":["_params"]},{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["participants","_params"]},{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["participants","_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["participants","_params"]},{"type":"object","properties":{"setting":{"type":"string","enum":["announcement","restrict","membership_approval_mode","allow_non_admin_sub_group_creation","group_history","allow_admin_reports","no_frequently_forwarded"]},"enabled":{"type":"boolean"},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["setting","enabled","_params"]},{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":100,"example":"Clientes MVO"},"participants":{"type":"array","minItems":0,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"options":{"type":"object","additionalProperties":false,"properties":{"description":{"type":"string","nullable":false,"maxLength":2048,"example":"Avisos e grupos de atendimento da MVO."}}},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["subject","_params"]},{"type":"object","properties":{"subgroup_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID real do subgrupo vinculado."},"type":{"type":"string","maxLength":32,"pattern":"^[a-z_]+$","description":"Tipo de ingresso do protocolo, quando conhecido. Omita para usar o padrão do servidor."},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["subgroup_id","_params"]},{"type":"object","properties":{"subgroup_ids":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"items":{"oneOf":[{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},{"type":"object","properties":{"jid":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"hidden":{"type":"boolean","default":false,"description":"Solicita o vínculo como grupo oculto usando hidden_group no protocolo."}},"required":["jid"],"additionalProperties":false}]},"example":["120363000000000001@g.us"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["subgroup_ids","_params"]},{"type":"object","properties":{"source":{"type":"string","enum":["iq","mex"],"default":"iq","description":"iq retorna a lista de metadados; mex conserva o envelope original, incluindo null e campos adicionais."},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"hint":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID de grupo usado como sugestão inicial, quando conhecido."},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"subgroup_ids":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"items":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"example":["120363000000000001@g.us"]},"removeOrphanedMembers":{"type":"boolean","default":false,"description":"Solicita remover membros que perderam todos os vínculos de subgrupos; o servidor decide o resultado."},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["subgroup_ids","_params"]},{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":100,"example":"Clientes MVO"},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["subject","_params"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"acao":{"type":"string","enum":["block","unblock"],"default":"block","description":"Opcional; se enviado, prevalece sobre a ação padrão desta operação."},"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"acao":{"type":"string","enum":["block","unblock"],"default":"block","description":"Opcional; se enviado, prevalece sobre a ação padrão desta operação."}},"required":["numero"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["numero"]},{"required":["messageData"]}]},{"type":"object","properties":{"_params":{"type":"object","required":["numero"],"properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"presenca":{"type":"string","enum":["available","unavailable","composing","recording","paused"]}},"required":["numero","presenca"],"additionalProperties":false},{"type":"object","properties":{"_params":{"type":"object","required":["numero"],"properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"acao":{"type":"string","enum":["block","unblock"],"default":"unblock","description":"Opcional; se enviado, prevalece sobre a ação padrão desta operação."},"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"acao":{"type":"string","enum":["block","unblock"],"default":"unblock","description":"Opcional; se enviado, prevalece sobre a ação padrão desta operação."}},"required":["numero"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["numero"]},{"required":["messageData"]}]},{"type":"object","properties":{"_params":{"type":"object","required":["numero"],"properties":{"numero":{"type":"string","example":"5511999999999"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024}},"required":["participants"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["participants"]},{"required":["group_data"]}]},{"type":"object","properties":{"group_name":{"type":"string","minLength":1,"maxLength":100,"description":"Nome do grupo."},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":0,"maxItems":1024,"description":"Lista de contatos com DDI/DDD ou JID; vazia é aceita."},"group_data":{"type":"object","properties":{"group_name":{"type":"string","minLength":1,"maxLength":100,"description":"Nome do grupo."},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":0,"maxItems":1024,"description":"Lista de contatos com DDI/DDD ou JID; vazia é aceita."}},"required":["group_name","participants"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["group_name","participants"]},{"required":["group_data"]}]},{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024},"acao":{"type":"string","enum":["demote","promote"],"default":"demote","description":"Nesta rota de cargo, acao pode substituir a ação padrão."},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024},"acao":{"type":"string","enum":["demote","promote"],"default":"demote","description":"Nesta rota de cargo, acao pode substituir a ação padrão."}},"required":["participants"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["participants"]},{"required":["group_data"]}]},{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"time":{"type":"integer","enum":[0,1,7,90],"description":"Duração em dias; 0 desativa mensagens temporárias."},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"time":{"type":"integer","enum":[0,1,7,90],"description":"Duração em dias; 0 desativa mensagens temporárias."}},"required":["time"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["time"]},{"required":["group_data"]}]},{"type":"object","properties":{"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"}},"additionalProperties":false,"anyOf":[{"required":["group_id"]},{"required":["id_grupo"]}]},"_params":{"type":"object","required":["group_id"],"properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"}},"additionalProperties":false,"anyOf":[{"required":["group_id"]},{"required":["id_grupo"]}]}},"additionalProperties":false},{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"}},"additionalProperties":false,"anyOf":[{"required":["group_id"]},{"required":["id_grupo"]}]}},"additionalProperties":false},{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"acao":{"type":"string","enum":["approve","reject"]},"numero":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024,"description":"Solicitantes cuja entrada será aprovada ou rejeitada."},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"acao":{"type":"string","enum":["approve","reject"]},"numero":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024,"description":"Solicitantes cuja entrada será aprovada ou rejeitada."}},"required":["acao","numero"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["acao","numero"]},{"required":["group_data"]}]},{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"}},"additionalProperties":false,"anyOf":[{"required":["group_id"]},{"required":["id_grupo"]}]}},"additionalProperties":false},{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"}},"additionalProperties":false,"anyOf":[{"required":["group_id"]},{"required":["id_grupo"]}]},"url":{"type":"string","minLength":1,"maxLength":8192,"description":"URL HTTPS pública da imagem, sem credenciais, fragmento ou porta diferente de 443.","format":"uri","pattern":"^https://"},"base64":{"type":"string","minLength":1,"maxLength":11184816,"description":"Bytes da imagem em base64 padrão, sem prefixo data:. Limite de 8 MiB.","format":"byte"}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["group_id"]},{"required":["id_grupo"]},{"required":["group_data"]}]},{"anyOf":[{"required":["url"]},{"required":["base64"]}]}]},{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024}},"required":["participants"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["participants"]},{"required":["group_data"]}]},{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024}},"required":["participants"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["participants"]},{"required":["group_data"]}]},{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"allowOnlyAdmins":{"anyOf":[{"type":"boolean"},{"type":"integer","enum":[0,1]},{"type":"string","enum":["true","false","0","1"]}],"description":"true permite somente administradores; false permite todos. Pode ser enviado na query."},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"allowOnlyAdmins":{"anyOf":[{"type":"boolean"},{"type":"integer","enum":[0,1]},{"type":"string","enum":["true","false","0","1"]}],"description":"true permite somente administradores; false permite todos. Pode ser enviado na query."}},"additionalProperties":false}},"additionalProperties":false},{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"allowOnlyAdmins":{"anyOf":[{"type":"boolean"},{"type":"integer","enum":[0,1]},{"type":"string","enum":["true","false","0","1"]}],"description":"true permite somente administradores; false permite todos. Pode ser enviado na query."},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"allowOnlyAdmins":{"anyOf":[{"type":"boolean"},{"type":"integer","enum":[0,1]},{"type":"string","enum":["true","false","0","1"]}],"description":"true permite somente administradores; false permite todos. Pode ser enviado na query."}},"additionalProperties":false}},"additionalProperties":false},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal."},"titulo":{"type":"string","description":"Título opcional."},"footer":{"type":"string","description":"Rodapé opcional."},"botoes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["quick_reply"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"id":{"type":"string","minLength":1,"description":"ID único do botão."}},"additionalProperties":false,"required":["type","texto","id"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_url"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["type","texto","url"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_call"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"phone_number":{"type":"string","minLength":1,"description":"Número discado pelo botão.","pattern":"^\\+?[0-9 ()-]{5,30}$"}},"additionalProperties":false,"required":["type","texto","phone_number"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_copy","cta_opt","cta_otp"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"copy_code":{"type":"string","minLength":1,"description":"Texto ou código copiado pelo botão."}},"additionalProperties":false,"required":["type","texto","copy_code"]}]},"minItems":1,"maxItems":10}},"additionalProperties":false,"required":["numero","texto","botoes"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal."},"titulo":{"type":"string","description":"Título opcional."},"footer":{"type":"string","description":"Rodapé opcional."},"botoes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["quick_reply"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"id":{"type":"string","minLength":1,"description":"ID único do botão."}},"additionalProperties":false,"required":["type","texto","id"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_url"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["type","texto","url"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_call"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"phone_number":{"type":"string","minLength":1,"description":"Número discado pelo botão.","pattern":"^\\+?[0-9 ()-]{5,30}$"}},"additionalProperties":false,"required":["type","texto","phone_number"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_copy","cta_opt","cta_otp"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"copy_code":{"type":"string","minLength":1,"description":"Texto ou código copiado pelo botão."}},"additionalProperties":false,"required":["type","texto","copy_code"]}]},"minItems":1,"maxItems":10}},"additionalProperties":false,"required":["numero","texto","botoes"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},{"anyOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"body":{"type":"object","properties":{"texto":{"type":"string","minLength":1,"description":"Texto da cobrança."},"footer":{"type":"string","description":"Rodapé."},"header":{"type":"object","properties":{"title":{"type":"string","description":"Título opcional da cobrança."},"hasMediaAttachment":{"type":"boolean","default":false},"type":{"type":"string","minLength":1,"enum":["image","video","document"]},"imageMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]}},"additionalProperties":false,"anyOf":[{"properties":{"hasMediaAttachment":{"type":"boolean","enum":[false]}}},{"required":["hasMediaAttachment","type","imageMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["image"]}}},{"required":["hasMediaAttachment","type","videoMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["video"]}}},{"required":["hasMediaAttachment","type","documentMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["document"]}}}]},"items":{"type":"array","items":{"type":"object","properties":{"retailer_id":{"type":"string","minLength":1,"description":"Referência do item na sua aplicação."},"name":{"type":"string","minLength":1,"description":"Nome do item."},"amount":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":100000000000,"description":"Valor inteiro em centavos (2990 = R$ 29,90)."},"offset":{"type":"integer","minimum":100,"maximum":100,"default":100}},"additionalProperties":false,"required":["value"]},"quantity":{"type":"integer","minimum":1,"maximum":1000000}},"additionalProperties":false,"required":["retailer_id","name","amount","quantity"]},"minItems":1,"maxItems":100},"pixEnabled":{"type":"boolean","default":false},"pixData":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Código PIX copia e cola completo."},"merchant_name":{"type":"string","minLength":1,"description":"Nome do recebedor."},"key":{"type":"string","minLength":1,"description":"Chave PIX do recebedor."},"key_type":{"type":"string","minLength":1,"enum":["CNPJ","CPF","EMAIL","PHONE","EVP"]}},"additionalProperties":false,"required":["code","merchant_name","key","key_type"]},"boletoEnabled":{"type":"boolean","default":false},"boletoData":{"type":"object","properties":{"digitable_line":{"type":"string","minLength":1,"description":"Linha digitável do boleto."}},"additionalProperties":false,"required":["digitable_line"]},"UrlEnabled":{"type":"boolean","default":false},"urlData":{"type":"object","properties":{"uri":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["uri"]}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"pixEnabled":{"type":"boolean","enum":[false]}}},{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"boletoEnabled":{"type":"boolean","enum":[false]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"UrlEnabled":{"type":"boolean","enum":[false]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]}],"required":["texto","items"]}},"additionalProperties":false,"required":["numero","body"]},{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto da cobrança."},"footer":{"type":"string","description":"Rodapé."},"header":{"type":"object","properties":{"title":{"type":"string","description":"Título opcional da cobrança."},"hasMediaAttachment":{"type":"boolean","default":false},"type":{"type":"string","minLength":1,"enum":["image","video","document"]},"imageMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]}},"additionalProperties":false,"anyOf":[{"properties":{"hasMediaAttachment":{"type":"boolean","enum":[false]}}},{"required":["hasMediaAttachment","type","imageMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["image"]}}},{"required":["hasMediaAttachment","type","videoMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["video"]}}},{"required":["hasMediaAttachment","type","documentMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["document"]}}}]},"items":{"type":"array","items":{"type":"object","properties":{"retailer_id":{"type":"string","minLength":1,"description":"Referência do item na sua aplicação."},"name":{"type":"string","minLength":1,"description":"Nome do item."},"amount":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":100000000000,"description":"Valor inteiro em centavos (2990 = R$ 29,90)."},"offset":{"type":"integer","minimum":100,"maximum":100,"default":100}},"additionalProperties":false,"required":["value"]},"quantity":{"type":"integer","minimum":1,"maximum":1000000}},"additionalProperties":false,"required":["retailer_id","name","amount","quantity"]},"minItems":1,"maxItems":100},"pixEnabled":{"type":"boolean","default":false},"pixData":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Código PIX copia e cola completo."},"merchant_name":{"type":"string","minLength":1,"description":"Nome do recebedor."},"key":{"type":"string","minLength":1,"description":"Chave PIX do recebedor."},"key_type":{"type":"string","minLength":1,"enum":["CNPJ","CPF","EMAIL","PHONE","EVP"]}},"additionalProperties":false,"required":["code","merchant_name","key","key_type"]},"boletoEnabled":{"type":"boolean","default":false},"boletoData":{"type":"object","properties":{"digitable_line":{"type":"string","minLength":1,"description":"Linha digitável do boleto."}},"additionalProperties":false,"required":["digitable_line"]},"UrlEnabled":{"type":"boolean","default":false},"urlData":{"type":"object","properties":{"uri":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["uri"]}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"pixEnabled":{"type":"boolean","enum":[false]}}},{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"boletoEnabled":{"type":"boolean","enum":[false]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"UrlEnabled":{"type":"boolean","enum":[false]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]}],"required":["numero","texto","items"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto da cobrança."},"footer":{"type":"string","description":"Rodapé."},"header":{"type":"object","properties":{"title":{"type":"string","description":"Título opcional da cobrança."},"hasMediaAttachment":{"type":"boolean","default":false},"type":{"type":"string","minLength":1,"enum":["image","video","document"]},"imageMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]}},"additionalProperties":false,"anyOf":[{"properties":{"hasMediaAttachment":{"type":"boolean","enum":[false]}}},{"required":["hasMediaAttachment","type","imageMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["image"]}}},{"required":["hasMediaAttachment","type","videoMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["video"]}}},{"required":["hasMediaAttachment","type","documentMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["document"]}}}]},"items":{"type":"array","items":{"type":"object","properties":{"retailer_id":{"type":"string","minLength":1,"description":"Referência do item na sua aplicação."},"name":{"type":"string","minLength":1,"description":"Nome do item."},"amount":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":100000000000,"description":"Valor inteiro em centavos (2990 = R$ 29,90)."},"offset":{"type":"integer","minimum":100,"maximum":100,"default":100}},"additionalProperties":false,"required":["value"]},"quantity":{"type":"integer","minimum":1,"maximum":1000000}},"additionalProperties":false,"required":["retailer_id","name","amount","quantity"]},"minItems":1,"maxItems":100},"pixEnabled":{"type":"boolean","default":false},"pixData":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Código PIX copia e cola completo."},"merchant_name":{"type":"string","minLength":1,"description":"Nome do recebedor."},"key":{"type":"string","minLength":1,"description":"Chave PIX do recebedor."},"key_type":{"type":"string","minLength":1,"enum":["CNPJ","CPF","EMAIL","PHONE","EVP"]}},"additionalProperties":false,"required":["code","merchant_name","key","key_type"]},"boletoEnabled":{"type":"boolean","default":false},"boletoData":{"type":"object","properties":{"digitable_line":{"type":"string","minLength":1,"description":"Linha digitável do boleto."}},"additionalProperties":false,"required":["digitable_line"]},"UrlEnabled":{"type":"boolean","default":false},"urlData":{"type":"object","properties":{"uri":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["uri"]}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"pixEnabled":{"type":"boolean","enum":[false]}}},{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"boletoEnabled":{"type":"boolean","enum":[false]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"UrlEnabled":{"type":"boolean","enum":[false]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]}],"required":["numero","texto","items"]}]},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"vcard":{"type":"object","properties":{"fullName":{"type":"string","minLength":1,"description":"Nome completo do contato."},"phoneNumber":{"type":"string","minLength":1,"description":"Telefone do contato, com DDI e DDD.","example":"5511999999999"},"organization":{"type":"string","description":"Organização do contato."}},"additionalProperties":false,"required":["fullName","phoneNumber"]}},"additionalProperties":false,"required":["numero","vcard"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"vcard":{"type":"object","properties":{"fullName":{"type":"string","minLength":1,"description":"Nome completo do contato."},"phoneNumber":{"type":"string","minLength":1,"description":"Telefone do contato, com DDI e DDD.","example":"5511999999999"},"organization":{"type":"string","description":"Organização do contato."}},"additionalProperties":false,"required":["fullName","phoneNumber"]}},"additionalProperties":false,"required":["numero","vcard"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]}},"additionalProperties":false,"required":["numero","key"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"data":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]}},"additionalProperties":false,"required":["numero","key"]}},"additionalProperties":false,"required":["data"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]}},"additionalProperties":false,"required":["numero","key"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo. Também aceita envelope data."},{"type":"object","properties":{"messageKeys":{"anyOf":[{"type":"object","properties":{"messageType":{"type":"string","minLength":1,"enum":["image","imageMessage","video","videoMessage","audio","audioMessage","ptt","gif","ptv","document","documentMessage","sticker","stickerMessage"]},"mediaType":{"type":"string","minLength":1,"description":"Alias de messageType.","enum":["image","video","audio","ptt","gif","ptv","document","sticker"]},"mediaKey":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileEncSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"directPath":{"type":"string","minLength":1,"description":"Caminho de mídia retornado pelo WhatsApp, começando por /, ou URL de CDN HTTPS.","example":"/v/t62.7118-24/ARQUIVO_REAL.enc"},"url":{"type":"string","minLength":1,"description":"URL original de CDN WhatsApp (whatsapp.net, whatsapp.com ou fbcdn.net).","format":"uri","pattern":"^https://","maxLength":8192},"fileLength":{"type":"integer","minimum":0},"mimetype":{"type":"string","minLength":1,"example":"image/png"},"fileName":{"type":"string","minLength":1}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["messageType"]},{"required":["mediaType"]}]},{"anyOf":[{"required":["directPath"]},{"required":["url"]}]}],"required":["mediaKey"]},{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"audioMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"stickerMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]}},"additionalProperties":true,"description":"Mensagem protobuf de mídia original. Copie integralmente do evento; envelopes ephemeral/viewOnceMessage conhecidos também são desembrulhados pela biblioteca."},"proto":{"type":"object","properties":{"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"audioMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"stickerMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]}},"additionalProperties":true,"description":"Mensagem protobuf de mídia original. Copie integralmente do evento; envelopes ephemeral/viewOnceMessage conhecidos também são desembrulhados pela biblioteca."}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"media":{"type":"object","properties":{"messageType":{"type":"string","minLength":1,"enum":["image","imageMessage","video","videoMessage","audio","audioMessage","ptt","gif","ptv","document","documentMessage","sticker","stickerMessage"]},"mediaType":{"type":"string","minLength":1,"description":"Alias de messageType.","enum":["image","video","audio","ptt","gif","ptv","document","sticker"]},"mediaKey":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileEncSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"directPath":{"type":"string","minLength":1,"description":"Caminho de mídia retornado pelo WhatsApp, começando por /, ou URL de CDN HTTPS.","example":"/v/t62.7118-24/ARQUIVO_REAL.enc"},"url":{"type":"string","minLength":1,"description":"URL original de CDN WhatsApp (whatsapp.net, whatsapp.com ou fbcdn.net).","format":"uri","pattern":"^https://","maxLength":8192},"fileLength":{"type":"integer","minimum":0},"mimetype":{"type":"string","minLength":1,"example":"image/png"},"fileName":{"type":"string","minLength":1}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["messageType"]},{"required":["mediaType"]}]},{"anyOf":[{"required":["directPath"]},{"required":["url"]}]}],"required":["mediaKey"]}},"additionalProperties":false,"required":["media"]}],"description":"Preferencialmente envie o descritor media do evento. Também aceita message/proto com mídia e mediaKey, protobuf direto ou envelopes retorno/msgData conhecidos; copie o objeto original."},"messageType":{"type":"string","minLength":1,"enum":["image","imageMessage","video","videoMessage","audio","audioMessage","ptt","gif","ptv","document","documentMessage","sticker","stickerMessage"]},"mediaType":{"type":"string","minLength":1,"description":"Alias de messageType.","enum":["image","video","audio","ptt","gif","ptv","document","sticker"]},"mediaKey":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileEncSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"directPath":{"type":"string","minLength":1,"description":"Caminho de mídia retornado pelo WhatsApp, começando por /, ou URL de CDN HTTPS.","example":"/v/t62.7118-24/ARQUIVO_REAL.enc"},"url":{"type":"string","minLength":1,"description":"URL original de CDN WhatsApp (whatsapp.net, whatsapp.com ou fbcdn.net).","format":"uri","pattern":"^https://","maxLength":8192},"fileLength":{"type":"integer","minimum":0},"mimetype":{"type":"string","minLength":1,"example":"image/png"},"fileName":{"type":"string","minLength":1},"media":{"type":"object","properties":{"messageType":{"type":"string","minLength":1,"enum":["image","imageMessage","video","videoMessage","audio","audioMessage","ptt","gif","ptv","document","documentMessage","sticker","stickerMessage"]},"mediaType":{"type":"string","minLength":1,"description":"Alias de messageType.","enum":["image","video","audio","ptt","gif","ptv","document","sticker"]},"mediaKey":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileEncSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"directPath":{"type":"string","minLength":1,"description":"Caminho de mídia retornado pelo WhatsApp, começando por /, ou URL de CDN HTTPS.","example":"/v/t62.7118-24/ARQUIVO_REAL.enc"},"url":{"type":"string","minLength":1,"description":"URL original de CDN WhatsApp (whatsapp.net, whatsapp.com ou fbcdn.net).","format":"uri","pattern":"^https://","maxLength":8192},"fileLength":{"type":"integer","minimum":0},"mimetype":{"type":"string","minLength":1,"example":"image/png"},"fileName":{"type":"string","minLength":1}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["messageType"]},{"required":["mediaType"]}]},{"anyOf":[{"required":["directPath"]},{"required":["url"]}]}],"required":["mediaKey"]},"message":{"type":"object","properties":{"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"audioMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"stickerMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]}},"additionalProperties":true,"description":"Mensagem protobuf de mídia original. Copie integralmente do evento; envelopes ephemeral/viewOnceMessage conhecidos também são desembrulhados pela biblioteca."},"proto":{"type":"object","properties":{"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"audioMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"stickerMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]}},"additionalProperties":true,"description":"Mensagem protobuf de mídia original. Copie integralmente do evento; envelopes ephemeral/viewOnceMessage conhecidos também são desembrulhados pela biblioteca."},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]}},"additionalProperties":true,"anyOf":[{"required":["messageKeys"]},{"required":["media"]},{"required":["message"]},{"required":["proto"]},{"required":["mediaKey"],"allOf":[{"anyOf":[{"required":["messageType"]},{"required":["mediaType"]}]},{"anyOf":[{"required":["directPath"]},{"required":["url"]}]}]}]},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Novo texto da mensagem."},"keyMsg":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","enum":[true],"description":"A edição exige mensagem enviada pela própria sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id","fromMe"]}},"additionalProperties":false,"required":["numero","text","keyMsg"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Novo texto da mensagem."},"keyMsg":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","enum":[true],"description":"A edição exige mensagem enviada pela própria sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id","fromMe"]}},"additionalProperties":false,"required":["numero","text","keyMsg"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"evento":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Nome do evento."},"startDate":{"type":"integer","minimum":0,"description":"Início em Unix timestamp, segundos (não milissegundos)."},"endDate":{"type":"integer","minimum":0,"description":"Fim em Unix timestamp, segundos; deve ser >= startDate."},"description":{"type":"string","description":"Descrição."},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"degreesLatitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"degreesLongitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"name":{"type":"string"},"address":{"type":"string"}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["latitude"]},{"required":["degreesLatitude"]}]},{"anyOf":[{"required":["longitude"]},{"required":["degreesLongitude"]}]}]},"call":{"type":"string","minLength":1,"description":"Exige joinLink existente; a API não gera esse link.","enum":["audio","video"]},"joinLink":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"anyOf":[{"not":{"required":["call"]}},{"required":["call","joinLink"]}],"required":["name","startDate"]}},"additionalProperties":false,"required":["numero","evento"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"evento":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Nome do evento."},"startDate":{"type":"integer","minimum":0,"description":"Início em Unix timestamp, segundos (não milissegundos)."},"endDate":{"type":"integer","minimum":0,"description":"Fim em Unix timestamp, segundos; deve ser >= startDate."},"description":{"type":"string","description":"Descrição."},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"degreesLatitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"degreesLongitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"name":{"type":"string"},"address":{"type":"string"}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["latitude"]},{"required":["degreesLatitude"]}]},{"anyOf":[{"required":["longitude"]},{"required":["degreesLongitude"]}]}]},"call":{"type":"string","minLength":1,"description":"Exige joinLink existente; a API não gera esse link.","enum":["audio","video"]},"joinLink":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"anyOf":[{"not":{"required":["call"]}},{"required":["call","joinLink"]}],"required":["name","startDate"]}},"additionalProperties":false,"required":["numero","evento"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},{"anyOf":[{"type":"object","properties":{"messageData":{"oneOf":[{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_id","screen"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["screen"],"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_id","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_json"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_json","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["data_exchange"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["data_exchange"]}},"required":["numero","flow_id","flow_token"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]},{"anyOf":[{"required":["action"]},{"required":["flow_action"]}]}]}]}},"required":["messageData"],"additionalProperties":false},{"oneOf":[{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_id","screen"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["screen"],"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_id","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_json"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_json","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["data_exchange"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["data_exchange"]}},"required":["numero","flow_id","flow_token"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]},{"anyOf":[{"required":["action"]},{"required":["flow_action"]}]}]}]}],"description":"Aceita messageData ou os mesmos campos diretamente no corpo. Use somente uma forma de cada alias."},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["data_exchange"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["data_exchange"]}},"required":["numero","flow_id","flow_token"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}},"required":["messageData"],"additionalProperties":false},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["data_exchange"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["data_exchange"]}},"required":["numero","flow_id","flow_token"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}],"description":"Aceita messageData ou os mesmos campos diretamente no corpo. Use somente uma forma de cada alias."},{"anyOf":[{"type":"object","properties":{"messageData":{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_id","screen"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["screen"],"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_id","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_json"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_json","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}]}},"required":["messageData"],"additionalProperties":false},{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_id","screen"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["screen"],"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_id","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_json"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_json","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}]}],"description":"Aceita messageData ou os mesmos campos diretamente no corpo. Use somente uma forma de cada alias."},{"anyOf":[{"type":"object","properties":{"messageData":{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false}},"platform":{"type":"string","enum":["portable"],"default":"portable","description":"Escolhas compatíveis com o caminho validado no Web e Android. Campos input não são aceitos."}},"required":["numero","cta","steps"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"oneOf":[{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false},{"type":"object","required":["id","label","kind","fields"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Título da etapa, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["input"]},"fields":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","label","type","required"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID do campo retornado, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Rótulo do campo, até 1024 bytes UTF-8."},"type":{"type":"string","enum":["text"]},"required":{"type":"boolean","description":"Indica se o preenchimento é obrigatório."},"default":{"type":"string","maxLength":128,"description":"Valor inicial opcional. Limite real de 128 unidades UTF-16, como no Android: um emoji ocupa duas unidades."}},"additionalProperties":false}},"button":{"type":"string","minLength":1,"maxLength":30,"description":"Botão de envio da etapa. Se omitido, usa cta; até 30 caracteres Unicode."}},"additionalProperties":false}]}},"platform":{"type":"string","enum":["android"],"description":"Habilita InputFields validado no Android. Não há suporte Web confirmado para essas etapas."}},"required":["numero","cta","steps","platform"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]}]}},"required":["messageData"],"additionalProperties":false},{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false}},"platform":{"type":"string","enum":["portable"],"default":"portable","description":"Escolhas compatíveis com o caminho validado no Web e Android. Campos input não são aceitos."}},"required":["numero","cta","steps"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"oneOf":[{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false},{"type":"object","required":["id","label","kind","fields"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Título da etapa, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["input"]},"fields":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","label","type","required"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID do campo retornado, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Rótulo do campo, até 1024 bytes UTF-8."},"type":{"type":"string","enum":["text"]},"required":{"type":"boolean","description":"Indica se o preenchimento é obrigatório."},"default":{"type":"string","maxLength":128,"description":"Valor inicial opcional. Limite real de 128 unidades UTF-16, como no Android: um emoji ocupa duas unidades."}},"additionalProperties":false}},"button":{"type":"string","minLength":1,"maxLength":30,"description":"Botão de envio da etapa. Se omitido, usa cta; até 30 caracteres Unicode."}},"additionalProperties":false}]}},"platform":{"type":"string","enum":["android"],"description":"Habilita InputFields validado no Android. Não há suporte Web confirmado para essas etapas."}},"required":["numero","cta","steps","platform"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]}]}],"description":"Aceita messageData ou os mesmos campos diretamente no corpo."},{"anyOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["numero","mensagem"]},{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"}},"additionalProperties":false,"required":["numero"]},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["messageData","mensagem"]}]},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto da mensagem com link."},"sourceUrl":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192},"url":{"type":"string","minLength":1,"description":"Alias de sourceUrl.","format":"uri","pattern":"^https://","maxLength":8192},"title":{"type":"string","description":"Título do preview."},"body":{"type":"string","description":"Descrição do preview."},"thumbnailUrl":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192},"mediaType":{"type":"string","minLength":1,"description":"Tipo do thumbnail externo.","enum":["image","video"],"default":"image"}},"additionalProperties":false,"anyOf":[{"required":["sourceUrl"]},{"required":["url"]}],"required":["numero","text"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto da mensagem com link."},"sourceUrl":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192},"url":{"type":"string","minLength":1,"description":"Alias de sourceUrl.","format":"uri","pattern":"^https://","maxLength":8192},"title":{"type":"string","description":"Título do preview."},"body":{"type":"string","description":"Descrição do preview."},"thumbnailUrl":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192},"mediaType":{"type":"string","minLength":1,"description":"Tipo do thumbnail externo.","enum":["image","video"],"default":"image"}},"additionalProperties":false,"anyOf":[{"required":["sourceUrl"]},{"required":["url"]}],"required":["numero","text"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"titulo":{"type":"string","description":"Título da lista."},"title":{"type":"string","description":"Alias de titulo."},"texto":{"type":"string","minLength":1,"description":"Texto principal."},"text":{"type":"string","minLength":1,"description":"Alias de texto."},"textoBotao":{"type":"string","minLength":1,"description":"Rótulo do botão que abre a lista."},"buttonText":{"type":"string","minLength":1,"description":"Alias de textoBotao."},"footer":{"type":"string","description":"Rodapé."},"secoes":{"type":"array","items":{"type":"object","properties":{"titulo":{"type":"string","description":"Título da seção."},"title":{"type":"string","description":"Alias de titulo."},"opcoes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100,"description":"Alias de opcoes."}},"additionalProperties":false,"anyOf":[{"required":["opcoes"]},{"required":["rows"]}]},"minItems":1,"maxItems":100},"sections":{"type":"array","items":{"type":"object","properties":{"titulo":{"type":"string","description":"Título da seção."},"title":{"type":"string","description":"Alias de titulo."},"opcoes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100,"description":"Alias de opcoes."}},"additionalProperties":false,"anyOf":[{"required":["opcoes"]},{"required":["rows"]}]},"minItems":1,"maxItems":100,"description":"Alias de secoes."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["textoBotao"]},{"required":["buttonText"]}]},{"anyOf":[{"required":["secoes"]},{"required":["sections"]}]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"titulo":{"type":"string","description":"Título da lista."},"title":{"type":"string","description":"Alias de titulo."},"texto":{"type":"string","minLength":1,"description":"Texto principal."},"text":{"type":"string","minLength":1,"description":"Alias de texto."},"textoBotao":{"type":"string","minLength":1,"description":"Rótulo do botão que abre a lista."},"buttonText":{"type":"string","minLength":1,"description":"Alias de textoBotao."},"footer":{"type":"string","description":"Rodapé."},"secoes":{"type":"array","items":{"type":"object","properties":{"titulo":{"type":"string","description":"Título da seção."},"title":{"type":"string","description":"Alias de titulo."},"opcoes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100,"description":"Alias de opcoes."}},"additionalProperties":false,"anyOf":[{"required":["opcoes"]},{"required":["rows"]}]},"minItems":1,"maxItems":100},"sections":{"type":"array","items":{"type":"object","properties":{"titulo":{"type":"string","description":"Título da seção."},"title":{"type":"string","description":"Alias de titulo."},"opcoes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100,"description":"Alias de opcoes."}},"additionalProperties":false,"anyOf":[{"required":["opcoes"]},{"required":["rows"]}]},"minItems":1,"maxItems":100,"description":"Alias de secoes."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["textoBotao"]},{"required":["buttonText"]}]},{"anyOf":[{"required":["secoes"]},{"required":["sections"]}]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"coordenadas":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333}},"additionalProperties":false,"required":["latitude","longitude"]},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"name":{"type":"string","description":"Nome do local."},"address":{"type":"string","description":"Endereço do local."}},"additionalProperties":false,"anyOf":[{"required":["coordenadas"]},{"required":["latitude","longitude"]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"coordenadas":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333}},"additionalProperties":false,"required":["latitude","longitude"]},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"name":{"type":"string","description":"Nome do local."},"address":{"type":"string","description":"Endereço do local."}},"additionalProperties":false,"anyOf":[{"required":["coordenadas"]},{"required":["latitude","longitude"]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"type":{"type":"string","minLength":1,"enum":["image","video","audio","document","sticker","gif","ptv","ptt"]},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"caption":{"type":"string","description":"Legenda da mídia."},"mimeType":{"type":"string","minLength":1,"description":"MIME do arquivo, quando necessário.","example":"image/png"},"nameFile":{"type":"string","minLength":1,"description":"Nome de arquivo sem diretórios. Alias de fileName.","maxLength":255},"fileName":{"type":"string","minLength":1,"description":"Nome de arquivo sem barras ou diretórios.","maxLength":255},"seconds":{"type":"integer","minimum":0,"description":"Duração em segundos, quando aplicável."},"viewOnce":{"type":"boolean","description":"Visualização única, quando suportada pelo tipo."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}],"required":["numero","type"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"type":{"type":"string","minLength":1,"enum":["image","video","audio","document","sticker","gif","ptv","ptt"]},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"caption":{"type":"string","description":"Legenda da mídia."},"mimeType":{"type":"string","minLength":1,"description":"MIME do arquivo, quando necessário.","example":"image/png"},"nameFile":{"type":"string","minLength":1,"description":"Nome de arquivo sem diretórios. Alias de fileName.","maxLength":255},"fileName":{"type":"string","minLength":1,"description":"Nome de arquivo sem barras ou diretórios.","maxLength":255},"seconds":{"type":"integer","minimum":0,"description":"Duração em segundos, quando aplicável."},"viewOnce":{"type":"boolean","description":"Visualização única, quando suportada pelo tipo."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}],"required":["numero","type"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Nota da solicitação."},"valor":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":100000000,"description":"Valor em reais (29.90 = R$ 29,90)."}},"additionalProperties":false,"required":["numero","text","valor"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"data":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Nota da solicitação."},"valor":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":100000000,"description":"Valor em reais (29.90 = R$ 29,90)."}},"additionalProperties":false,"required":["numero","text","valor"]}},"additionalProperties":false,"required":["data"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Nota da solicitação."},"valor":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":100000000,"description":"Valor em reais (29.90 = R$ 29,90)."}},"additionalProperties":false,"required":["numero","text","valor"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo. Também aceita envelope data."},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"pergunta":{"type":"string","minLength":1,"description":"Pergunta da enquete."},"name":{"type":"string","minLength":1,"description":"Alias de pergunta."},"opcoes":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"opcao":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"description":"Alias de opcao."}},"additionalProperties":false,"anyOf":[{"required":["opcao"]},{"required":["name"]}]}]},"minItems":1,"maxItems":12},"options":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"opcao":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"description":"Alias de opcao."}},"additionalProperties":false,"anyOf":[{"required":["opcao"]},{"required":["name"]}]}]},"minItems":1,"maxItems":12,"description":"Alias de opcoes."},"selectableCount":{"type":"integer","minimum":0,"maximum":12,"default":1,"description":"0 permite múltiplas seleções; não pode exceder a quantidade de opções."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pergunta"]},{"required":["name"]}]},{"anyOf":[{"required":["opcoes"]},{"required":["options"]}]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"pergunta":{"type":"string","minLength":1,"description":"Pergunta da enquete."},"name":{"type":"string","minLength":1,"description":"Alias de pergunta."},"opcoes":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"opcao":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"description":"Alias de opcao."}},"additionalProperties":false,"anyOf":[{"required":["opcao"]},{"required":["name"]}]}]},"minItems":1,"maxItems":12},"options":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"opcao":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"description":"Alias de opcao."}},"additionalProperties":false,"anyOf":[{"required":["opcao"]},{"required":["name"]}]}]},"minItems":1,"maxItems":12,"description":"Alias de opcoes."},"selectableCount":{"type":"integer","minimum":0,"maximum":12,"default":1,"description":"0 permite múltiplas seleções; não pode exceder a quantidade de opções."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pergunta"]},{"required":["name"]}]},{"anyOf":[{"required":["opcoes"]},{"required":["options"]}]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"reacao":{"type":"string","description":"Emoji da reação. Use string vazia para remover a própria reação."},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"idMsg":{"type":"string","minLength":1,"description":"Alias de key.id."},"fromMe":{"type":"boolean","default":false,"description":"Autor da mensagem alvo, quando usar idMsg."},"participant":{"type":"string","minLength":1,"description":"JID do autor da mensagem em grupo, quando usar idMsg."}},"additionalProperties":false,"anyOf":[{"required":["key"]},{"required":["idMsg"]}],"required":["numero","reacao"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"reacao":{"type":"string","description":"Emoji da reação. Use string vazia para remover a própria reação."},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"idMsg":{"type":"string","minLength":1,"description":"Alias de key.id."},"fromMe":{"type":"boolean","default":false,"description":"Autor da mensagem alvo, quando usar idMsg."},"participant":{"type":"string","minLength":1,"description":"JID do autor da mensagem em grupo, quando usar idMsg."}},"additionalProperties":false,"anyOf":[{"required":["key"]},{"required":["idMsg"]}],"required":["numero","reacao"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1}},"additionalProperties":false,"required":["numero","text"]},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["messageData","mensagem"]},{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto da resposta."},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["numero","text","mensagem"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto da resposta."},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["numero","text","mensagem"]}]},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto enviado ao destinatário."},"texto":{"type":"string","minLength":1,"description":"Alias de text; text tem preferência."}},"additionalProperties":false,"anyOf":[{"required":["text"]},{"required":["texto"]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto enviado ao destinatário."},"texto":{"type":"string","minLength":1,"description":"Alias de text; text tem preferência."}},"additionalProperties":false,"anyOf":[{"required":["text"]},{"required":["texto"]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"caption":{"type":"string","description":"Legenda da mídia."},"mimeType":{"type":"string","minLength":1,"description":"MIME do arquivo, quando necessário.","example":"image/png"},"nameFile":{"type":"string","minLength":1,"description":"Nome de arquivo sem diretórios. Alias de fileName.","maxLength":255},"fileName":{"type":"string","minLength":1,"description":"Nome de arquivo sem barras ou diretórios.","maxLength":255},"seconds":{"type":"integer","minimum":0,"description":"Duração em segundos, quando aplicável."},"viewOnce":{"type":"boolean","description":"Visualização única, quando suportada pelo tipo."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"caption":{"type":"string","description":"Legenda da mídia."},"mimeType":{"type":"string","minLength":1,"description":"MIME do arquivo, quando necessário.","example":"image/png"},"nameFile":{"type":"string","minLength":1,"description":"Nome de arquivo sem diretórios. Alias de fileName.","maxLength":255},"fileName":{"type":"string","minLength":1,"description":"Nome de arquivo sem barras ou diretórios.","maxLength":255},"seconds":{"type":"integer","minimum":0,"description":"Duração em segundos, quando aplicável."},"viewOnce":{"type":"boolean","description":"Visualização única, quando suportada pelo tipo."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},{"type":"object","properties":{"metodo":{"type":"string","enum":["qrcode","codigo"],"description":"Método para vincular um aparelho Web/Desktop a uma sessão primária Mobile."},"qrcode":{"type":"string","minLength":1,"maxLength":16384,"description":"Conteúdo bruto atual do QR Code do aparelho Web/Desktop; não uma imagem/base64 do QR."},"codigo":{"type":"string","minLength":8,"maxLength":64,"description":"Código de oito letras/dígitos exibido pelo aparelho. Espaços e hífens são removidos.","pattern":"^[A-Za-z0-9\\s-]+$"}},"required":["metodo"],"additionalProperties":false,"anyOf":[{"properties":{"metodo":{"enum":["qrcode"]}},"required":["qrcode"]},{"properties":{"metodo":{"enum":["codigo"]}},"required":["codigo"]}]},{"type":"object","properties":{"_params":{"type":"object","required":["device_jid"],"properties":{"device_jid":{"type":"string","maxLength":200,"pattern":"^\\d+(?::\\d+)?@(?:s\\.whatsapp\\.net|lid)$","description":"JID real do dispositivo retornado na listagem.","example":"5511999999999:2@s.whatsapp.net"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"credentialId":{"type":"string","minLength":1,"maxLength":1398104,"description":"Identificador da credencial WebAuthn em base64/base64url.","format":"byte","pattern":"^[A-Za-z0-9_+/-]+={0,2}$"},"webauthnAssertion":{"type":"string","minLength":1,"maxLength":1398104,"description":"Assertion WebAuthn assinada em base64/base64url; máximo de 1 MiB após decodificação.","format":"byte","pattern":"^[A-Za-z0-9_+/-]+={0,2}$"},"requestOptionsBase64":{"type":"string","minLength":1,"maxLength":1398104,"description":"Opcional: cópia exata de passkey.requestOptionsBase64. Se informado, deve corresponder ao desafio atual.","format":"byte","pattern":"^[A-Za-z0-9_+/-]+={0,2}$"}},"required":["credentialId","webauthnAssertion"],"additionalProperties":false},{"type":"object","properties":{"enabled":{"type":"boolean"},"cartEnabled":{"type":"boolean","description":"Alias de enabled; se ambos forem enviados devem ser iguais."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["enabled"]},{"required":["cartEnabled"]}]}]},{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":4096,"description":"Motivo opcional da revisão."},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"products":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"minItems":0,"maxItems":100,"uniqueItems":true},"catalogSessionId":{"type":"string","minLength":1,"maxLength":128,"example":"catalog-mvo-01","description":"Identificador opcional da sessão do catálogo."}},"additionalProperties":false,"required":["name"]},{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"minItems":1,"maxItems":100,"uniqueItems":true},"catalogSessionId":{"type":"string","minLength":1,"maxLength":128,"example":"catalog-mvo-01","description":"Identificador opcional da sessão do catálogo."},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","example":"RESOURCE_ID"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"moves":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"fromIndex":{"type":"integer","minimum":0,"maximum":1000000},"toIndex":{"type":"integer","minimum":0,"maximum":1000000}},"additionalProperties":false,"required":["id","fromIndex","toIndex"]},"minItems":1,"maxItems":100}},"additionalProperties":false,"required":["moves"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"productsToAdd":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"minItems":0,"maxItems":100,"uniqueItems":true},"productsToRemove":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"minItems":0,"maxItems":100,"uniqueItems":true},"catalogSessionId":{"type":"string","minLength":1,"maxLength":128,"example":"catalog-mvo-01","description":"Identificador opcional da sessão do catálogo."},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."}},"additionalProperties":false}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["name"]},{"required":["productsToAdd"]},{"required":["productsToRemove"]}]}],"required":["_params"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"name":{"type":"string","minLength":1,"maxLength":512},"description":{"type":"string","maxLength":4096,"description":"Descrição; texto vazio limpa."},"price":{"oneOf":[{"type":"number","minimum":0,"maximum":999999999999},{"type":"string","pattern":"^[0-9]{1,12}(?:\\.[0-9]{1,6})?$"}],"description":"Valor na moeda principal: 19.99 equivale a R$ 19,99 em BRL. Convertido para milésimos com arredondamento; não enviar junto com priceAmount1000.","example":19.99},"priceAmount1000":{"oneOf":[{"type":"integer","minimum":0,"maximum":999999999999999},{"type":"string","pattern":"^[0-9]{1,15}$"}],"description":"Alternativa a price em milésimos: \"19990\" equivale a 19.99.","example":"19990"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","example":"BRL","description":"Moeda ISO 4217; padrão BRL na criação."},"currencyCode":{"type":"string","pattern":"^[A-Z]{3}$","description":"Alias de currency; se ambos forem informados devem ser iguais."},"images":{"type":"array","items":{"oneOf":[{"type":"string","minLength":1,"example":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII=","description":"URL HTTPS pública ou data:image/png;base64,...; não aceita caminho local."},{"type":"object","properties":{"url":{"type":"string","pattern":"^https://","maxLength":8192,"example":"https://seu-dominio.example/imagens/produto.png","description":"URL HTTPS pública na porta 443, sem credenciais nem fragmento. Não aceita arquivos locais ou redes privadas."}},"additionalProperties":false,"required":["url"]},{"type":"object","properties":{"base64":{"type":"string","minLength":1,"example":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII=","description":"Bytes completos da imagem em base64. JPEG, PNG ou WebP; até 8192 por eixo e 16777216 pixels. Respeite o limite de mídia configurado."}},"additionalProperties":false,"required":["base64"]}]},"minItems":1,"maxItems":10},"imagemUrl":{"type":"string","pattern":"^https://","description":"Alias para uma única imagem HTTPS; não enviar junto com images."},"url":{"type":"string","maxLength":2048,"example":"https://www.mvo.host","description":"Link HTTP/HTTPS do produto; texto vazio remove."},"isHidden":{"type":"boolean","default":false},"originCountryCode":{"type":"string","pattern":"^[A-Z]{2}$","nullable":true,"example":"BR","description":"País ISO; padrão BR na criação, null declara isenção."},"retailerId":{"type":"string","maxLength":128,"example":"MVO-PLANO-01","description":"SKU interno; texto vazio remove."},"salePrice":{"oneOf":[{"type":"number","minimum":0,"maximum":999999999999},{"type":"string","pattern":"^[0-9]{1,12}(?:\\.[0-9]{1,6})?$"}],"description":"Preço promocional na moeda principal.","example":14.99}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["price"]},{"required":["priceAmount1000"]}]},{"anyOf":[{"required":["images"]},{"required":["imagemUrl"]}]},{"not":{"required":["price","priceAmount1000"]}},{"not":{"required":["images","imagemUrl"]}}],"required":["name","description"]},{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"minItems":1,"maxItems":100,"uniqueItems":true},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":512},"description":{"type":"string","maxLength":4096,"description":"Descrição; texto vazio limpa."},"price":{"oneOf":[{"type":"number","minimum":0,"maximum":999999999999},{"type":"string","pattern":"^[0-9]{1,12}(?:\\.[0-9]{1,6})?$"}],"description":"Valor na moeda principal: 19.99 equivale a R$ 19,99 em BRL. Convertido para milésimos com arredondamento; não enviar junto com priceAmount1000.","example":19.99},"priceAmount1000":{"oneOf":[{"type":"integer","minimum":0,"maximum":999999999999999},{"type":"string","pattern":"^[0-9]{1,15}$"}],"description":"Alternativa a price em milésimos: \"19990\" equivale a 19.99.","example":"19990"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","example":"BRL","description":"Moeda ISO 4217; padrão BRL na criação."},"currencyCode":{"type":"string","pattern":"^[A-Z]{3}$","description":"Alias de currency; se ambos forem informados devem ser iguais."},"images":{"type":"array","items":{"oneOf":[{"type":"string","minLength":1,"example":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII=","description":"URL HTTPS pública ou data:image/png;base64,...; não aceita caminho local."},{"type":"object","properties":{"url":{"type":"string","pattern":"^https://","maxLength":8192,"example":"https://seu-dominio.example/imagens/produto.png","description":"URL HTTPS pública na porta 443, sem credenciais nem fragmento. Não aceita arquivos locais ou redes privadas."}},"additionalProperties":false,"required":["url"]},{"type":"object","properties":{"base64":{"type":"string","minLength":1,"example":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII=","description":"Bytes completos da imagem em base64. JPEG, PNG ou WebP; até 8192 por eixo e 16777216 pixels. Respeite o limite de mídia configurado."}},"additionalProperties":false,"required":["base64"]}]},"minItems":1,"maxItems":10},"imagemUrl":{"type":"string","pattern":"^https://","description":"Alias para uma única imagem HTTPS; não enviar junto com images."},"url":{"type":"string","maxLength":2048,"example":"https://www.mvo.host","description":"Link HTTP/HTTPS do produto; texto vazio remove."},"isHidden":{"type":"boolean","default":false},"originCountryCode":{"type":"string","pattern":"^[A-Z]{2}$","nullable":true,"example":"BR","description":"País ISO; padrão BR na criação, null declara isenção."},"retailerId":{"type":"string","maxLength":128,"example":"MVO-PLANO-01","description":"SKU interno; texto vazio remove."},"salePrice":{"oneOf":[{"type":"number","minimum":0,"maximum":999999999999},{"type":"string","pattern":"^[0-9]{1,12}(?:\\.[0-9]{1,6})?$"}],"description":"Preço promocional na moeda principal.","example":14.99},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."}},"additionalProperties":false}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["name"]},{"required":["description"]},{"required":["price"]},{"required":["priceAmount1000"]},{"required":["currency"]},{"required":["currencyCode"]},{"required":["images"]},{"required":["imagemUrl"]},{"required":["url"]},{"required":["isHidden"]},{"required":["originCountryCode"]},{"required":["retailerId"]},{"required":["salePrice"]}]},{"not":{"required":["price","priceAmount1000"]}},{"not":{"required":["images","imagemUrl"]}}],"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","example":"RESOURCE_ID"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"produtoId":{"type":"string","minLength":1,"maxLength":128,"description":"ID real do produto no catálogo."},"title":{"type":"string","minLength":1,"maxLength":512,"description":"Título do produto."},"description":{"type":"string","minLength":0,"maxLength":4096,"description":"Descrição opcional.","default":""},"currencyCode":{"type":"string","pattern":"^[A-Z]{3}$","default":"BRL","description":"Código de moeda com três letras maiúsculas."},"price":{"anyOf":[{"type":"integer","minimum":0,"maximum":999999999999999},{"type":"string","pattern":"^\\d{1,15}$"}],"description":"Preço em milésimos da moeda; 19990 corresponde a R$ 19,99. Diferente de product.create/edit, esta rota não aceita preço decimal."},"image":{"anyOf":[{"type":"string","minLength":1,"maxLength":8192,"description":"URL HTTPS pública da imagem; nunca um caminho local.","pattern":"^https://","format":"uri"},{"type":"string","pattern":"^data:[a-zA-Z0-9.+-]+/[a-zA-Z0-9.+-]+;base64,","maxLength":44739300,"description":"Data URI contendo imagem base64; máximo de 32 MiB após decodificação."},{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":8192,"description":"URL HTTPS pública da imagem.","format":"uri","pattern":"^https://"},"base64":{"type":"string","minLength":1,"maxLength":44739248,"description":"Bytes da imagem em base64 padrão.","format":"byte"}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]}],"description":"Imagem do produto, validada e enviada pela API. Aceita URL HTTPS pública, data URI ou objeto {url} / {base64}. Limite de 32 MiB."},"url":{"type":"string","minLength":0,"maxLength":2048,"description":"Link opcional do produto."},"retailerId":{"type":"string","minLength":0,"maxLength":2048,"description":"Código interno/SKU opcional."},"produtos":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"produtoId":{"type":"string","minLength":1,"maxLength":128,"description":"ID real do produto no catálogo."},"title":{"type":"string","minLength":1,"maxLength":512,"description":"Título do produto."},"description":{"type":"string","minLength":0,"maxLength":4096,"description":"Descrição opcional.","default":""},"currencyCode":{"type":"string","pattern":"^[A-Z]{3}$","default":"BRL","description":"Código de moeda com três letras maiúsculas."},"price":{"anyOf":[{"type":"integer","minimum":0,"maximum":999999999999999},{"type":"string","pattern":"^\\d{1,15}$"}],"description":"Preço em milésimos da moeda; 19990 corresponde a R$ 19,99. Diferente de product.create/edit, esta rota não aceita preço decimal."},"image":{"anyOf":[{"type":"string","minLength":1,"maxLength":8192,"description":"URL HTTPS pública da imagem; nunca um caminho local.","pattern":"^https://","format":"uri"},{"type":"string","pattern":"^data:[a-zA-Z0-9.+-]+/[a-zA-Z0-9.+-]+;base64,","maxLength":44739300,"description":"Data URI contendo imagem base64; máximo de 32 MiB após decodificação."},{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":8192,"description":"URL HTTPS pública da imagem.","format":"uri","pattern":"^https://"},"base64":{"type":"string","minLength":1,"maxLength":44739248,"description":"Bytes da imagem em base64 padrão.","format":"byte"}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]}],"description":"Imagem do produto, validada e enviada pela API. Aceita URL HTTPS pública, data URI ou objeto {url} / {base64}. Limite de 32 MiB."},"url":{"type":"string","minLength":0,"maxLength":2048,"description":"Link opcional do produto."},"retailerId":{"type":"string","minLength":0,"maxLength":2048,"description":"Código interno/SKU opcional."}},"required":["numero","produtoId","title","price","image"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["numero","produtoId","title","price","image"]},{"required":["produtos"]}]},{"type":"object","properties":{"isHidden":{"type":"boolean"},"oculto":{"type":"boolean","description":"Alias de isHidden."},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."}},"additionalProperties":false}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["isHidden"]},{"required":["oculto"]}]}],"required":["_params"]},{"type":"object","properties":{"address":{"type":"string","minLength":0,"maxLength":512,"description":"Endereço comercial; string vazia remove o valor."},"email":{"type":"string","minLength":0,"maxLength":254,"description":"E-mail comercial válido; string vazia remove o valor."},"description":{"type":"string","minLength":0,"maxLength":4096,"description":"Descrição comercial; string vazia remove o valor."},"websites":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2048,"description":"URL HTTP ou HTTPS, sem credenciais.","format":"uri","pattern":"^https?://"},"minItems":0,"maxItems":2},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"categories":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1,"maxLength":128,"description":"ID de categoria comercial consultado em business.categories."},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da categoria."}},"required":["id"],"additionalProperties":false}]},"minItems":0,"maxItems":3},"hours":{"type":"object","properties":{"timezone":{"type":"string","minLength":1,"maxLength":100,"description":"Fuso IANA, por exemplo America/Sao_Paulo."},"days":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string","enum":["mon","tue","wed","thu","fri","sat","sun","monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"mode":{"type":"string","enum":["closed","open_24h","specific_hours","appointment_only"]},"open":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$","description":"Obrigatório para mode=specific_hours; HH:MM."},"close":{"type":"string","pattern":"^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$","description":"Obrigatório para mode=specific_hours; fechamento 24:00 é aceito."}},"required":["day","mode"],"additionalProperties":false,"anyOf":[{"properties":{"mode":{"enum":["closed","open_24h","appointment_only"]}}},{"properties":{"mode":{"enum":["specific_hours"]}},"required":["open","close"]}]},"minItems":0,"maxItems":32,"description":"Aceita vários intervalos no mesmo dia."}},"required":["timezone","days"],"additionalProperties":false},"businessHours":{"type":"object","properties":{"timezone":{"type":"string","minLength":1,"maxLength":100,"description":"Fuso IANA, por exemplo America/Sao_Paulo."},"config":{"type":"array","items":{"type":"object","properties":{"dayOfWeek":{"type":"string","enum":["mon","tue","wed","thu","fri","sat","sun","monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"mode":{"type":"string","enum":["closed","open_24h","specific_hours","appointment_only"]},"openTime":{"type":"integer","minimum":0,"maximum":1439,"description":"Minutos desde meia-noite; obrigatório para specific_hours."},"closeTime":{"type":"integer","minimum":0,"maximum":1440,"description":"Minutos desde meia-noite; 1440 representa 24:00; obrigatório para specific_hours."}},"required":["dayOfWeek","mode"],"additionalProperties":false,"anyOf":[{"properties":{"mode":{"enum":["closed","open_24h","appointment_only"]}}},{"properties":{"mode":{"enum":["specific_hours"]}},"required":["openTime","closeTime"]}]},"minItems":0,"maxItems":32,"description":"Alternativa nativa a hours; aceita vários intervalos no mesmo dia."}},"required":["timezone","config"],"additionalProperties":false}},"additionalProperties":false,"minProperties":1,"not":{"required":["hours","businessHours"]}},{"type":"object","properties":{"nome":{"type":"string","minLength":1,"maxLength":100,"description":"Nome exibido no perfil."}},"required":["nome"],"additionalProperties":false},{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":8192,"description":"URL HTTPS pública da imagem, sem credenciais, fragmento ou porta diferente de 443.","format":"uri","pattern":"^https://"},"base64":{"type":"string","minLength":1,"maxLength":11184816,"description":"Bytes da imagem em base64 padrão, sem prefixo data:. Limite de 8 MiB.","format":"byte"}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":139,"description":"Recado do perfil; até 139 bytes UTF-8."}},"required":["text"],"additionalProperties":false},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"}},"required":["numero"],"additionalProperties":false},{"type":"object","properties":{"tipo":{"type":"string","enum":["qrcode","codigo"],"default":"qrcode","description":"Modo de conexão; qrcode por padrão."},"mode":{"type":"string","enum":["qrcode","codigo"],"description":"Alias de tipo."},"numero":{"type":"string","pattern":"^[1-9][0-9]{7,14}$","example":"5511999999999","description":"Obrigatório no modo codigo; inclua DDI e DDD."}},"additionalProperties":false,"anyOf":[{"properties":{"tipo":{"enum":["qrcode"]},"mode":{"enum":["qrcode"]}}},{"required":["numero"],"properties":{"tipo":{"enum":["codigo"]},"mode":{"enum":["codigo"]}},"anyOf":[{"required":["tipo"]},{"required":["mode"]}]}]},{"type":"object","properties":{"reject":{"type":"boolean","description":"Rejeitar automaticamente chamadas recebidas."},"message":{"type":"string","maxLength":4096,"description":"Resposta automática ao rejeitar chamadas."}},"additionalProperties":false},{"type":"object","properties":{"readMsgAuto":{"type":"boolean"},"archivedMsgAuto":{"type":"boolean"}},"additionalProperties":false},{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."},"_params":{"type":"object","required":["message_id"],"properties":{"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"_params":{"type":"object","required":["message_id"],"properties":{"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"includeExpired":{"type":"boolean","default":false},"includeRevoked":{"type":"boolean","default":false},"_params":{"type":"object","required":["message_id"],"properties":{"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"limit":{"type":"integer","minimum":1,"maximum":500,"default":100},"before":{"type":"integer","minimum":0,"description":"Timestamp Unix exclusivo, em segundos."},"includeExpired":{"type":"boolean","default":false},"includeRevoked":{"type":"boolean","default":false}},"additionalProperties":false},{"type":"object","properties":{"_params":{"type":"object","required":["author"],"properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":500,"default":100},"after":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}},"additionalProperties":false},{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"limit":{"type":"integer","minimum":1,"maximum":500,"default":100},"before":{"type":"integer","minimum":0,"description":"Timestamp Unix exclusivo, em segundos."},"includeExpired":{"type":"boolean","default":false},"includeRevoked":{"type":"boolean","default":false}},"additionalProperties":false},{"type":"object","properties":{"mode":{"type":"string","enum":["ALLOW_LIST","DENY_LIST","CONTACTS","CLOSE_FRIENDS","CUSTOM_LIST"]},"userJids":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"maxItems":1024},"shareToFB":{"type":"boolean"},"shareToIG":{"type":"boolean"}},"additionalProperties":false,"required":["mode"]},{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."},"url":{"type":"string","format":"uri","maxLength":8192,"example":"https://example.com/status.jpg","description":"HTTPS público; redes privadas, credenciais, caminhos locais e redirecionamentos privados são bloqueados."},"base64":{"type":"string","minLength":4,"maxLength":44739248,"description":"Conteúdo da mídia em base64 puro, limitado a 32 MiB."},"mimetype":{"type":"string","maxLength":128},"accessibilityLabel":{"type":"string","maxLength":65536},"caption":{"type":"string","maxLength":65536},"width":{"type":"integer","minimum":0,"maximum":4294967295},"height":{"type":"integer","minimum":0,"maximum":4294967295},"jpegThumbnailBase64":{"type":"string","maxLength":1398104,"description":"Thumbnail JPEG em base64, até 1 MiB."}},"additionalProperties":false,"required":["recipients"],"oneOf":[{"required":["url"],"not":{"required":["base64"]}},{"required":["base64"],"not":{"required":["url"]}}]},{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Até 65.536 bytes UTF-8; limites da conta são confirmados pelo WhatsApp."},"style":{"type":"object","properties":{"font":{"oneOf":[{"type":"integer","enum":[0,1,2,6,7,8,9,10]},{"type":"string","enum":["SYSTEM","SYSTEM_TEXT","FB_SCRIPT","SYSTEM_BOLD","MORNINGBREEZE_REGULAR","CALISTOGA_REGULAR","EXO2_EXTRABOLD","COURIERPRIME_BOLD"]}]},"backgroundColor":{"oneOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}(?:[0-9A-Fa-f]{2})?$"},{"type":"integer","minimum":0,"maximum":4294967295}],"description":"#RRGGBB, #AARRGGBB ou uint32 ARGB.","example":"#0099FF"},"textColor":{"oneOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}(?:[0-9A-Fa-f]{2})?$"},{"type":"integer","minimum":0,"maximum":4294967295}],"description":"#RRGGBB, #AARRGGBB ou uint32 ARGB.","example":"#FFFFFF"}},"additionalProperties":false}},"additionalProperties":false,"required":["recipients","text"]},{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."},"url":{"type":"string","format":"uri","maxLength":8192,"example":"https://example.com/status.jpg","description":"HTTPS público; redes privadas, credenciais, caminhos locais e redirecionamentos privados são bloqueados."},"base64":{"type":"string","minLength":4,"maxLength":44739248,"description":"Conteúdo da mídia em base64 puro, limitado a 32 MiB."},"mimetype":{"type":"string","maxLength":128},"accessibilityLabel":{"type":"string","maxLength":65536},"caption":{"type":"string","maxLength":65536},"seconds":{"type":"integer","minimum":0,"maximum":4294967295},"gifPlayback":{"type":"boolean","default":false},"width":{"type":"integer","minimum":0,"maximum":4294967295},"height":{"type":"integer","minimum":0,"maximum":4294967295},"jpegThumbnailBase64":{"type":"string","maxLength":1398104,"description":"Thumbnail JPEG em base64, até 1 MiB."}},"additionalProperties":false,"required":["recipients"],"oneOf":[{"required":["url"],"not":{"required":["base64"]}},{"required":["base64"],"not":{"required":["url"]}}]},{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."},"url":{"type":"string","format":"uri","maxLength":8192,"example":"https://example.com/status.jpg","description":"HTTPS público; redes privadas, credenciais, caminhos locais e redirecionamentos privados são bloqueados."},"base64":{"type":"string","minLength":4,"maxLength":44739248,"description":"Conteúdo da mídia em base64 puro, limitado a 32 MiB."},"mimetype":{"type":"string","maxLength":128},"accessibilityLabel":{"type":"string","maxLength":65536},"seconds":{"type":"integer","minimum":0,"maximum":4294967295},"waveformBase64":{"type":"string","maxLength":1398104,"description":"Waveform em base64, até 1 MiB."},"normalizeVoice":{"type":"boolean","default":true},"backgroundColor":{"oneOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}(?:[0-9A-Fa-f]{2})?$"},{"type":"integer","minimum":0,"maximum":4294967295}],"description":"#RRGGBB, #AARRGGBB ou uint32 ARGB."}},"additionalProperties":false,"required":["recipients"],"oneOf":[{"required":["url"],"not":{"required":["base64"]}},{"required":["base64"],"not":{"required":["url"]}}]},{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"emoji":{"type":"string","maxLength":32,"description":"Emoji Unicode; string vazia remove a reação."},"_params":{"type":"object","required":["message_id"],"properties":{"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["author","emoji","_params"]},{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"_params":{"type":"object","required":["message_id"],"properties":{"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["author","_params"]},{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"limit":{"type":"integer","minimum":1,"maximum":500,"default":100},"before":{"type":"integer","minimum":0,"description":"Timestamp Unix exclusivo, em segundos."},"includeExpired":{"type":"boolean","default":false},"includeRevoked":{"type":"boolean","default":false}},"additionalProperties":false},{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"text":{"type":"string","minLength":1,"maxLength":65536},"_params":{"type":"object","required":["message_id"],"properties":{"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["author","text","_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["author"],"properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["message_id"],"properties":{"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"audioBase64":{"type":"string","format":"byte","minLength":1,"description":"Arquivo de áudio inteiro em base64, decodificado pelo FFmpeg."},"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["audioBase64","_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"reason":{"type":"string","enum":["user_ended","declined","timeout","busy","cancelled","failed","do_not_disturb","unknown"],"default":"user_ended","description":"Motivo opcional."},"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"callId":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false,"required":["callId"]},{"type":"object","properties":{"pcmBase64":{"type":"string","format":"byte","minLength":1,"maxLength":42668,"description":"Amostras PCM float32 little-endian, mono, 16000 Hz; base64."},"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["pcmBase64","_params"]},{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"callId":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."},"data":{"type":"string","format":"byte","minLength":1,"maxLength":2796204,"description":"Frame H.264 Annex-B em base64. Deve iniciar com start code."},"timestamp":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0,"description":"Timestamp em microssegundos, convertido para clock RTP de 90 kHz."}},"additionalProperties":false,"required":["callId","data"]},{"type":"object","properties":{"muted":{"type":"boolean","default":false},"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"reason":{"type":"string","enum":["declined"],"default":"declined","description":"Motivo opcional."},"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"numero":{"type":"string","pattern":"^\\+?[1-9][0-9]{7,14}$","description":"Número com DDI e DDD."},"number":{"type":"string","description":"Alias de numero."},"isVideo":{"type":"boolean","default":false},"mediaType":{"type":"string","enum":["audio","video"],"description":"Alias do tipo de mídia."}},"additionalProperties":false,"anyOf":[{"required":["numero"]},{"required":["number"]}]},{"type":"object","properties":{"webhooks":{"type":"array","minItems":1,"maxItems":16,"items":{"type":"object","properties":{"url":{"type":"string","format":"uri","pattern":"^https://","description":"URL HTTPS pública."},"enabled":{"type":"boolean","default":false}},"additionalProperties":false,"required":["url"]}}},"additionalProperties":false,"required":["webhooks"]},{"type":"object","properties":{"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[a-f0-9]{32}$","description":"ID retornado ao cadastrar o webhook.","example":"00000000000000000000000000000001"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},{"type":"object","properties":{"url":{"type":"string","format":"uri","pattern":"^https://","description":"URL HTTPS pública."},"enabled":{"type":"boolean","default":false},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[a-f0-9]{32}$","description":"ID retornado ao cadastrar o webhook.","example":"00000000000000000000000000000001"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]}]},"examples":{"message.text":{"summary":"message.text","value":{"messageData":{"numero":"5511999999999","text":"Olá! Esta mensagem foi enviada pela API MVO."}}},"bot.response":{"summary":"bot.response","value":{"_params":{"message_id":"3EB01234567890ABCDEF"}}},"bot.send":{"summary":"bot.send","value":{"prompt":"Como organizar o atendimento da minha empresa?"}},"business.broadcast-list-delete":{"summary":"business.broadcast-list-delete","value":{"_params":{"id":"RESOURCE_ID"}}},"business.broadcast-list-save":{"summary":"business.broadcast-list-save","value":{"id":"mvo-clientes","listName":"Clientes MVO","participants":["5511999999999@s.whatsapp.net"],"labelIds":[]}},"business.cart-refresh":{"summary":"business.cart-refresh","value":{"request":{"cart":{"products":[{"id":"987","quantity":1}]}}}},"business.cover-delete":{"summary":"business.cover-delete","value":{"_params":{"id":"RESOURCE_ID"}}},"business.cover-set":{"summary":"business.cover-set","value":{"image":{"base64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII="}}},"business.labels-chat":{"summary":"business.labels-chat","value":{"jid":"5511999999999@s.whatsapp.net","added":true,"_params":{"id":"1"}}},"business.labels-create":{"summary":"business.labels-create","value":{"name":"Clientes MVO","color":3}},"business.labels-delete":{"summary":"business.labels-delete","value":{"_params":{"id":"1"}}},"business.labels-get":{"summary":"business.labels-get","value":{"_params":{"id":"1"}}},"business.labels-message":{"summary":"business.labels-message","value":{"jid":"5511999999999@s.whatsapp.net","added":true,"messageId":"3EB0123456789ABCDEF012","_params":{"id":"1"}}},"business.labels-update":{"summary":"business.labels-update","value":{"name":"Cliente ativo","color":4,"_params":{"id":"1"}}},"business.order-create":{"summary":"business.order-create","value":{"jid":"5511999999999@s.whatsapp.net","products":[{"id":"987","quantity":1}]}},"business.order-get":{"summary":"business.order-get","value":{"token":"ORDER_TOKEN","_params":{"id":"987"}}},"business.profile-set":{"summary":"business.profile-set","value":{"description":"Atendimento MVO","email":"contato@mvo.host","websites":["https://www.mvo.host"],"hours":{"timezone":"America/Sao_Paulo","days":[{"day":"mon","mode":"specific_hours","open":"08:00","close":"12:00"},{"day":"mon","mode":"specific_hours","open":"14:00","close":"18:00"}]}}},"business.quick-replies-delete":{"summary":"business.quick-replies-delete","value":{"_params":{"id":"1700000000000001"}}},"business.quick-replies-get":{"summary":"business.quick-replies-get","value":{"_params":{"id":"1700000000000001"}}},"business.quick-replies-save":{"summary":"business.quick-replies-save","value":{"id":"1700000000000001","shortcut":"planos","message":"Conheça os planos em https://www.mvo.host","keywords":["hospedagem"]}},"business.verified-names":{"summary":"business.verified-names","value":{"jids":["5511999999999@s.whatsapp.net"]}},"channel.admin-demote":{"summary":"channel.admin-demote","value":{"user":"5511999999999@s.whatsapp.net","_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.admin-invite-accept":{"summary":"channel.admin-invite-accept","value":{"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.admin-invite-create":{"summary":"channel.admin-invite-create","value":{"user":"5511999999999@s.whatsapp.net","_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.admin-invite-revoke":{"summary":"channel.admin-invite-revoke","value":{"user":"5511999999999@s.whatsapp.net","_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.admins":{"summary":"channel.admins","value":{"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.ai-content":{"summary":"channel.ai-content","value":{"messageType":"MESSAGE","_params":{"channel_id":"120363000000000000@newsletter","serverId":1}}},"channel.by-invite":{"summary":"channel.by-invite","value":{"invite":"MVO_CONVITE"}},"channel.capabilities":{"summary":"channel.capabilities","value":{"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.categories":{"summary":"channel.categories","value":{"categories":["NEWS"],"country":"BR","limit":10}},"channel.create":{"summary":"channel.create","value":{"name":"Novidades MVO","description":"Avisos e novidades"}},"channel.dehydrated":{"summary":"channel.dehydrated","value":{"key":"120363000000000000@newsletter"}},"channel.delete":{"summary":"channel.delete","value":{"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.description":{"summary":"channel.description","value":{"description":"Avisos MVO","_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.directory":{"summary":"channel.directory","value":{"view":"POPULAR","limit":25,"countryCodes":["BR"]}},"channel.domains":{"summary":"channel.domains","value":{"domains":["mvo.host"]}},"channel.edit":{"summary":"channel.edit","value":{"text":"Texto atualizado","_params":{"channel_id":"120363000000000000@newsletter","message_id":"MVO_CHANNEL_EXAMPLE"}}},"channel.enforcements":{"summary":"channel.enforcements","value":{"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.follow":{"summary":"channel.follow","value":{"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.followers":{"summary":"channel.followers","value":{"count":50,"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.get":{"summary":"channel.get","value":{"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.list":{"summary":"channel.list","value":{"fetchWamoSub":false}},"channel.live":{"summary":"channel.live","value":{"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.media-download":{"summary":"channel.media-download","value":{"_params":{"channel_id":"120363000000000000@newsletter","message_id":"MVO_CHANNEL_EXAMPLE"}}},"channel.message-get":{"summary":"channel.message-get","value":{"_params":{"channel_id":"120363000000000000@newsletter","message_id":"MVO_CHANNEL_EXAMPLE"}}},"channel.messages":{"summary":"channel.messages","value":{"count":50,"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.messages-local":{"summary":"channel.messages-local","value":{"limit":50,"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.mute":{"summary":"channel.mute","value":{"muted":true,"adminActivity":false,"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.name":{"summary":"channel.name","value":{"name":"Novidades MVO","_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.owner-transfer":{"summary":"channel.owner-transfer","value":{"user":"5511999999999@s.whatsapp.net","_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.paid-partnership":{"summary":"channel.paid-partnership","value":{"messageType":"MESSAGE","_params":{"channel_id":"120363000000000000@newsletter","serverId":1}}},"channel.pending-invites":{"summary":"channel.pending-invites","value":{"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.photo-delete":{"summary":"channel.photo-delete","value":{"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.photo-get":{"summary":"channel.photo-get","value":{"type":"image","_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.photo-set":{"summary":"channel.photo-set","value":{"url":"https://example.com/canal.jpg","_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.pin":{"summary":"channel.pin","value":{"serverIds":[1,2],"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.poll-voters":{"summary":"channel.poll-voters","value":{"voteHash":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=","limit":50,"_params":{"channel_id":"120363000000000000@newsletter","serverId":1}}},"channel.react":{"summary":"channel.react","value":{"emoji":"👍","_params":{"channel_id":"120363000000000000@newsletter","serverId":1}}},"channel.reaction-senders":{"summary":"channel.reaction-senders","value":{"_params":{"channel_id":"120363000000000000@newsletter","serverId":1}}},"channel.reactions-setting":{"summary":"channel.reactions-setting","value":{"reactionCodesSetting":"ALL","_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.recommended":{"summary":"channel.recommended","value":{"limit":25,"countryCodes":["BR"]}},"channel.reshare-question":{"summary":"channel.reshare-question","value":{"question_message_id":"server:1","response_message_id":"MVO_RESPONSE_CLIENT_ID","text":"Resposta da comunidade","_params":{"channel_id":"120363000000000000@newsletter","serverId":1,"responseServerId":"MVO_RESPONSE_EXAMPLE"}}},"channel.respond-question":{"summary":"channel.respond-question","value":{"text":"Sugiro dicas de tecnologia","_params":{"channel_id":"120363000000000000@newsletter","serverId":1}}},"channel.revoke":{"summary":"channel.revoke","value":{"_params":{"channel_id":"120363000000000000@newsletter","message_id":"MVO_CHANNEL_EXAMPLE"}}},"channel.search":{"summary":"channel.search","value":{"searchText":"tecnologia","limit":25}},"channel.send-contact":{"summary":"channel.send-contact","value":{"displayName":"Atendimento MVO","vcard":"BEGIN:VCARD\nVERSION:3.0\nFN:Atendimento MVO\nTEL;TYPE=CELL:+5511999999999\nEND:VCARD","_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.send-media":{"summary":"channel.send-media","value":{"type":"image","url":"https://example.com/novidades.jpg","caption":"Novidades da MVO","_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.send-poll":{"summary":"channel.send-poll","value":{"name":"Qual conteúdo você prefere?","options":["Dicas","Novidades"],"selectableCount":1,"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.send-poll-snapshot":{"summary":"channel.send-poll-snapshot","value":{"name":"Resultado","pollVotes":[{"optionName":"Novidades","optionVoteCount":10}],"version3":false,"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.send-question":{"summary":"channel.send-question","value":{"text":"Qual assunto você quer ver aqui?","_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.send-text":{"summary":"channel.send-text","value":{"text":"Novidades da MVO!","_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.similar":{"summary":"channel.similar","value":{"limit":10,"countryCodes":["BR"],"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.statuses":{"summary":"channel.statuses","value":{"count":50,"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.tos-accept":{"summary":"channel.tos-accept","value":{"notices":["2060127000651691"]}},"channel.tos-get":{"summary":"channel.tos-get","value":{"notices":["2060127000651691"]}},"channel.unfollow":{"summary":"channel.unfollow","value":{"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.unpin":{"summary":"channel.unpin","value":{"serverIds":[1,2],"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.update":{"summary":"channel.update","value":{"name":"Novidades MVO atualizadas","_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.updates":{"summary":"channel.updates","value":{"count":50,"after":1,"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.views":{"summary":"channel.views","value":{"serverIds":[1,2],"_params":{"channel_id":"120363000000000000@newsletter"}}},"channel.vote":{"summary":"channel.vote","value":{"votes":["AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="],"_params":{"channel_id":"120363000000000000@newsletter","serverId":1}}},"chat.archive":{"summary":"chat.archive","value":{"messageData":{"numero":"5511999999999","arquivar":true}}},"chat.read":{"summary":"chat.read","value":{"messageData":{"numero":"5511999999999","idMsg":"3EB01234567890ABCDEF"}}},"community.admins-demote":{"summary":"community.admins-demote","value":{"participants":["123456789@lid"],"_params":{"community_id":"120363000000000000@g.us"}}},"community.admins-list":{"summary":"community.admins-list","value":{"_params":{"community_id":"120363000000000000@g.us"}}},"community.admins-promote":{"summary":"community.admins-promote","value":{"participants":["123456789@lid"],"_params":{"community_id":"120363000000000000@g.us"}}},"community.appeal":{"summary":"community.appeal","value":{"reason":"Solicito a revisão da suspensão.","_params":{"community_id":"120363000000000000@g.us"}}},"community.create":{"summary":"community.create","value":{"subject":"Clientes MVO","options":{"description":"Avisos e atendimento","membershipApprovalMode":"request_required","createGeneralChat":true}}},"community.deactivate":{"summary":"community.deactivate","value":{"_params":{"community_id":"120363000000000000@g.us"}}},"community.description":{"summary":"community.description","value":{"description":"Canal de avisos e grupos de atendimento.","_params":{"community_id":"120363000000000000@g.us"}}},"community.ephemeral":{"summary":"community.ephemeral","value":{"seconds":86400,"_params":{"community_id":"120363000000000000@g.us"}}},"community.get":{"summary":"community.get","value":{"_params":{"community_id":"120363000000000000@g.us"}}},"community.history-share-mode":{"summary":"community.history-share-mode","value":{"mode":"admin_share","_params":{"community_id":"120363000000000000@g.us"}}},"community.internal":{"summary":"community.internal","value":{"_params":{"community_id":"120363000000000000@g.us"}}},"community.invite-get":{"summary":"community.invite-get","value":{"_params":{"community_id":"120363000000000000@g.us"}}},"community.invite-info":{"summary":"community.invite-info","value":{"code":"CODIGO_DO_CONVITE"}},"community.invite-revoke":{"summary":"community.invite-revoke","value":{"_params":{"community_id":"120363000000000000@g.us"}}},"community.join":{"summary":"community.join","value":{"code":"CODIGO_DO_CONVITE"}},"community.leave":{"summary":"community.leave","value":{"_params":{"community_id":"120363000000000000@g.us"}}},"community.member-add-mode":{"summary":"community.member-add-mode","value":{"mode":"admin_add","_params":{"community_id":"120363000000000000@g.us"}}},"community.member-link-mode":{"summary":"community.member-link-mode","value":{"mode":"admin_link","_params":{"community_id":"120363000000000000@g.us"}}},"community.members-add":{"summary":"community.members-add","value":{"participants":["123456789@lid"],"_params":{"community_id":"120363000000000000@g.us"}}},"community.members-list":{"summary":"community.members-list","value":{"_params":{"community_id":"120363000000000000@g.us"}}},"community.members-remove":{"summary":"community.members-remove","value":{"participants":["123456789@lid"],"_params":{"community_id":"120363000000000000@g.us"}}},"community.owner-transfer":{"summary":"community.owner-transfer","value":{"newOwner":"123456789@lid","_params":{"community_id":"120363000000000000@g.us"}}},"community.photo-delete":{"summary":"community.photo-delete","value":{"_params":{"community_id":"120363000000000000@g.us"}}},"community.photo-get":{"summary":"community.photo-get","value":{"type":"image","_params":{"community_id":"120363000000000000@g.us"}}},"community.photo-set":{"summary":"community.photo-set","value":{"url":"https://cdn.sua-empresa.example/comunidade.jpg","_params":{"community_id":"120363000000000000@g.us"}}},"community.requests-approve":{"summary":"community.requests-approve","value":{"participants":["123456789@lid"],"_params":{"community_id":"120363000000000000@g.us"}}},"community.requests-cancel":{"summary":"community.requests-cancel","value":{"participants":["123456789@lid"],"_params":{"community_id":"120363000000000000@g.us"}}},"community.requests-list":{"summary":"community.requests-list","value":{"_params":{"community_id":"120363000000000000@g.us"}}},"community.requests-reject":{"summary":"community.requests-reject","value":{"participants":["123456789@lid"],"_params":{"community_id":"120363000000000000@g.us"}}},"community.setting":{"summary":"community.setting","value":{"setting":"allow_non_admin_sub_group_creation","enabled":false,"_params":{"community_id":"120363000000000000@g.us"}}},"community.subgroups-create":{"summary":"community.subgroups-create","value":{"subject":"Atendimento MVO","participants":["123456789@lid"],"options":{"description":"Suporte aos clientes"},"_params":{"community_id":"120363000000000000@g.us"}}},"community.subgroups-join":{"summary":"community.subgroups-join","value":{"subgroup_id":"120363000000000001@g.us","_params":{"community_id":"120363000000000000@g.us"}}},"community.subgroups-link":{"summary":"community.subgroups-link","value":{"subgroup_ids":["120363000000000001@g.us"],"_params":{"community_id":"120363000000000000@g.us"}}},"community.subgroups-list":{"summary":"community.subgroups-list","value":{"source":"iq","_params":{"community_id":"120363000000000000@g.us"}}},"community.subgroups-participants":{"summary":"community.subgroups-participants","value":{"_params":{"community_id":"120363000000000000@g.us"}}},"community.subgroups-suggestions":{"summary":"community.subgroups-suggestions","value":{"_params":{"community_id":"120363000000000000@g.us"}}},"community.subgroups-unlink":{"summary":"community.subgroups-unlink","value":{"subgroup_ids":["120363000000000001@g.us"],"removeOrphanedMembers":false,"_params":{"community_id":"120363000000000000@g.us"}}},"community.subject":{"summary":"community.subject","value":{"subject":"Comunidade MVO","_params":{"community_id":"120363000000000000@g.us"}}},"contact.block":{"summary":"contact.block","value":{"numero":"5511999999999","acao":"block"}},"contact.photo":{"summary":"contact.photo","value":{"_params":{"numero":"5511999999999"}}},"contact.presence":{"summary":"contact.presence","value":{"numero":"5511999999999","presenca":"composing"}},"contact.status":{"summary":"contact.status","value":{"_params":{"numero":"5511999999999"}}},"contact.unblock":{"summary":"contact.unblock","value":{"numero":"5511999999999","acao":"unblock"}},"event.by-number":{"summary":"event.by-number","value":{"_params":{"numero":"5511999999999"}}},"group.add":{"summary":"group.add","value":{"group_data":{"group_id":"120363000000000000@g.us","participants":["5511999999999"]}}},"group.create":{"summary":"group.create","value":{"group_data":{"group_name":"Equipe de atendimento","participants":["5511999999999","5511988888888"]}}},"group.demote":{"summary":"group.demote","value":{"group_data":{"group_id":"120363000000000000@g.us","participants":["5511999999999"],"acao":"demote"}}},"group.ephemeral":{"summary":"group.ephemeral","value":{"id_grupo":"120363000000000000@g.us","time":7}},"group.get":{"summary":"group.get","value":{"_params":{"group_id":"120363000000000000@g.us"}}},"group.invite":{"summary":"group.invite","value":{"group_id":"120363000000000000@g.us"}},"group.join-list":{"summary":"group.join-list","value":{"group_id":"120363000000000000@g.us"}},"group.join-review":{"summary":"group.join-review","value":{"acao":"approve","numero":["5511999999999"]}},"group.leave":{"summary":"group.leave","value":{"group_id":"120363000000000000@g.us"}},"group.photo":{"summary":"group.photo","value":{"id_grupo":"120363000000000000@g.us","url":"https://example.com/grupo.jpg"}},"group.promote":{"summary":"group.promote","value":{"group_data":{"group_id":"120363000000000000@g.us","participants":["5511999999999"]}}},"group.remove":{"summary":"group.remove","value":{"group_data":{"group_id":"120363000000000000@g.us","participants":["5511999999999"]}}},"group.send-policy":{"summary":"group.send-policy","value":{"group_id":"120363000000000000@g.us","allowOnlyAdmins":true}},"group.settings-policy":{"summary":"group.settings-policy","value":{"group_id":"120363000000000000@g.us","allowOnlyAdmins":true}},"message.buttons":{"summary":"message.buttons","value":{"messageData":{"numero":"5511999999999","texto":"Como podemos ajudar?","botoes":[{"type":"quick_reply","id":"suporte","texto":"Suporte"},{"type":"quick_reply","id":"vendas","texto":"Vendas"}]}}},"message.charge":{"summary":"message.charge","value":{"numero":"5511999999999","body":{"texto":"Cobrança do plano MVO","header":{"title":"Pedido MVO-001"},"footer":"MVO","items":[{"retailer_id":"plano-01","name":"Hospedagem","amount":{"value":2990,"offset":100},"quantity":1}],"UrlEnabled":true,"urlData":{"uri":"https://www.mvo.host/"}}}},"message.contact":{"summary":"message.contact","value":{"messageData":{"numero":"5511999999999","vcard":{"fullName":"Equipe MVO","phoneNumber":"5511999999999","organization":"MVO Host"}}}},"message.delete":{"summary":"message.delete","value":{"messageData":{"numero":"5511999999999","key":{"id":"3EB0MVOEXEMPLO001","remoteJid":"5511999999999@s.whatsapp.net","fromMe":true}}}},"message.download":{"summary":"message.download","value":{"messageKeys":{"messageType":"image","mediaKey":"AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM=","fileSha256":"BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ=","fileEncSha256":"BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU=","directPath":"/v/t62.7118-24/SUBSTITUA_PELO_CAMINHO_REAL.enc","mimetype":"image/png","fileLength":1024}}},"message.edit":{"summary":"message.edit","value":{"messageData":{"numero":"5511999999999","text":"Texto corrigido pela API MVO","keyMsg":{"id":"3EB0MVOEXEMPLO001","remoteJid":"5511999999999@s.whatsapp.net","fromMe":true}}}},"message.event":{"summary":"message.event","value":{"messageData":{"numero":"5511999999999","evento":{"name":"Demonstração MVO","startDate":1800000000,"endDate":1800003600,"description":"Apresentação do serviço","location":{"latitude":-23.5505,"longitude":-46.6333,"name":"São Paulo"}}}}},"message.flow":{"summary":"message.flow","value":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_json":{"version":"7.3","screens":[{"id":"INICIO","title":"Cadastro MVO","terminal":true,"success":true,"data":{},"layout":{"type":"SingleColumnLayout","children":[{"type":"Form","name":"form","children":[{"type":"TextInput","name":"name","label":"Nome","required":true},{"type":"Footer","label":"Enviar","on-click-action":{"name":"complete","payload":{"name":"${form.name}"}}}]}]}}]}}}},"message.flow.exchange":{"summary":"message.flow.exchange","value":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_id":"123456789012345","data_api_version":"3.0"}}},"message.flow.navigate":{"summary":"message.flow.navigate","value":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_json":{"version":"7.3","screens":[{"id":"INICIO","title":"Cadastro MVO","terminal":true,"success":true,"data":{},"layout":{"type":"SingleColumnLayout","children":[{"type":"Form","name":"form","children":[{"type":"TextInput","name":"name","label":"Nome","required":true},{"type":"Footer","label":"Enviar","on-click-action":{"name":"complete","payload":{"name":"${form.name}"}}}]}]}}]}}}},"message.form":{"summary":"message.form","value":{"messageData":{"numero":"5511999999999","texto":"Como você prefere ser atendido?","titulo":"Atendimento MVO","cta":"Responder","steps":[{"id":"preferencia","label":"Escolha o atendimento","selection":"single","options":[{"id":"suporte","title":"Suporte técnico"},{"id":"comercial","title":"Comercial"}],"allow_custom_answer":true}]}}},"message.forward":{"summary":"message.forward","value":{"numero":"5511999999999","mensagem":{"key":{"id":"3EB0MVOEXEMPLO001","remoteJid":"5511999999999@s.whatsapp.net","fromMe":false},"message":{"conversation":"Olá! Preciso de ajuda."}}}},"message.link":{"summary":"message.link","value":{"messageData":{"numero":"5511999999999","text":"Conheça a MVO: https://www.mvo.host/","sourceUrl":"https://www.mvo.host/","title":"MVO","body":"Hospedagem e tecnologia"}}},"message.list":{"summary":"message.list","value":{"messageData":{"numero":"5511999999999","titulo":"Atendimento MVO","texto":"Selecione o serviço desejado","textoBotao":"Ver serviços","footer":"MVO","secoes":[{"titulo":"Serviços","opcoes":[{"id":"hospedagem","titulo":"Hospedagem","texto":"Conhecer nossos planos"},{"id":"suporte","titulo":"Suporte","texto":"Falar com a equipe"}]}]}}},"message.location":{"summary":"message.location","value":{"messageData":{"numero":"5511999999999","coordenadas":{"latitude":-23.5505,"longitude":-46.6333},"name":"São Paulo","address":"São Paulo, SP"}}},"message.media":{"summary":"message.media","value":{"messageData":{"numero":"5511999999999","type":"image","base64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+jVZkAAAAASUVORK5CYII=","caption":"Imagem MVO","mimeType":"image/png"}}},"message.payment":{"summary":"message.payment","value":{"messageData":{"numero":"5511999999999","text":"Pedido MVO-001","valor":29.9}}},"message.poll":{"summary":"message.poll","value":{"messageData":{"numero":"5511999999999","pergunta":"Como prefere ser atendido?","opcoes":["WhatsApp","Telefone","E-mail"],"selectableCount":1}}},"message.reaction":{"summary":"message.reaction","value":{"messageData":{"numero":"5511999999999","key":{"id":"3EB0MVOEXEMPLO001","fromMe":false},"reacao":"👍"}}},"message.reply":{"summary":"message.reply","value":{"messageData":{"numero":"5511999999999","text":"Olá! Vou ajudar você."},"mensagem":{"key":{"id":"3EB0MVOEXEMPLO001","remoteJid":"5511999999999@s.whatsapp.net","fromMe":false},"message":{"conversation":"Olá! Preciso de ajuda."}}}},"message.voice":{"summary":"message.voice","value":{"messageData":{"numero":"5511999999999","url":"https://seu-cdn.example/audio.ogg","mimeType":"audio/ogg; codecs=opus","seconds":5}}},"mobile.link":{"summary":"mobile.link","value":{"metodo":"codigo","codigo":"ABCD1234"}},"mobile.unlink":{"summary":"mobile.unlink","value":{"_params":{"device_jid":"5511999999999:2@s.whatsapp.net"}}},"passkey.sign":{"summary":"passkey.sign","value":{"credentialId":"Y3JlZGVuY2lhbC1leGVtcGxv","webauthnAssertion":"YXNzZXJ0aW9uLWV4ZW1wbG8="}},"product.cart-set":{"summary":"product.cart-set","value":{"enabled":true}},"product.collection-appeal":{"summary":"product.collection-appeal","value":{"reason":"Produtos de hospedagem de sites","_params":{"id":"987"}}},"product.collection-create":{"summary":"product.collection-create","value":{"name":"Planos MVO","products":["987"]}},"product.collection-delete":{"summary":"product.collection-delete","value":{"ids":["COLL1"],"_params":{"id":"987"}}},"product.collection-get":{"summary":"product.collection-get","value":{"_params":{"id":"RESOURCE_ID"}}},"product.collection-reorder":{"summary":"product.collection-reorder","value":{"moves":[{"id":"COLL1","fromIndex":1,"toIndex":0}]}},"product.collection-update":{"summary":"product.collection-update","value":{"name":"Planos MVO","productsToAdd":["987"],"productsToRemove":[],"_params":{"id":"987"}}},"product.create":{"summary":"product.create","value":{"name":"Plano MVO","description":"Hospedagem de sites","price":19.99,"currency":"BRL","images":[{"base64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII="}],"isHidden":false,"originCountryCode":"BR","retailerId":"MVO-PLANO-01","url":"https://www.mvo.host"}},"product.delete":{"summary":"product.delete","value":{"ids":["987"],"_params":{"id":"987"}}},"product.edit":{"summary":"product.edit","value":{"name":"Plano MVO atualizado","price":24.99,"_params":{"id":"987"}}},"product.get":{"summary":"product.get","value":{"_params":{"id":"RESOURCE_ID"}}},"product.send":{"summary":"product.send","value":{"produtos":{"numero":"5511999999999","produtoId":"1234567890123456","title":"Plano MVO","description":"Hospedagem de sites","currencyCode":"BRL","price":"19990","image":{"url":"https://example.com/produto.jpg"}}}},"product.visibility":{"summary":"product.visibility","value":{"isHidden":true,"_params":{"id":"987"}}},"profile.business":{"summary":"profile.business","value":{"description":"Atendimento da minha empresa","email":"contato@minhaempresa.com.br","websites":["https://www.mvo.host"],"hours":{"timezone":"America/Sao_Paulo","days":[{"day":"monday","mode":"specific_hours","open":"08:00","close":"12:00"},{"day":"monday","mode":"specific_hours","open":"14:00","close":"18:00"},{"day":"sunday","mode":"closed"}]}}},"profile.name":{"summary":"profile.name","value":{"nome":"Minha empresa"}},"profile.photo":{"summary":"profile.photo","value":{"url":"https://example.com/perfil.jpg"}},"profile.status":{"summary":"profile.status","value":{"text":"Atendimento de segunda a sexta, das 8h às 18h."}},"service.number":{"summary":"service.number","value":{"numero":"5511999999999"}},"session.connect":{"summary":"session.connect","value":{"tipo":"qrcode"}},"settings.calls.set":{"summary":"settings.calls.set","value":{"reject":true,"message":"Atendemos por mensagem."}},"settings.messages.set":{"summary":"settings.messages.set","value":{"readMsgAuto":false,"archivedMsgAuto":false}},"status.delete":{"summary":"status.delete","value":{"_params":{"message_id":"MVO_STATUS_EXAMPLE"}}},"status.download":{"summary":"status.download","value":{"_params":{"message_id":"MVO_STATUS_EXAMPLE"}}},"status.get":{"summary":"status.get","value":{"_params":{"message_id":"MVO_STATUS_EXAMPLE"}}},"status.list":{"summary":"status.list","value":{"limit":100,"includeExpired":false,"includeRevoked":false}},"status.mute":{"summary":"status.mute","value":{"_params":{"author":"5511999999999@s.whatsapp.net"}}},"status.muted-list":{"summary":"status.muted-list","value":{"limit":100}},"status.own":{"summary":"status.own","value":{"limit":100,"includeExpired":false,"includeRevoked":false}},"status.privacy-set":{"summary":"status.privacy-set","value":{"mode":"ALLOW_LIST","userJids":["5511999999999@s.whatsapp.net"],"shareToFB":false,"shareToIG":false}},"status.publish-image":{"summary":"status.publish-image","value":{"recipients":["5511999999999@s.whatsapp.net"],"url":"https://example.com/status.jpg","mimetype":"image/jpeg"}},"status.publish-text":{"summary":"status.publish-text","value":{"recipients":["5511999999999@s.whatsapp.net"],"text":"Novidades da MVO!","style":{"font":0,"backgroundColor":"#0099FF","textColor":"#FFFFFF"}}},"status.publish-video":{"summary":"status.publish-video","value":{"recipients":["5511999999999@s.whatsapp.net"],"url":"https://example.com/status.mp4","mimetype":"video/mp4"}},"status.publish-voice":{"summary":"status.publish-voice","value":{"recipients":["5511999999999@s.whatsapp.net"],"url":"https://example.com/status.ogg","mimetype":"audio/ogg; codecs=opus"}},"status.react":{"summary":"status.react","value":{"author":"5511999999999@s.whatsapp.net","emoji":"❤️","_params":{"message_id":"MVO_STATUS_EXAMPLE"}}},"status.read":{"summary":"status.read","value":{"author":"5511999999999@s.whatsapp.net","_params":{"message_id":"MVO_STATUS_EXAMPLE"}}},"status.received":{"summary":"status.received","value":{"limit":100,"includeExpired":false,"includeRevoked":false}},"status.reply":{"summary":"status.reply","value":{"author":"5511999999999@s.whatsapp.net","text":"Gostei do seu status!","_params":{"message_id":"MVO_STATUS_EXAMPLE"}}},"status.unmute":{"summary":"status.unmute","value":{"_params":{"author":"5511999999999@s.whatsapp.net"}}},"status.viewers":{"summary":"status.viewers","value":{"_params":{"message_id":"MVO_STATUS_EXAMPLE"}}},"voip.accept":{"summary":"voip.accept","value":{"_params":{"call_id":"CALL_ID"}}},"voip.audio":{"summary":"voip.audio","value":{"audioBase64":"UklGRiYAAABXQVZFZm10IBAAAAABAAEAgD4AAAB9AAACABAAZGF0YQIAAAAAAA==","_params":{"call_id":"CALL_ID"}}},"voip.buffer":{"summary":"voip.buffer","value":{"_params":{"call_id":"CALL_ID"}}},"voip.end":{"summary":"voip.end","value":{"reason":"user_ended","_params":{"call_id":"CALL_ID"}}},"voip.get":{"summary":"voip.get","value":{"_params":{"call_id":"CALL_ID"}}},"voip.inbound-audio":{"summary":"voip.inbound-audio","value":{"_params":{"call_id":"CALL_ID"}}},"voip.inbound-video":{"summary":"voip.inbound-video","value":{"callId":"CALL_ID"}},"voip.live-audio":{"summary":"voip.live-audio","value":{"pcmBase64":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==","_params":{"call_id":"CALL_ID"}}},"voip.live-mode":{"summary":"voip.live-mode","value":{"enabled":true,"_params":{"call_id":"CALL_ID"}}},"voip.live-ticket":{"summary":"voip.live-ticket","value":{"_params":{"call_id":"CALL_ID"}}},"voip.live-video":{"summary":"voip.live-video","value":{"callId":"CALL_ID","data":"AAAAAWUIhA==","timestamp":0}},"voip.mute":{"summary":"voip.mute","value":{"muted":true,"_params":{"call_id":"CALL_ID"}}},"voip.reject":{"summary":"voip.reject","value":{"reason":"declined","_params":{"call_id":"CALL_ID"}}},"voip.start":{"summary":"voip.start","value":{"numero":"5511999999999","isVideo":false}},"webhooks.add":{"summary":"webhooks.add","value":{"webhooks":[{"url":"https://seu-sistema.example/whatsapp","enabled":true}]}},"webhooks.delete":{"summary":"webhooks.delete","value":{"_params":{"id":"00000000000000000000000000000001"}}},"webhooks.update":{"summary":"webhooks.update","value":{"url":"https://seu-sistema.example/whatsapp","enabled":true,"_params":{"id":"00000000000000000000000000000001"}}}}}}},"deprecated":true,"description":"Compatibilidade com integrações anteriores. Use as operações individuais deste Swagger com GET, POST, PUT, PATCH ou DELETE conforme documentado. Neste dispatcher POST, parâmetros de caminho, exceto tokens, vão em _params; filtros permanecem na query string."}},"/v1/instances/cliente-01/events":{"get":{"operationId":"instance_events","summary":"Receber eventos JSON ou SSE","tags":["Eventos e jobs"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Lote de eventos da instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventsResponse"},"example":{"error":false,"events":[{"id":1,"event":"message","data":{"id":"MESSAGE_ID","chat":"5511999999999@s.whatsapp.net","fromMe":false,"type":"text","text":"Olá, gostaria de atendimento.","timestamp":1770000000,"account_jid":"5511888888888@s.whatsapp.net"},"created_at":1770000000}],"next_cursor":1}},"text/event-stream":{"schema":{"type":"string"},"example":"id: 1\nevent: message\ndata: {\"id\":1,\"event\":\"message\",\"data\":{\"id\":\"MESSAGE_ID\",\"chat\":\"5511999999999@s.whatsapp.net\",\"fromMe\":false,\"type\":\"text\",\"text\":\"Olá, gostaria de atendimento.\",\"timestamp\":1770000000,\"account_jid\":\"5511888888888@s.whatsapp.net\"},\"created_at\":1770000000}\n\n"}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[{"name":"after","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"Last-Event-ID","in":"header","required":false,"schema":{"type":"integer","minimum":0},"description":"Cursor anterior para SSE."}],"description":"JSON por padrão. Para SSE envie Accept: text/event-stream. A resposta SSE é um lote finito; reconecte com Last-Event-ID ou after. Eventos incluem message, message_receipt, connection, auth_qr e auth_code. O id do evento é o cursor, não o id da mensagem."}},"/v1/instances/cliente-01/jobs/{job_id}":{"get":{"operationId":"instance_job","summary":"Consultar resultado de um comando","tags":["Eventos e jobs"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$","example":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}],"description":"Consulte job_id recebido no HTTP 202. status: pending, running, completed ou failed. Em failed, failure contém code, message e status. Não repita automaticamente comandos com resultado incerto."}},"/v1/instances/cliente-01/webhooks":{"get":{"operationId":"instance_webhooks_get","summary":"Consultar webhooks","tags":["Webhooks"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[]},"put":{"operationId":"instance_webhooks_put","summary":"Configurar webhooks HTTPS","tags":["Webhooks"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksRequest"},"examples":{"integracao":{"value":{"webhooks":[{"url":"https://seu-sistema.example/webhooks/whatsapp","enabled":true,"secret":"SUBSTITUA_POR_UM_SEGREDO_DO_WEBHOOK"}]}}}}}},"description":"Substitui a lista de até 16 destinos HTTPS. secret é o segredo HMAC e não aparece nas respostas. Os eventos são enviados pelo worker; esta resposta confirma a configuração, não a entrega."}},"/v1/instances/cliente-01/passkey":{"get":{"operationId":"instance_passkey","summary":"Consultar estado de WebAuthn","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"parameters":[]}},"/v1/instances/cliente-01/communities":{"get":{"operationId":"client_resource_community_list","summary":"Listar comunidades da conta","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Listar comunidades da conta. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-community-operation":"community.list"},"post":{"operationId":"client_resource_community_create","summary":"Criar comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Criar comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Criar comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":100,"example":"Clientes MVO"},"options":{"type":"object","additionalProperties":false,"properties":{"description":{"type":"string","nullable":false,"maxLength":2048,"example":"Avisos e grupos de atendimento da MVO."},"membershipApprovalMode":{"type":"string","enum":["open","request_required"],"default":"request_required"},"allowNonAdminSubGroupCreation":{"type":"boolean"},"createGeneralChat":{"type":"boolean"}}}},"additionalProperties":false,"required":["subject"]},"example":{"subject":"Clientes MVO","options":{"description":"Avisos e atendimento","membershipApprovalMode":"request_required","createGeneralChat":true}}}}},"x-mvo-community-operation":"community.create"}},"/v1/instances/cliente-01/communities/{community_id}":{"get":{"operationId":"client_resource_community_get","summary":"Consultar comunidade, membros e metadados","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar comunidade, membros e metadados. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-community-operation":"community.get"},"delete":{"operationId":"client_resource_community_deactivate","summary":"Desativar comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Desativar comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-community-operation":"community.deactivate"}},"/v1/instances/cliente-01/communities/{community_id}/subject":{"put":{"operationId":"client_resource_community_subject","summary":"Definir nome da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Definir nome da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir nome da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":100,"example":"Clientes MVO"}},"additionalProperties":false,"required":["subject"]},"example":{"subject":"Comunidade MVO"}}}},"x-mvo-community-operation":"community.subject"}},"/v1/instances/cliente-01/communities/{community_id}/description":{"put":{"operationId":"client_resource_community_description","summary":"Definir ou remover descrição da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Definir ou remover descrição da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir ou remover descrição da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","nullable":true,"maxLength":2048,"example":"Avisos e grupos de atendimento da MVO."},"previousId":{"type":"string","minLength":1,"maxLength":128,"example":"1700000000000","description":"descId anterior, quando conhecido."}},"additionalProperties":false,"required":["description"]},"example":{"description":"Canal de avisos e grupos de atendimento."}}}},"x-mvo-community-operation":"community.description"}},"/v1/instances/cliente-01/communities/{community_id}/photo":{"get":{"operationId":"client_resource_community_photo_get","summary":"Consultar URL da foto da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar URL da foto da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["image","preview"],"default":"image"}}],"x-mvo-community-operation":"community.photo-get"},"put":{"operationId":"client_resource_community_photo_set","summary":"Definir foto da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Definir foto da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":false,"description":"Definir foto da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":8192,"example":"https://cdn.sua-empresa.example/comunidade.jpg","description":"URL HTTPS pública da imagem; não combine com base64."},"base64":{"type":"string","minLength":1,"maxLength":11184816,"description":"Bytes da imagem em base64, até 8 MiB após decodificar; não combine com url."}},"additionalProperties":false,"oneOf":[{"required":["url"],"not":{"required":["base64"]}},{"required":["base64"],"not":{"required":["url"]}}]},"examples":{"url":{"summary":"Foto por URL HTTPS pública","value":{"url":"https://cdn.sua-empresa.example/comunidade.jpg"}},"base64":{"summary":"Foto PNG em base64 (2 × 2 pixels)","value":{"base64":"iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAC0lEQVQImWNgQAYAAA4AAbGa6gYAAAAASUVORK5CYII="}}}}}},"x-mvo-community-operation":"community.photo-set"},"delete":{"operationId":"client_resource_community_photo_delete","summary":"Remover foto da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Remover foto da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-community-operation":"community.photo-delete"}},"/v1/instances/cliente-01/communities/{community_id}/settings":{"put":{"operationId":"client_resource_community_setting","summary":"Definir configuração da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Definir configuração da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir configuração da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"setting":{"type":"string","enum":["announcement","restrict","membership_approval_mode","allow_non_admin_sub_group_creation","group_history","allow_admin_reports","no_frequently_forwarded"]},"enabled":{"type":"boolean"}},"additionalProperties":false,"required":["setting","enabled"]},"example":{"setting":"allow_non_admin_sub_group_creation","enabled":false}}}},"x-mvo-community-operation":"community.setting"}},"/v1/instances/cliente-01/communities/{community_id}/member-add-mode":{"put":{"operationId":"client_resource_community_member_add_mode","summary":"Definir quem pode adicionar membros","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Definir quem pode adicionar membros. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir quem pode adicionar membros. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["admin_add","all_member_add"]}},"additionalProperties":false,"required":["mode"]},"example":{"mode":"admin_add"}}}},"x-mvo-community-operation":"community.member-add-mode"}},"/v1/instances/cliente-01/communities/{community_id}/member-link-mode":{"put":{"operationId":"client_resource_community_member_link_mode","summary":"Definir quem pode vincular subgrupos","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Definir quem pode vincular subgrupos. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir quem pode vincular subgrupos. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["admin_link","all_member_link"]}},"additionalProperties":false,"required":["mode"]},"example":{"mode":"admin_link"}}}},"x-mvo-community-operation":"community.member-link-mode"}},"/v1/instances/cliente-01/communities/{community_id}/history-share-mode":{"put":{"operationId":"client_resource_community_history_share_mode","summary":"Definir quem pode compartilhar histórico","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Definir quem pode compartilhar histórico. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir quem pode compartilhar histórico. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["admin_share","all_member_share"]}},"additionalProperties":false,"required":["mode"]},"example":{"mode":"admin_share"}}}},"x-mvo-community-operation":"community.history-share-mode"}},"/v1/instances/cliente-01/communities/{community_id}/ephemeral":{"put":{"operationId":"client_resource_community_ephemeral","summary":"Definir duração das mensagens temporárias","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Definir duração das mensagens temporárias. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir duração das mensagens temporárias. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"seconds":{"type":"integer","enum":[0,86400,604800,7776000],"description":"Segundos: 0 desativa; demais valores representam 1, 7 ou 90 dias."},"trigger":{"type":"integer","minimum":0,"maximum":2147483647}},"additionalProperties":false,"required":["seconds"]},"example":{"seconds":86400}}}},"x-mvo-community-operation":"community.ephemeral"}},"/v1/instances/cliente-01/communities/{community_id}/members":{"get":{"operationId":"client_resource_community_members_list","summary":"Listar membros da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Listar membros da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-community-operation":"community.members-list"},"post":{"operationId":"client_resource_community_members_add","summary":"Adicionar membros à comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Adicionar membros à comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Adicionar membros à comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]}},"additionalProperties":false,"required":["participants"]},"example":{"participants":["123456789@lid"]}}}},"x-mvo-community-operation":"community.members-add"},"delete":{"operationId":"client_resource_community_members_remove","summary":"Remover membros da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Remover membros da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Remover membros da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]}},"additionalProperties":false,"required":["participants"]},"example":{"participants":["123456789@lid"]}}}},"x-mvo-community-operation":"community.members-remove"}},"/v1/instances/cliente-01/communities/{community_id}/admins":{"get":{"operationId":"client_resource_community_admins_list","summary":"Listar administradores da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Listar administradores da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-community-operation":"community.admins-list"}},"/v1/instances/cliente-01/communities/{community_id}/admins/promote":{"patch":{"operationId":"client_resource_community_admins_promote","summary":"Promover membros a administradores","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Promover membros a administradores. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Promover membros a administradores. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]}},"additionalProperties":false,"required":["participants"]},"example":{"participants":["123456789@lid"]}}}},"x-mvo-community-operation":"community.admins-promote"}},"/v1/instances/cliente-01/communities/{community_id}/admins/demote":{"patch":{"operationId":"client_resource_community_admins_demote","summary":"Remover função de administrador","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Remover função de administrador. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Remover função de administrador. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]}},"additionalProperties":false,"required":["participants"]},"example":{"participants":["123456789@lid"]}}}},"x-mvo-community-operation":"community.admins-demote"}},"/v1/instances/cliente-01/communities/{community_id}/invite":{"get":{"operationId":"client_resource_community_invite_get","summary":"Consultar código de convite da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar código de convite da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-community-operation":"community.invite-get"}},"/v1/instances/cliente-01/communities/{community_id}/invite/revoke":{"post":{"operationId":"client_resource_community_invite_revoke","summary":"Revogar e renovar convite da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Revogar e renovar convite da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-community-operation":"community.invite-revoke"}},"/v1/instances/cliente-01/communities/invites/inspect":{"post":{"operationId":"client_resource_community_invite_info","summary":"Consultar comunidade por código de convite","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar comunidade por código de convite. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Consultar comunidade por código de convite. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$","example":"CODIGO_DO_CONVITE","description":"Código do convite. Enviado no JSON para evitar registro na URL."}},"additionalProperties":false,"required":["code"]},"example":{"code":"CODIGO_DO_CONVITE"}}}},"x-mvo-community-operation":"community.invite-info"}},"/v1/instances/cliente-01/communities/join":{"post":{"operationId":"client_resource_community_join","summary":"Entrar na comunidade por convite","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Entrar na comunidade por convite. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Entrar na comunidade por convite. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$","example":"CODIGO_DO_CONVITE","description":"Código do convite. Enviado no JSON para evitar registro na URL."}},"additionalProperties":false,"required":["code"]},"example":{"code":"CODIGO_DO_CONVITE"}}}},"x-mvo-community-operation":"community.join"}},"/v1/instances/cliente-01/communities/{community_id}/membership":{"delete":{"operationId":"client_resource_community_leave","summary":"Sair da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Sair da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-community-operation":"community.leave"}},"/v1/instances/cliente-01/communities/{community_id}/subgroups":{"get":{"operationId":"client_resource_community_subgroups_list","summary":"Listar subgrupos vinculados à comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Listar subgrupos vinculados à comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["iq","mex"],"default":"iq","description":"iq retorna a lista de metadados; mex conserva o envelope original, incluindo null e campos adicionais."},"description":"iq retorna a lista de metadados; mex conserva o envelope original, incluindo null e campos adicionais."}],"x-mvo-community-operation":"community.subgroups-list"},"post":{"operationId":"client_resource_community_subgroups_create","summary":"Criar grupo vinculado à comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Criar grupo vinculado à comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Criar grupo vinculado à comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":100,"example":"Clientes MVO"},"participants":{"type":"array","minItems":0,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"options":{"type":"object","additionalProperties":false,"properties":{"description":{"type":"string","nullable":false,"maxLength":2048,"example":"Avisos e grupos de atendimento da MVO."}}}},"additionalProperties":false,"required":["subject"]},"example":{"subject":"Atendimento MVO","participants":["123456789@lid"],"options":{"description":"Suporte aos clientes"}}}}},"x-mvo-community-operation":"community.subgroups-create"}},"/v1/instances/cliente-01/communities/{community_id}/subgroups/link":{"post":{"operationId":"client_resource_community_subgroups_link","summary":"Vincular grupos existentes à comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Vincular grupos existentes à comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Vincular grupos existentes à comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"subgroup_ids":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"items":{"oneOf":[{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},{"type":"object","properties":{"jid":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"hidden":{"type":"boolean","default":false,"description":"Solicita o vínculo como grupo oculto usando hidden_group no protocolo."}},"required":["jid"],"additionalProperties":false}]},"example":["120363000000000001@g.us"]}},"additionalProperties":false,"required":["subgroup_ids"]},"examples":{"groups":{"summary":"Vincular grupos existentes","value":{"subgroup_ids":["120363000000000001@g.us"]}},"hidden_group":{"summary":"Vincular um grupo oculto","value":{"subgroup_ids":[{"jid":"120363000000000001@g.us","hidden":true}]}}}}}},"x-mvo-community-operation":"community.subgroups-link"},"delete":{"operationId":"client_resource_community_subgroups_unlink","summary":"Desvincular grupos da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Desvincular grupos da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Desvincular grupos da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"subgroup_ids":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"items":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"example":["120363000000000001@g.us"]},"removeOrphanedMembers":{"type":"boolean","default":false,"description":"Solicita remover membros que perderam todos os vínculos de subgrupos; o servidor decide o resultado."}},"additionalProperties":false,"required":["subgroup_ids"]},"example":{"subgroup_ids":["120363000000000001@g.us"],"removeOrphanedMembers":false}}}},"x-mvo-community-operation":"community.subgroups-unlink"}},"/v1/instances/cliente-01/communities/{community_id}/subgroups/join":{"post":{"operationId":"client_resource_community_subgroups_join","summary":"Entrar em subgrupo vinculado à comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Entrar em subgrupo vinculado à comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Entrar em subgrupo vinculado à comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"subgroup_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID real do subgrupo vinculado."},"type":{"type":"string","maxLength":32,"pattern":"^[a-z_]+$","description":"Tipo de ingresso do protocolo, quando conhecido. Omita para usar o padrão do servidor."}},"additionalProperties":false,"required":["subgroup_id"]},"example":{"subgroup_id":"120363000000000001@g.us"}}}},"x-mvo-community-operation":"community.subgroups-join"}},"/v1/instances/cliente-01/communities/{community_id}/subgroups/participants":{"get":{"operationId":"client_resource_community_subgroups_participants","summary":"Consultar participantes dos subgrupos vinculados","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar participantes dos subgrupos vinculados. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-community-operation":"community.subgroups-participants"}},"/v1/instances/cliente-01/communities/{community_id}/subgroups/suggestions":{"get":{"operationId":"client_resource_community_subgroups_suggestions","summary":"Consultar sugestões de subgrupos","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar sugestões de subgrupos. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"hint","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID de grupo usado como sugestão inicial, quando conhecido."},"description":"JID de grupo usado como sugestão inicial, quando conhecido."}],"x-mvo-community-operation":"community.subgroups-suggestions"}},"/v1/instances/cliente-01/communities/{community_id}/requests":{"get":{"operationId":"client_resource_community_requests_list","summary":"Listar solicitações de participação","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Listar solicitações de participação. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-community-operation":"community.requests-list"},"delete":{"operationId":"client_resource_community_requests_cancel","summary":"Cancelar solicitações de participação","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Cancelar solicitações de participação. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Cancelar solicitações de participação. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]}},"additionalProperties":false,"required":["participants"]},"example":{"participants":["123456789@lid"]}}}},"x-mvo-community-operation":"community.requests-cancel"}},"/v1/instances/cliente-01/communities/{community_id}/requests/approve":{"post":{"operationId":"client_resource_community_requests_approve","summary":"Aprovar solicitações de participação","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Aprovar solicitações de participação. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Aprovar solicitações de participação. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]}},"additionalProperties":false,"required":["participants"]},"example":{"participants":["123456789@lid"]}}}},"x-mvo-community-operation":"community.requests-approve"}},"/v1/instances/cliente-01/communities/{community_id}/requests/reject":{"post":{"operationId":"client_resource_community_requests_reject","summary":"Rejeitar solicitações de participação","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Rejeitar solicitações de participação. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Rejeitar solicitações de participação. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]}},"additionalProperties":false,"required":["participants"]},"example":{"participants":["123456789@lid"]}}}},"x-mvo-community-operation":"community.requests-reject"}},"/v1/instances/cliente-01/communities/{community_id}/owner/transfer":{"post":{"operationId":"client_resource_community_owner_transfer","summary":"Transferir propriedade da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Transferir propriedade da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Transferir propriedade da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"newOwner":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."}},"additionalProperties":false,"required":["newOwner"]},"example":{"newOwner":"123456789@lid"}}}},"x-mvo-community-operation":"community.owner-transfer"}},"/v1/instances/cliente-01/communities/{community_id}/internal":{"get":{"operationId":"client_resource_community_internal","summary":"Consultar se grupo é interno à comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar se grupo é interno à comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID @g.us do grupo/subgrupo a verificar. O campo se chama community_id por consistência da rota; a consulta verifica esse ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-community-operation":"community.internal"}},"/v1/instances/cliente-01/communities/{community_id}/appeals":{"post":{"operationId":"client_resource_community_appeal","summary":"Enviar recurso de suspensão da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Enviar recurso de suspensão da comunidade. IDs vinculados à rota não são repetidos no JSON. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"community_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":false,"description":"Enviar recurso de suspensão da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","nullable":true,"minLength":1,"maxLength":1024,"example":"Solicito a revisão da suspensão."},"debugInfo":{"type":"string","minLength":2,"maxLength":16384,"example":"{\"source\":\"customer-support\"}","description":"Texto JSON cujo valor é um objeto. Não enviar credenciais nem dados privados."}},"additionalProperties":false},"example":{"reason":"Solicito a revisão da suspensão."}}}},"x-mvo-community-operation":"community.appeal"}},"/v1/instances/cliente-01/statuses":{"get":{"operationId":"client_resource_status_list","summary":"Listar status observados pela sessão","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Listar status observados pela sessão. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Timestamp Unix exclusivo, em segundos."},"description":"Timestamp Unix exclusivo, em segundos."},{"name":"includeExpired","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"includeRevoked","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-status-operation":"status.list"}},"/v1/instances/cliente-01/statuses/own":{"get":{"operationId":"client_resource_status_own","summary":"Listar os próprios status","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Listar os próprios status. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Timestamp Unix exclusivo, em segundos."},"description":"Timestamp Unix exclusivo, em segundos."},{"name":"includeExpired","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"includeRevoked","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-status-operation":"status.own"}},"/v1/instances/cliente-01/statuses/received":{"get":{"operationId":"client_resource_status_received","summary":"Listar status recebidos","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Listar status recebidos. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Timestamp Unix exclusivo, em segundos."},"description":"Timestamp Unix exclusivo, em segundos."},{"name":"includeExpired","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"includeRevoked","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-status-operation":"status.received"}},"/v1/instances/cliente-01/statuses/privacy":{"get":{"operationId":"client_resource_status_privacy_get","summary":"Consultar privacidade sincronizada dos status","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar privacidade sincronizada dos status. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-status-operation":"status.privacy-get"},"put":{"operationId":"client_resource_status_privacy_set","summary":"Definir privacidade dos status","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Definir privacidade dos status. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Alteração autenticada por AppState. Não altera retroativamente a audiência de publicações existentes. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir privacidade dos status. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Alteração autenticada por AppState. Não altera retroativamente a audiência de publicações existentes.","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["ALLOW_LIST","DENY_LIST","CONTACTS","CLOSE_FRIENDS","CUSTOM_LIST"]},"userJids":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"maxItems":1024},"shareToFB":{"type":"boolean"},"shareToIG":{"type":"boolean"}},"additionalProperties":false,"required":["mode"]},"example":{"mode":"ALLOW_LIST","userJids":["5511999999999@s.whatsapp.net"],"shareToFB":false,"shareToIG":false}}}},"x-mvo-status-operation":"status.privacy-set"}},"/v1/instances/cliente-01/statuses/muted":{"get":{"operationId":"client_resource_status_muted_list","summary":"Listar autores silenciados","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Listar autores silenciados. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"after","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}],"x-mvo-status-operation":"status.muted-list"}},"/v1/instances/cliente-01/statuses/muted/{author}":{"put":{"operationId":"client_resource_status_mute","summary":"Silenciar status de um autor","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Silenciar status de um autor. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"author","in":"path","required":true,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-status-operation":"status.mute"},"delete":{"operationId":"client_resource_status_unmute","summary":"Reativar status de um autor","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Reativar status de um autor. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"author","in":"path","required":true,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-status-operation":"status.unmute"}},"/v1/instances/cliente-01/statuses/text":{"post":{"operationId":"client_resource_status_publish_text","summary":"Publicar status de texto com estilo","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Publicar status de texto com estilo. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar status de texto com estilo. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Até 65.536 bytes UTF-8; limites da conta são confirmados pelo WhatsApp."},"style":{"type":"object","properties":{"font":{"oneOf":[{"type":"integer","enum":[0,1,2,6,7,8,9,10]},{"type":"string","enum":["SYSTEM","SYSTEM_TEXT","FB_SCRIPT","SYSTEM_BOLD","MORNINGBREEZE_REGULAR","CALISTOGA_REGULAR","EXO2_EXTRABOLD","COURIERPRIME_BOLD"]}]},"backgroundColor":{"oneOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}(?:[0-9A-Fa-f]{2})?$"},{"type":"integer","minimum":0,"maximum":4294967295}],"description":"#RRGGBB, #AARRGGBB ou uint32 ARGB.","example":"#0099FF"},"textColor":{"oneOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}(?:[0-9A-Fa-f]{2})?$"},{"type":"integer","minimum":0,"maximum":4294967295}],"description":"#RRGGBB, #AARRGGBB ou uint32 ARGB.","example":"#FFFFFF"}},"additionalProperties":false}},"additionalProperties":false,"required":["recipients","text"]},"example":{"recipients":["5511999999999@s.whatsapp.net"],"text":"Novidades da MVO!","style":{"font":0,"backgroundColor":"#0099FF","textColor":"#FFFFFF"}}}}},"x-mvo-status-operation":"status.publish-text"}},"/v1/instances/cliente-01/statuses/image":{"post":{"operationId":"client_resource_status_publish_image","summary":"Publicar status de imagem","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Publicar status de imagem. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar status de imagem. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."},"url":{"type":"string","format":"uri","maxLength":8192,"example":"https://example.com/status.jpg","description":"HTTPS público; redes privadas, credenciais, caminhos locais e redirecionamentos privados são bloqueados."},"base64":{"type":"string","minLength":4,"maxLength":44739248,"description":"Conteúdo da mídia em base64 puro, limitado a 32 MiB."},"mimetype":{"type":"string","maxLength":128},"accessibilityLabel":{"type":"string","maxLength":65536},"caption":{"type":"string","maxLength":65536},"width":{"type":"integer","minimum":0,"maximum":4294967295},"height":{"type":"integer","minimum":0,"maximum":4294967295},"jpegThumbnailBase64":{"type":"string","maxLength":1398104,"description":"Thumbnail JPEG em base64, até 1 MiB."}},"additionalProperties":false,"required":["recipients"],"oneOf":[{"required":["url"],"not":{"required":["base64"]}},{"required":["base64"],"not":{"required":["url"]}}]},"example":{"recipients":["5511999999999@s.whatsapp.net"],"url":"https://example.com/status.jpg","mimetype":"image/jpeg"}}}},"x-mvo-status-operation":"status.publish-image"}},"/v1/instances/cliente-01/statuses/video":{"post":{"operationId":"client_resource_status_publish_video","summary":"Publicar status de vídeo ou GIF","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Publicar status de vídeo ou GIF. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar status de vídeo ou GIF. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."},"url":{"type":"string","format":"uri","maxLength":8192,"example":"https://example.com/status.jpg","description":"HTTPS público; redes privadas, credenciais, caminhos locais e redirecionamentos privados são bloqueados."},"base64":{"type":"string","minLength":4,"maxLength":44739248,"description":"Conteúdo da mídia em base64 puro, limitado a 32 MiB."},"mimetype":{"type":"string","maxLength":128},"accessibilityLabel":{"type":"string","maxLength":65536},"caption":{"type":"string","maxLength":65536},"seconds":{"type":"integer","minimum":0,"maximum":4294967295},"gifPlayback":{"type":"boolean","default":false},"width":{"type":"integer","minimum":0,"maximum":4294967295},"height":{"type":"integer","minimum":0,"maximum":4294967295},"jpegThumbnailBase64":{"type":"string","maxLength":1398104,"description":"Thumbnail JPEG em base64, até 1 MiB."}},"additionalProperties":false,"required":["recipients"],"oneOf":[{"required":["url"],"not":{"required":["base64"]}},{"required":["base64"],"not":{"required":["url"]}}]},"example":{"recipients":["5511999999999@s.whatsapp.net"],"url":"https://example.com/status.mp4","mimetype":"video/mp4"}}}},"x-mvo-status-operation":"status.publish-video"}},"/v1/instances/cliente-01/statuses/voice":{"post":{"operationId":"client_resource_status_publish_voice","summary":"Publicar status de voz","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Publicar status de voz. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar status de voz. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."},"url":{"type":"string","format":"uri","maxLength":8192,"example":"https://example.com/status.jpg","description":"HTTPS público; redes privadas, credenciais, caminhos locais e redirecionamentos privados são bloqueados."},"base64":{"type":"string","minLength":4,"maxLength":44739248,"description":"Conteúdo da mídia em base64 puro, limitado a 32 MiB."},"mimetype":{"type":"string","maxLength":128},"accessibilityLabel":{"type":"string","maxLength":65536},"seconds":{"type":"integer","minimum":0,"maximum":4294967295},"waveformBase64":{"type":"string","maxLength":1398104,"description":"Waveform em base64, até 1 MiB."},"normalizeVoice":{"type":"boolean","default":true},"backgroundColor":{"oneOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}(?:[0-9A-Fa-f]{2})?$"},{"type":"integer","minimum":0,"maximum":4294967295}],"description":"#RRGGBB, #AARRGGBB ou uint32 ARGB."}},"additionalProperties":false,"required":["recipients"],"oneOf":[{"required":["url"],"not":{"required":["base64"]}},{"required":["base64"],"not":{"required":["url"]}}]},"example":{"recipients":["5511999999999@s.whatsapp.net"],"url":"https://example.com/status.ogg","mimetype":"audio/ogg; codecs=opus"}}}},"x-mvo-status-operation":"status.publish-voice"}},"/v1/instances/cliente-01/statuses/{message_id}":{"get":{"operationId":"client_resource_status_get","summary":"Consultar um status observado","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar um status observado. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},{"name":"includeExpired","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"includeRevoked","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-status-operation":"status.get"},"delete":{"operationId":"client_resource_status_delete","summary":"Apagar um status próprio","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Apagar um status próprio. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Sem recipients, reutiliza a audiência original persistida. IDs desconhecidos ou recebidos não podem ser apagados. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":false,"description":"Apagar um status próprio. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Sem recipients, reutiliza a audiência original persistida. IDs desconhecidos ou recebidos não podem ser apagados.","content":{"application/json":{"schema":{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."}},"additionalProperties":false},"example":{}}}},"x-mvo-status-operation":"status.delete"}},"/v1/instances/cliente-01/statuses/{message_id}/viewers":{"get":{"operationId":"client_resource_status_viewers","summary":"Listar visualizações observadas do status próprio","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Listar visualizações observadas do status próprio. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-status-operation":"status.viewers"}},"/v1/instances/cliente-01/statuses/{message_id}/read":{"post":{"operationId":"client_resource_status_read","summary":"Marcar status recebido como visto","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Marcar status recebido como visto. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}],"requestBody":{"required":true,"description":"Marcar status recebido como visto. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}},"additionalProperties":false,"required":["author"]},"example":{"author":"5511999999999@s.whatsapp.net"}}}},"x-mvo-status-operation":"status.read"}},"/v1/instances/cliente-01/statuses/{message_id}/reply":{"post":{"operationId":"client_resource_status_reply","summary":"Responder a um status recebido","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Responder a um status recebido. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}],"requestBody":{"required":true,"description":"Responder a um status recebido. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"text":{"type":"string","minLength":1,"maxLength":65536}},"additionalProperties":false,"required":["author","text"]},"example":{"author":"5511999999999@s.whatsapp.net","text":"Gostei do seu status!"}}}},"x-mvo-status-operation":"status.reply"}},"/v1/instances/cliente-01/statuses/{message_id}/reaction":{"put":{"operationId":"client_resource_status_react","summary":"Definir ou remover reação a um status recebido","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Definir ou remover reação a um status recebido. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}],"requestBody":{"required":true,"description":"Definir ou remover reação a um status recebido. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"emoji":{"type":"string","maxLength":32,"description":"Emoji Unicode; string vazia remove a reação."}},"additionalProperties":false,"required":["author","emoji"]},"example":{"author":"5511999999999@s.whatsapp.net","emoji":"❤️"}}}},"x-mvo-status-operation":"status.react"}},"/v1/instances/cliente-01/statuses/{message_id}/media":{"post":{"operationId":"client_resource_status_download","summary":"Baixar e descriptografar mídia de status observado","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Baixar e descriptografar mídia de status observado. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Retorna bytes em base64 com limite de 32 MiB. Não recebe mediaKey, URL de download, protobuf ou descritores arbitrários. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}],"requestBody":{"required":false,"description":"Baixar e descriptografar mídia de status observado. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Retorna bytes em base64 com limite de 32 MiB. Não recebe mediaKey, URL de download, protobuf ou descritores arbitrários.","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}},"additionalProperties":false},"example":{}}}},"x-mvo-status-operation":"status.download"}},"/v1/instances/cliente-01/channels":{"get":{"operationId":"client_resource_channel_list","summary":"Listar canais seguidos","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Listar canais seguidos. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"fetchWamoSub","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-channel-operation":"channel.list"},"post":{"operationId":"client_resource_channel_create","summary":"Criar canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Criar canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Criar canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"example":"Novidades MVO"},"description":{"type":"string","maxLength":2048},"url":{"type":"string","minLength":1,"maxLength":8192,"format":"uri","example":"https://example.com/canal.jpg"},"base64":{"type":"string","minLength":1,"maxLength":11184816,"example":"/9j/4AAQSkZJRgABAQAAAQABAAD="}},"required":["name"],"additionalProperties":false},"example":{"name":"Novidades MVO","description":"Avisos e novidades"}}}},"x-mvo-channel-operation":"channel.create"}},"/v1/instances/cliente-01/channels/search":{"get":{"operationId":"client_resource_channel_search","summary":"Buscar canais no diretório","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Buscar canais no diretório. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"searchText","in":"query","required":false,"schema":{"type":"string","maxLength":1024}},{"name":"categories","in":"query","required":false,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","enum":["BUSINESS","ENTERTAINMENT","LIFESTYLE","NEWS","ORGANIZATIONS","PEOPLE","SPORTS","SPECIAL_EVENTS","SPECIAL_EVENTS_2","SPECIAL_EVENTS_3","SPECIAL_EVENTS_4","SPECIAL_EVENTS_5"]},"minItems":0,"maxItems":100,"uniqueItems":true}}}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"startCursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":4096}}],"x-mvo-channel-operation":"channel.search"}},"/v1/instances/cliente-01/channels/recommended":{"get":{"operationId":"client_resource_channel_recommended","summary":"Consultar canais recomendados","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar canais recomendados. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"countryCodes","in":"query","required":false,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2,"pattern":"^[A-Z]{2}$","example":"BR"},"minItems":0,"maxItems":100,"uniqueItems":true}}}}],"x-mvo-channel-operation":"channel.recommended"}},"/v1/instances/cliente-01/channels/directory":{"get":{"operationId":"client_resource_channel_directory","summary":"Listar diretório de canais","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Listar diretório de canais. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"view","in":"query","required":true,"schema":{"type":"string","enum":["POPULAR","RECOMMENDED","NEW","FEATURED","TRENDING"]}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"countryCodes","in":"query","required":false,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2,"pattern":"^[A-Z]{2}$","example":"BR"},"minItems":0,"maxItems":100,"uniqueItems":true}}}},{"name":"categories","in":"query","required":false,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","enum":["BUSINESS","ENTERTAINMENT","LIFESTYLE","NEWS","ORGANIZATIONS","PEOPLE","SPORTS","SPECIAL_EVENTS","SPECIAL_EVENTS_2","SPECIAL_EVENTS_3","SPECIAL_EVENTS_4","SPECIAL_EVENTS_5"]},"minItems":0,"maxItems":100,"uniqueItems":true}}}},{"name":"startCursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":4096}}],"x-mvo-channel-operation":"channel.directory"}},"/v1/instances/cliente-01/channels/directory/categories":{"get":{"operationId":"client_resource_channel_categories","summary":"Consultar categorias do diretório","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar categorias do diretório. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"categories","in":"query","required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","enum":["BUSINESS","ENTERTAINMENT","LIFESTYLE","NEWS","ORGANIZATIONS","PEOPLE","SPORTS","SPECIAL_EVENTS","SPECIAL_EVENTS_2","SPECIAL_EVENTS_3","SPECIAL_EVENTS_4","SPECIAL_EVENTS_5"]},"minItems":1,"maxItems":100,"uniqueItems":true}}}},{"name":"country","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2,"pattern":"^[A-Z]{2}$","example":"BR"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10}}],"x-mvo-channel-operation":"channel.categories"}},"/v1/instances/cliente-01/channels/domains/preview":{"post":{"operationId":"client_resource_channel_domains","summary":"Verificar domínio de prévia","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Verificar domínio de prévia. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Verificar domínio de prévia. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"domains":{"type":"array","items":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\\.)+[A-Za-z]{2,63}$"},"minItems":1,"maxItems":100,"uniqueItems":true}},"required":["domains"],"additionalProperties":false},"example":{"domains":["mvo.host"]}}}},"x-mvo-channel-operation":"channel.domains"}},"/v1/instances/cliente-01/channels/reports":{"get":{"operationId":"client_resource_channel_reports","summary":"Consultar denúncias de canais","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar denúncias de canais. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-channel-operation":"channel.reports"}},"/v1/instances/cliente-01/channels/invite":{"get":{"operationId":"client_resource_channel_by_invite","summary":"Consultar canal pelo convite","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar canal pelo convite. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"invite","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":256,"example":"MVO_CONVITE"}},{"name":"viewRole","in":"query","required":false,"schema":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"}},{"name":"fetchViewerMetadata","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"fetchFullImage","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"fetchCreationTime","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"fetchWamoSub","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-channel-operation":"channel.by-invite"}},"/v1/instances/cliente-01/channels/dehydrated":{"get":{"operationId":"client_resource_channel_dehydrated","summary":"Consultar metadados reduzidos","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar metadados reduzidos. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"key","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":256,"example":"120363000000000000@newsletter"}},{"name":"viewRole","in":"query","required":false,"schema":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"}},{"name":"fetchWamoSub","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-channel-operation":"channel.dehydrated"}},"/v1/instances/cliente-01/channels/terms":{"get":{"operationId":"client_resource_channel_tos_get","summary":"Consultar termos de canais","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar termos de canais. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"notices","in":"query","required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"minItems":1,"maxItems":20,"uniqueItems":true}}}}],"x-mvo-channel-operation":"channel.tos-get"}},"/v1/instances/cliente-01/channels/terms/accept":{"post":{"operationId":"client_resource_channel_tos_accept","summary":"Aceitar termos de canais","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Aceitar termos de canais. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Aceitar termos de canais. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"notices":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"minItems":1,"maxItems":20,"uniqueItems":true}},"required":["notices"],"additionalProperties":false},"example":{"notices":["2060127000651691"]}}}},"x-mvo-channel-operation":"channel.tos-accept"}},"/v1/instances/cliente-01/channels/{channel_id}":{"get":{"operationId":"client_resource_channel_get","summary":"Consultar canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"viewRole","in":"query","required":false,"schema":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"}},{"name":"fetchViewerMetadata","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"fetchFullImage","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"fetchCreationTime","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"fetchWamoSub","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-channel-operation":"channel.get"},"patch":{"operationId":"client_resource_channel_update","summary":"Atualizar canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Atualizar canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":false,"description":"Atualizar canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","maxLength":2048},"reactionCodesSetting":{"type":"string","enum":["ALL","BASIC","NONE","BLOCKLIST"]}},"additionalProperties":false},"example":{"name":"Novidades MVO atualizadas"}}}},"x-mvo-channel-operation":"channel.update"},"delete":{"operationId":"client_resource_channel_delete","summary":"Excluir canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Excluir canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-channel-operation":"channel.delete"}},"/v1/instances/cliente-01/channels/{channel_id}/name":{"put":{"operationId":"client_resource_channel_name","summary":"Alterar nome do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Alterar nome do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Alterar nome do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"example":"Novidades MVO"}},"required":["name"],"additionalProperties":false},"example":{"name":"Novidades MVO"}}}},"x-mvo-channel-operation":"channel.name"}},"/v1/instances/cliente-01/channels/{channel_id}/description":{"put":{"operationId":"client_resource_channel_description","summary":"Alterar descrição do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Alterar descrição do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Alterar descrição do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","maxLength":2048}},"required":["description"],"additionalProperties":false},"example":{"description":"Avisos MVO"}}}},"x-mvo-channel-operation":"channel.description"}},"/v1/instances/cliente-01/channels/{channel_id}/photo":{"put":{"operationId":"client_resource_channel_photo_set","summary":"Atualizar foto do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Atualizar foto do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":false,"description":"Atualizar foto do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":8192,"format":"uri","example":"https://example.com/canal.jpg"},"base64":{"type":"string","minLength":1,"maxLength":11184816,"example":"/9j/4AAQSkZJRgABAQAAAQABAAD="}},"additionalProperties":false},"example":{"url":"https://example.com/canal.jpg"}}}},"x-mvo-channel-operation":"channel.photo-set"},"get":{"operationId":"client_resource_channel_photo_get","summary":"Consultar foto ou prévia do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar foto ou prévia do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["image","preview"],"default":"image"}}],"x-mvo-channel-operation":"channel.photo-get"},"delete":{"operationId":"client_resource_channel_photo_delete","summary":"Remover foto do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Remover foto do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-channel-operation":"channel.photo-delete"}},"/v1/instances/cliente-01/channels/{channel_id}/settings/reactions":{"put":{"operationId":"client_resource_channel_reactions_setting","summary":"Configurar reações do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Configurar reações do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Configurar reações do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"reactionCodesSetting":{"type":"string","enum":["ALL","BASIC","NONE","BLOCKLIST"]}},"required":["reactionCodesSetting"],"additionalProperties":false},"example":{"reactionCodesSetting":"ALL"}}}},"x-mvo-channel-operation":"channel.reactions-setting"}},"/v1/instances/cliente-01/channels/{channel_id}/followers/me":{"put":{"operationId":"client_resource_channel_follow","summary":"Seguir canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Seguir canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-channel-operation":"channel.follow"},"delete":{"operationId":"client_resource_channel_unfollow","summary":"Deixar de seguir canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Deixar de seguir canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-channel-operation":"channel.unfollow"}},"/v1/instances/cliente-01/channels/{channel_id}/mute":{"put":{"operationId":"client_resource_channel_mute","summary":"Configurar silenciamento do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Configurar silenciamento do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Configurar silenciamento do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"muted":{"type":"boolean","default":false},"adminActivity":{"type":"boolean","default":false}},"required":["muted"],"additionalProperties":false},"example":{"muted":true,"adminActivity":false}}}},"x-mvo-channel-operation":"channel.mute"}},"/v1/instances/cliente-01/channels/{channel_id}/similar":{"get":{"operationId":"client_resource_channel_similar","summary":"Consultar canais semelhantes","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar canais semelhantes. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"countryCodes","in":"query","required":false,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2,"pattern":"^[A-Z]{2}$","example":"BR"},"minItems":0,"maxItems":100,"uniqueItems":true}}}}],"x-mvo-channel-operation":"channel.similar"}},"/v1/instances/cliente-01/channels/{channel_id}/admins":{"get":{"operationId":"client_resource_channel_admins","summary":"Consultar administradores","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar administradores. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-channel-operation":"channel.admins"},"delete":{"operationId":"client_resource_channel_admin_demote","summary":"Remover administrador","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Remover administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Remover administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","example":"5511999999999@s.whatsapp.net"}},"required":["user"],"additionalProperties":false},"example":{"user":"5511999999999@s.whatsapp.net"}}}},"x-mvo-channel-operation":"channel.admin-demote"}},"/v1/instances/cliente-01/channels/{channel_id}/capabilities":{"get":{"operationId":"client_resource_channel_capabilities","summary":"Consultar permissões","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar permissões. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-channel-operation":"channel.capabilities"}},"/v1/instances/cliente-01/channels/{channel_id}/admin-invites":{"get":{"operationId":"client_resource_channel_pending_invites","summary":"Consultar convites pendentes","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar convites pendentes. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-channel-operation":"channel.pending-invites"},"post":{"operationId":"client_resource_channel_admin_invite_create","summary":"Convidar administrador","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Convidar administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Convidar administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","example":"5511999999999@s.whatsapp.net"}},"required":["user"],"additionalProperties":false},"example":{"user":"5511999999999@s.whatsapp.net"}}}},"x-mvo-channel-operation":"channel.admin-invite-create"},"delete":{"operationId":"client_resource_channel_admin_invite_revoke","summary":"Revogar convite de administrador","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Revogar convite de administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Revogar convite de administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","example":"5511999999999@s.whatsapp.net"}},"required":["user"],"additionalProperties":false},"example":{"user":"5511999999999@s.whatsapp.net"}}}},"x-mvo-channel-operation":"channel.admin-invite-revoke"}},"/v1/instances/cliente-01/channels/{channel_id}/enforcements":{"get":{"operationId":"client_resource_channel_enforcements","summary":"Consultar restrições do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar restrições do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-channel-operation":"channel.enforcements"}},"/v1/instances/cliente-01/channels/{channel_id}/followers":{"get":{"operationId":"client_resource_channel_followers","summary":"Consultar seguidores","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar seguidores. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"count","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50}}],"x-mvo-channel-operation":"channel.followers"}},"/v1/instances/cliente-01/channels/{channel_id}/insights":{"post":{"operationId":"client_resource_channel_insights","summary":"Consultar métricas nativas avançadas do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar métricas nativas avançadas do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. O formato interno de metrics depende do contrato nativo da conta e não foi observado na referência atual. Não apresentamos um exemplo inventado. Consulte o contrato nativo antes de executar. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Consultar métricas nativas avançadas do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. O formato interno de metrics depende do contrato nativo da conta e não foi observado na referência atual. Não apresentamos um exemplo inventado. Consulte o contrato nativo antes de executar.","content":{"application/json":{"schema":{"type":"object","properties":{"metrics":{"type":"array","items":{"type":"object","additionalProperties":true,"minProperties":1,"description":"Estrutura nativa de métrica determinada pelo WhatsApp. Campos específicos não foram observados na referência atual; esta operação avançada não foi homologada com uma conta real."},"minItems":1,"maxItems":100,"uniqueItems":true}},"required":["metrics"],"additionalProperties":false},"x-mvo-native-contract-unverified":true}}},"x-mvo-channel-operation":"channel.insights"}},"/v1/instances/cliente-01/channels/{channel_id}/owner":{"post":{"operationId":"client_resource_channel_owner_transfer","summary":"Transferir propriedade","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Transferir propriedade. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Transferir propriedade. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","example":"5511999999999@s.whatsapp.net"}},"required":["user"],"additionalProperties":false},"example":{"user":"5511999999999@s.whatsapp.net"}}}},"x-mvo-channel-operation":"channel.owner-transfer"}},"/v1/instances/cliente-01/channels/{channel_id}/admin-invites/accept":{"post":{"operationId":"client_resource_channel_admin_invite_accept","summary":"Aceitar convite de administrador","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Aceitar convite de administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-channel-operation":"channel.admin-invite-accept"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/text":{"post":{"operationId":"client_resource_channel_send_text","summary":"Publicar texto no canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Publicar texto no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar texto no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":65536,"example":"Novidades da MVO!"},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"}},"required":["text"],"additionalProperties":false},"example":{"text":"Novidades da MVO!"}}}},"x-mvo-channel-operation":"channel.send-text"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/contacts":{"post":{"operationId":"client_resource_channel_send_contact","summary":"Publicar contato no canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Publicar contato no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar contato no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"displayName":{"type":"string","minLength":1,"maxLength":256},"vcard":{"type":"string","minLength":1,"maxLength":65536},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"}},"required":["vcard"],"additionalProperties":false},"example":{"displayName":"Atendimento MVO","vcard":"BEGIN:VCARD\nVERSION:3.0\nFN:Atendimento MVO\nTEL;TYPE=CELL:+5511999999999\nEND:VCARD"}}}},"x-mvo-channel-operation":"channel.send-contact"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/media":{"post":{"operationId":"client_resource_channel_send_media","summary":"Publicar mídia no canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Publicar mídia no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar mídia no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif","ptv","audio","ptt","document","sticker"]},"url":{"type":"string","minLength":1,"maxLength":8192,"format":"uri","example":"https://example.com/novidades.jpg"},"base64":{"type":"string","minLength":1,"maxLength":44739248},"caption":{"type":"string","maxLength":65536},"mimetype":{"type":"string","minLength":1,"maxLength":128},"fileName":{"type":"string","minLength":1,"maxLength":256},"seconds":{"type":"integer","minimum":0,"maximum":86400},"width":{"type":"integer","minimum":1,"maximum":8192},"height":{"type":"integer","minimum":1,"maximum":8192}},"required":["type"],"additionalProperties":false},"example":{"type":"image","url":"https://example.com/novidades.jpg","caption":"Novidades da MVO"}}}},"x-mvo-channel-operation":"channel.send-media"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/polls":{"post":{"operationId":"client_resource_channel_send_poll","summary":"Publicar enquete no canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Publicar enquete no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar enquete no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"options":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100},"minItems":2,"maxItems":12,"uniqueItems":true},"selectableCount":{"type":"integer","minimum":0,"maximum":12,"default":1},"allowAddOption":{"type":"boolean"},"hideParticipantName":{"type":"boolean"},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"}},"required":["name","options"],"additionalProperties":false},"example":{"name":"Qual conteúdo você prefere?","options":["Dicas","Novidades"],"selectableCount":1}}}},"x-mvo-channel-operation":"channel.send-poll"}},"/v1/instances/cliente-01/channels/{channel_id}/posts":{"get":{"operationId":"client_resource_channel_messages","summary":"Consultar publicações no WhatsApp","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar publicações no WhatsApp. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"count","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"after","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"viewRole","in":"query","required":false,"schema":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"}}],"x-mvo-channel-operation":"channel.messages"}},"/v1/instances/cliente-01/channels/{channel_id}/updates":{"get":{"operationId":"client_resource_channel_updates","summary":"Consultar atualizações de publicações","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar atualizações de publicações. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"count","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50}},{"name":"since","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"after","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}}],"x-mvo-channel-operation":"channel.updates"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/local":{"get":{"operationId":"client_resource_channel_messages_local","summary":"Listar publicações observadas localmente","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Listar publicações observadas localmente. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}}],"x-mvo-channel-operation":"channel.messages-local"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/local/{message_id}":{"get":{"operationId":"client_resource_channel_message_get","summary":"Consultar publicação observada","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar publicação observada. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","pattern":"^(?:[A-Za-z0-9_-]{1,128}|server:[1-9][0-9]{0,17}|response:[A-Za-z0-9_-]{1,119})$","description":"ID real da mensagem recebida/enviada.","example":"MVO_CHANNEL_EXAMPLE"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"serverId","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}}],"x-mvo-channel-operation":"channel.message-get"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/local/{message_id}/media":{"post":{"operationId":"client_resource_channel_media_download","summary":"Baixar mídia da publicação observada","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Baixar mídia da publicação observada. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","pattern":"^(?:[A-Za-z0-9_-]{1,128}|server:[1-9][0-9]{0,17}|response:[A-Za-z0-9_-]{1,119})$","description":"ID real da mensagem recebida/enviada.","example":"MVO_CHANNEL_EXAMPLE"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":false,"description":"Baixar mídia da publicação observada. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991}},"additionalProperties":false},"example":{}}}},"x-mvo-channel-operation":"channel.media-download"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/{message_id}":{"patch":{"operationId":"client_resource_channel_edit","summary":"Editar publicação de texto ou mídia","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Editar publicação de texto ou mídia. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_CHANNEL_EXAMPLE"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":false,"description":"Editar publicação de texto ou mídia. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":65536},"type":{"type":"string","enum":["image","video","gif","ptv","audio","ptt","document","sticker"]},"url":{"type":"string","minLength":1,"maxLength":8192,"format":"uri","example":"https://example.com/novidades.jpg"},"base64":{"type":"string","minLength":1,"maxLength":44739248},"caption":{"type":"string","maxLength":65536},"mimetype":{"type":"string","minLength":1,"maxLength":128},"fileName":{"type":"string","minLength":1,"maxLength":256},"seconds":{"type":"integer","minimum":0,"maximum":86400},"width":{"type":"integer","minimum":1,"maximum":8192},"height":{"type":"integer","minimum":1,"maximum":8192}},"additionalProperties":false,"oneOf":[{"required":["text"]},{"required":["type"]}]},"example":{"text":"Texto atualizado"}}}},"x-mvo-channel-operation":"channel.edit"},"delete":{"operationId":"client_resource_channel_revoke","summary":"Revogar publicação","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Revogar publicação. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_CHANNEL_EXAMPLE"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-channel-operation":"channel.revoke"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/{serverId}/reaction":{"put":{"operationId":"client_resource_channel_react","summary":"Reagir a uma publicação","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Reagir a uma publicação. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"serverId","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Reagir a uma publicação. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"emoji":{"type":"string","maxLength":128},"revoke":{"type":"boolean","default":false}},"required":["emoji"],"additionalProperties":false},"example":{"emoji":"👍"}}}},"x-mvo-channel-operation":"channel.react"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/{serverId}/votes":{"post":{"operationId":"client_resource_channel_vote","summary":"Votar na enquete ou remover voto com lista vazia","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Votar na enquete ou remover voto com lista vazia. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"serverId","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Votar na enquete ou remover voto com lista vazia. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"votes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64,"pattern":"^(?:[a-fA-F0-9]{64}|[A-Za-z0-9+/]{43}=)$"},"minItems":0,"maxItems":12,"uniqueItems":true},"contentType":{"type":"string","minLength":1,"maxLength":64}},"required":["votes"],"additionalProperties":false},"example":{"votes":["AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="]}}}},"x-mvo-channel-operation":"channel.vote"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/{serverId}/voters":{"get":{"operationId":"client_resource_channel_poll_voters","summary":"Consultar votos da enquete","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar votos da enquete. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"serverId","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"voteHash","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"example":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50}}],"x-mvo-channel-operation":"channel.poll-voters"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/{serverId}/reactions":{"get":{"operationId":"client_resource_channel_reaction_senders","summary":"Consultar autores de reações","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar autores de reações. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"serverId","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-channel-operation":"channel.reaction-senders"}},"/v1/instances/cliente-01/channels/{channel_id}/views":{"post":{"operationId":"client_resource_channel_views","summary":"Enviar recibos de visualização","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Enviar recibos de visualização. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar recibos de visualização. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"serverIds":{"type":"array","items":{"type":"integer","minimum":1,"maximum":9007199254740991},"minItems":1,"maxItems":1000,"uniqueItems":true}},"required":["serverIds"],"additionalProperties":false},"example":{"serverIds":[1,2]}}}},"x-mvo-channel-operation":"channel.views"}},"/v1/instances/cliente-01/channels/{channel_id}/live":{"post":{"operationId":"client_resource_channel_live","summary":"Assinar atualizações ao vivo","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Assinar atualizações ao vivo. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-channel-operation":"channel.live"}},"/v1/instances/cliente-01/channels/{channel_id}/pinned-posts":{"put":{"operationId":"client_resource_channel_pin","summary":"Fixar publicações","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Fixar publicações. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Fixar publicações. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"serverIds":{"type":"array","items":{"type":"integer","minimum":1,"maximum":9007199254740991},"minItems":1,"maxItems":10,"uniqueItems":true}},"required":["serverIds"],"additionalProperties":false},"example":{"serverIds":[1,2]}}}},"x-mvo-channel-operation":"channel.pin"},"delete":{"operationId":"client_resource_channel_unpin","summary":"Desafixar publicações","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Desafixar publicações. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Desafixar publicações. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"serverIds":{"type":"array","items":{"type":"integer","minimum":1,"maximum":9007199254740991},"minItems":1,"maxItems":10,"uniqueItems":true}},"required":["serverIds"],"additionalProperties":false},"example":{"serverIds":[1,2]}}}},"x-mvo-channel-operation":"channel.unpin"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/{serverId}/labels/paid-partnership":{"post":{"operationId":"client_resource_channel_paid_partnership","summary":"Identificar parceria paga","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Identificar parceria paga. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"serverId","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":false,"description":"Identificar parceria paga. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"messageType":{"type":"string","enum":["MESSAGE","STATUS"],"default":"MESSAGE"}},"additionalProperties":false},"example":{"messageType":"MESSAGE"}}}},"x-mvo-channel-operation":"channel.paid-partnership"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/{serverId}/labels/ai-content":{"post":{"operationId":"client_resource_channel_ai_content","summary":"Identificar conteúdo de IA","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Identificar conteúdo de IA. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"serverId","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":false,"description":"Identificar conteúdo de IA. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"messageType":{"type":"string","enum":["MESSAGE","STATUS"],"default":"MESSAGE"}},"additionalProperties":false},"example":{"messageType":"MESSAGE"}}}},"x-mvo-channel-operation":"channel.ai-content"}},"/v1/instances/cliente-01/channels/{channel_id}/statuses":{"get":{"operationId":"client_resource_channel_statuses","summary":"Consultar publicações temporárias do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consultar publicações temporárias do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"count","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"after","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"viewRole","in":"query","required":false,"schema":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"}}],"x-mvo-channel-operation":"channel.statuses"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/questions":{"post":{"operationId":"client_resource_channel_send_question","summary":"Publicar pergunta no canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Publicar pergunta no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar pergunta no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":65536},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"}},"required":["text"],"additionalProperties":false},"example":{"text":"Qual assunto você quer ver aqui?"}}}},"x-mvo-channel-operation":"channel.send-question"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/{serverId}/questions/responses/{responseServerId}/reshare":{"post":{"operationId":"client_resource_channel_reshare_question","summary":"Recompartilhar resposta observada de pergunta","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Recompartilhar resposta observada de pergunta. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"serverId","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":2147483647,"example":1}},{"name":"responseServerId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"example":"MVO_RESPONSE_EXAMPLE"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Recompartilhar resposta observada de pergunta. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"question_message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:[A-Za-z0-9_-]{1,128}|server:[1-9][0-9]{0,17}|response:[A-Za-z0-9_-]{1,119})$","example":"MVO_CHANNEL_EXAMPLE"},"response_message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:[A-Za-z0-9_-]{1,128}|server:[1-9][0-9]{0,17}|response:[A-Za-z0-9_-]{1,119})$","example":"MVO_CHANNEL_EXAMPLE"},"text":{"type":"string","minLength":1,"maxLength":65536},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"}},"required":["question_message_id","response_message_id","text"],"additionalProperties":false},"example":{"question_message_id":"server:1","response_message_id":"MVO_RESPONSE_CLIENT_ID","text":"Resposta da comunidade"}}}},"x-mvo-channel-operation":"channel.reshare-question"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/{serverId}/questions/responses":{"post":{"operationId":"client_resource_channel_respond_question","summary":"Responder pergunta do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Responder pergunta do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"serverId","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Responder pergunta do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":65536},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"}},"required":["text"],"additionalProperties":false},"example":{"text":"Sugiro dicas de tecnologia"}}}},"x-mvo-channel-operation":"channel.respond-question"}},"/v1/instances/cliente-01/channels/{channel_id}/posts/poll-results":{"post":{"operationId":"client_resource_channel_send_poll_snapshot","summary":"Publicar resultado de enquete","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Publicar resultado de enquete. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. Usa a conexão da instância. Permissões são verificadas pelo WhatsApp; HTTP 202 fornece um job para acompanhar o resultado.","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar resultado de enquete. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"pollVotes":{"type":"array","items":{"type":"object","properties":{"optionName":{"type":"string","minLength":1,"maxLength":100},"optionVoteCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["optionName","optionVoteCount"],"additionalProperties":false},"minItems":1,"maxItems":12,"uniqueItems":true},"version3":{"type":"boolean","default":false},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"}},"required":["name","pollVotes"],"additionalProperties":false},"example":{"name":"Resultado","pollVotes":[{"optionName":"Novidades","optionVoteCount":10}],"version3":false}}}},"x-mvo-channel-operation":"channel.send-poll-snapshot"}},"/v1/instances/cliente-01/operations/bot.list":{"get":{"operationId":"client_operation_bot_list","summary":"bot.list","tags":["bot"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta bot.list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Lista os bots e personas disponíveis para esta conta.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"bot.list"}},"/v1/instances/cliente-01/operations/bot.profile":{"get":{"operationId":"client_operation_bot_profile","summary":"bot.profile","tags":["bot"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta bot.profile. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consulta o perfil de um bot disponibilizado pela conta.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"jid","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"JID numérico terminado em @bot ou @s.whatsapp.net.","pattern":"^\\d+@(?:bot|s\\.whatsapp\\.net)$","example":"867051314767696@bot"},"description":"JID numérico terminado em @bot ou @s.whatsapp.net."},{"name":"persona_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"ID opcional da persona."},"description":"ID opcional da persona."}],"x-mvo-operation":"bot.profile"}},"/v1/instances/cliente-01/operations/bot.response":{"get":{"operationId":"client_operation_bot_response","summary":"bot.response","tags":["bot"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta bot.response. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consulta a resposta de um prompt desta sessão pelo message_id do caminho ou query.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"message_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$","description":"ID real da mensagem recebida/enviada.","example":"3EB01234567890ABCDEF"},"description":"ID real da mensagem recebida/enviada."}],"x-mvo-operation":"bot.response"}},"/v1/instances/cliente-01/operations/bot.send":{"post":{"operationId":"client_operation_bot_send","summary":"bot.send","tags":["bot"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa bot.send. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Envia um prompt. A resposta inicial confirma o envio e pode permanecer pending; consulte bot.response pelo ID da mensagem ou acompanhe os eventos. Campos aguardar_resposta e timeout_ms não são implementados. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Envia um prompt. A resposta inicial confirma o envio e pode permanecer pending; consulte bot.response pelo ID da mensagem ou acompanhe os eventos. Campos aguardar_resposta e timeout_ms não são implementados.","content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":65536,"description":"Pergunta/texto enviado ao bot."},"bot_jid":{"type":"string","minLength":1,"maxLength":200,"description":"Bot opcional; omita para usar o bot padrão descoberto na conta.","pattern":"^\\d+@(?:bot|s\\.whatsapp\\.net)$"},"persona_id":{"type":"string","minLength":1,"maxLength":200,"description":"Persona opcional; omita para usar a persona descoberta."},"ai_thread_id":{"type":"string","minLength":1,"maxLength":200,"description":"ID retornado anteriormente para continuar a conversa com o bot."}},"required":["prompt"],"additionalProperties":false},"example":{"prompt":"Como organizar o atendimento da minha empresa?"}}}},"x-mvo-operation":"bot.send"}},"/v1/instances/cliente-01/operations/business.broadcast-list-delete":{"delete":{"operationId":"client_operation_business_broadcast_list_delete","summary":"Excluir lista comercial","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.broadcast-list-delete. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Exclui lista comercial sincronizada pelo ID da rota; endpoint genérico usa _params.id.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Exclui lista comercial sincronizada pelo ID da rota; endpoint genérico usa _params.id.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","example":"RESOURCE_ID"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"id":"RESOURCE_ID"}}}}},"x-mvo-operation":"business.broadcast-list-delete"}},"/v1/instances/cliente-01/operations/business.broadcast-list-save":{"post":{"operationId":"client_operation_business_broadcast_list_save","summary":"Criar ou editar lista comercial com LIDs","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.broadcast-list-save. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Salva lista comercial sincronizada, sem enviar mensagens em massa. ID da rota, id ou _params.id. Se algum telefone não tiver LID confirmado, a lista não é alterada. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Salva lista comercial sincronizada, sem enviar mensagens em massa. ID da rota, id ou _params.id. Se algum telefone não tiver LID confirmado, a lista não é alterada.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":128,"example":"mvo-clientes","description":"Identificador da lista comercial; pode vir da rota."},"listName":{"type":"string","minLength":1,"maxLength":100},"participants":{"type":"array","items":{"oneOf":[{"type":"string","example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI/JID individual. Telefones são resolvidos para LID pelo WhatsApp antes da alteração."},{"type":"object","properties":{"lidJid":{"type":"string","pattern":"^[0-9]+@lid$","example":"123456789@lid","description":"LID verdadeiro retornado pelo WhatsApp."},"pnJid":{"type":"string","pattern":"^[0-9]+@s\\.whatsapp\\.net$","example":"5511999999999@s.whatsapp.net","description":"Telefone correspondente, quando conhecido."}},"additionalProperties":false,"required":["lidJid"]}]},"minItems":1,"maxItems":256},"recipients":{"type":"array","items":{"oneOf":[{"type":"string","example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI/JID individual. Telefones são resolvidos para LID pelo WhatsApp antes da alteração."},{"type":"object","properties":{"lidJid":{"type":"string","pattern":"^[0-9]+@lid$","example":"123456789@lid","description":"LID verdadeiro retornado pelo WhatsApp."},"pnJid":{"type":"string","pattern":"^[0-9]+@s\\.whatsapp\\.net$","example":"5511999999999@s.whatsapp.net","description":"Telefone correspondente, quando conhecido."}},"additionalProperties":false,"required":["lidJid"]}]},"minItems":1,"maxItems":256,"description":"Alias de participants; não enviar ambos."},"labelIds":{"type":"array","items":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","maxLength":10,"example":"1","description":"ID de etiqueta como texto entre 1 e 2147483647. Pode vir da rota."},"minItems":0,"maxItems":100,"uniqueItems":true}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["participants"]},{"required":["recipients"]}]},{"not":{"required":["participants","recipients"]}}],"required":["listName"]},"example":{"id":"mvo-clientes","listName":"Clientes MVO","participants":["5511999999999@s.whatsapp.net"],"labelIds":[]}}}},"x-mvo-operation":"business.broadcast-list-save"}},"/v1/instances/cliente-01/operations/business.broadcast-lists":{"get":{"operationId":"client_operation_business_broadcast_lists","summary":"Listar listas comerciais sincronizadas","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta business.broadcast-lists. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Leitura local já sincronizada da sessão (source=session_app_state). Paginação pelo ID next.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":128,"description":"ID next da página anterior."},"description":"ID next da página anterior."}],"x-mvo-operation":"business.broadcast-lists"}},"/v1/instances/cliente-01/operations/business.cart-refresh":{"post":{"operationId":"client_operation_business_cart_refresh","summary":"Atualizar carrinho pelo contrato comercial avançado","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.cart-refresh. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Checkout avançado; até 64 KiB e 16 níveis. Para ativar/desativar o carrinho use product.cart-set. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Checkout avançado; até 64 KiB e 16 níveis. Para ativar/desativar o carrinho use product.cart-set.","content":{"application/json":{"schema":{"type":"object","properties":{"request":{"type":"object","properties":{"cart":{"type":"object","properties":{"products":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"quantity":{"oneOf":[{"type":"integer","minimum":1,"maximum":999999},{"type":"string","pattern":"^[1-9][0-9]{0,5}$"}],"description":"Quantidade positiva no checkout.","example":1}},"additionalProperties":true,"description":"Item nativo de checkout: id obrigatório, quantity opcional; extensões nativas são preservadas.","required":["id"]},"minItems":1,"maxItems":100}},"additionalProperties":true,"description":"Exemplo de carrinho nativo; campos comerciais adicionais dependem do contrato da conta."}},"additionalProperties":true,"minProperties":1,"description":"Registro avançado BizGraphQLRefreshCart repassado ao WhatsApp. O exemplo foi validado em transporte local; não inventa campos remotos obrigatórios. Aceitação depende da conta e da versão do WhatsApp."}},"additionalProperties":false,"required":["request"]},"example":{"request":{"cart":{"products":[{"id":"987","quantity":1}]}}}}}},"x-mvo-operation":"business.cart-refresh"}},"/v1/instances/cliente-01/operations/business.categories":{"get":{"operationId":"client_operation_business_categories","summary":"Buscar categorias comerciais e subcategorias","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta business.categories. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente.   O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"query","in":"query","required":false,"schema":{"type":"string","maxLength":256,"default":"","example":"hospedagem","description":"Texto de busca; aceita vazio."},"description":"Texto de busca; aceita vazio."},{"name":"locale","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2,3}_[A-Z]{2}$","maxLength":16,"default":"pt_BR","example":"pt_BR"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","enum":["V_1","V_2"],"default":"V_2"}}],"x-mvo-operation":"business.categories"}},"/v1/instances/cliente-01/operations/business.cover-delete":{"delete":{"operationId":"client_operation_business_cover_delete","summary":"Remover capa comercial","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.cover-delete. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Remove a capa pelo ID da rota. No endpoint genérico informe _params.id; não precisa de imagem ou token de upload.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Remove a capa pelo ID da rota. No endpoint genérico informe _params.id; não precisa de imagem ou token de upload.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","example":"RESOURCE_ID"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"id":"RESOURCE_ID"}}}}},"x-mvo-operation":"business.cover-delete"}},"/v1/instances/cliente-01/operations/business.cover-set":{"put":{"operationId":"client_operation_business_cover_set","summary":"Enviar e aplicar capa comercial","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.cover-set. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Envie image (URL, data URI, objeto url ou base64), ou url/base64 diretamente no corpo. Só aplica a capa após upload confirmado.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Envie image (URL, data URI, objeto url ou base64), ou url/base64 diretamente no corpo. Só aplica a capa após upload confirmado.","content":{"application/json":{"schema":{"type":"object","properties":{"image":{"oneOf":[{"type":"string","minLength":1,"example":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII=","description":"URL HTTPS pública ou data:image/png;base64,...; não aceita caminho local."},{"type":"object","properties":{"url":{"type":"string","pattern":"^https://","maxLength":8192,"example":"https://seu-dominio.example/imagens/produto.png","description":"URL HTTPS pública na porta 443, sem credenciais nem fragmento. Não aceita arquivos locais ou redes privadas."}},"additionalProperties":false,"required":["url"]},{"type":"object","properties":{"base64":{"type":"string","minLength":1,"example":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII=","description":"Bytes completos da imagem em base64. JPEG, PNG ou WebP; até 8192 por eixo e 16777216 pixels. Respeite o limite de mídia configurado."}},"additionalProperties":false,"required":["base64"]}]},"url":{"type":"string","pattern":"^https://","maxLength":8192,"example":"https://seu-dominio.example/imagens/produto.png","description":"URL HTTPS pública na porta 443, sem credenciais nem fragmento. Não aceita arquivos locais ou redes privadas."},"base64":{"type":"string","minLength":1,"example":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII=","description":"Bytes completos da imagem em base64. JPEG, PNG ou WebP; até 8192 por eixo e 16777216 pixels. Respeite o limite de mídia configurado."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["image"]},{"required":["url"]},{"required":["base64"]}]}]},"example":{"image":{"base64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII="}}}}},"x-mvo-operation":"business.cover-set"}},"/v1/instances/cliente-01/operations/business.labels-chat":{"put":{"operationId":"client_operation_business_labels_chat","summary":"Adicionar ou remover etiqueta na conversa","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.labels-chat. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Etiqueta vem da rota, id, labelId, etiqueta_id ou _params.id. A alteração exige confirmação de sincronização.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Etiqueta vem da rota, id, labelId, etiqueta_id ou _params.id. A alteração exige confirmação de sincronização.","content":{"application/json":{"schema":{"type":"object","properties":{"labelId":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","maxLength":10,"example":"1","description":"Alias de id para a etiqueta."},"etiqueta_id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","maxLength":10,"example":"1","description":"Alias legado de labelId."},"jid":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"numero":{"type":"string","example":"5511999999999","description":"Alias de jid."},"added":{"type":"boolean","description":"true adiciona a associação; false remove."},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","description":"ID numérico positivo da etiqueta, até 2147483647.","example":"1"}},"additionalProperties":false}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["jid"]},{"required":["numero"]}]}],"required":["added","_params"]},"example":{"jid":"5511999999999@s.whatsapp.net","added":true,"_params":{"id":"1"}}}}},"x-mvo-operation":"business.labels-chat"}},"/v1/instances/cliente-01/operations/business.labels-chat-get":{"get":{"operationId":"client_operation_business_labels_chat_get","summary":"Consultar etiquetas de uma conversa","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta business.labels-chat-get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Informe jid (ou numero) para a conversa sincronizada.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"jid","in":"query","required":true,"schema":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"description":"Telefone com DDI ou JID individual."},{"name":"numero","in":"query","required":false,"schema":{"type":"string","example":"5511999999999","description":"Alias de jid."},"description":"Alias de jid."}],"x-mvo-operation":"business.labels-chat-get"}},"/v1/instances/cliente-01/operations/business.labels-create":{"post":{"operationId":"client_operation_business_labels_create","summary":"Criar etiqueta comercial","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.labels-create. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Omita id para gerar o próximo ID disponível. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Omita id para gerar o próximo ID disponível.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","maxLength":10,"example":"1","description":"ID de etiqueta como texto entre 1 e 2147483647. Pode vir da rota."},"name":{"type":"string","minLength":1,"maxLength":100},"color":{"type":"integer","minimum":0,"maximum":19,"example":3,"description":"Índice da paleta de etiquetas (0 a 19)."}},"additionalProperties":false,"required":["name","color"]},"example":{"name":"Clientes MVO","color":3}}}},"x-mvo-operation":"business.labels-create"}},"/v1/instances/cliente-01/operations/business.labels-delete":{"delete":{"operationId":"client_operation_business_labels_delete","summary":"Excluir etiqueta e suas associações","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.labels-delete. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Exclui etiqueta e suas associações. No endpoint genérico informe _params.id.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Exclui etiqueta e suas associações. No endpoint genérico informe _params.id.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","description":"ID numérico positivo da etiqueta, até 2147483647.","example":"1"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"id":"1"}}}}},"x-mvo-operation":"business.labels-delete"}},"/v1/instances/cliente-01/operations/business.labels-get":{"get":{"operationId":"client_operation_business_labels_get","summary":"Consultar etiqueta sincronizada","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta business.labels-get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consulta ID da rota no estado sincronizado desta sessão. No endpoint genérico informe _params.id.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"id","in":"query","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","description":"ID numérico positivo da etiqueta, até 2147483647.","example":"1"},"description":"ID numérico positivo da etiqueta, até 2147483647."}],"x-mvo-operation":"business.labels-get"}},"/v1/instances/cliente-01/operations/business.labels-list":{"get":{"operationId":"client_operation_business_labels_list","summary":"Listar etiquetas sincronizadas","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta business.labels-list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Leitura local já sincronizada da sessão (source=session_app_state). Paginação pelo ID next.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":128,"description":"ID next da página anterior."},"description":"ID next da página anterior."}],"x-mvo-operation":"business.labels-list"}},"/v1/instances/cliente-01/operations/business.labels-message":{"put":{"operationId":"client_operation_business_labels_message","summary":"Adicionar ou remover etiqueta na mensagem","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.labels-message. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Etiqueta vem da rota, id, labelId, etiqueta_id ou _params.id. A alteração exige confirmação de sincronização.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Etiqueta vem da rota, id, labelId, etiqueta_id ou _params.id. A alteração exige confirmação de sincronização.","content":{"application/json":{"schema":{"type":"object","properties":{"labelId":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","maxLength":10,"example":"1","description":"Alias de id para a etiqueta."},"etiqueta_id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","maxLength":10,"example":"1","description":"Alias legado de labelId."},"jid":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"numero":{"type":"string","example":"5511999999999","description":"Alias de jid."},"added":{"type":"boolean","description":"true adiciona a associação; false remove."},"messageId":{"type":"string","minLength":1,"maxLength":128,"example":"3EB0123456789ABCDEF012","description":"ID real da mensagem; não é o cursor do evento."},"idMsg":{"type":"string","minLength":1,"maxLength":128,"example":"3EB0123456789ABCDEF012","description":"Alias de messageId."},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","description":"ID numérico positivo da etiqueta, até 2147483647.","example":"1"}},"additionalProperties":false}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["jid"]},{"required":["numero"]}]},{"anyOf":[{"required":["messageId"]},{"required":["idMsg"]}]}],"required":["added","_params"]},"example":{"jid":"5511999999999@s.whatsapp.net","added":true,"messageId":"3EB0123456789ABCDEF012","_params":{"id":"1"}}}}},"x-mvo-operation":"business.labels-message"}},"/v1/instances/cliente-01/operations/business.labels-message-get":{"get":{"operationId":"client_operation_business_labels_message_get","summary":"Consultar etiquetas de uma mensagem","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta business.labels-message-get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Informe jid (ou numero) e messageId para a mensagem sincronizada.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"jid","in":"query","required":true,"schema":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"description":"Telefone com DDI ou JID individual."},{"name":"messageId","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"example":"3EB0123456789ABCDEF012","description":"ID real da mensagem; não é o cursor do evento."},"description":"ID real da mensagem; não é o cursor do evento."},{"name":"numero","in":"query","required":false,"schema":{"type":"string","example":"5511999999999","description":"Alias de jid."},"description":"Alias de jid."}],"x-mvo-operation":"business.labels-message-get"}},"/v1/instances/cliente-01/operations/business.labels-update":{"patch":{"operationId":"client_operation_business_labels_update","summary":"Editar etiqueta","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.labels-update. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Atualiza somente os campos informados de uma etiqueta existente.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Atualiza somente os campos informados de uma etiqueta existente.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"color":{"type":"integer","minimum":0,"maximum":19,"example":3,"description":"Índice da paleta de etiquetas (0 a 19)."},"predefinedId":{"type":"integer","minimum":0,"maximum":2147483647},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,9}$","description":"ID numérico positivo da etiqueta, até 2147483647.","example":"1"}},"additionalProperties":false}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["name"]},{"required":["color"]},{"required":["predefinedId"]}]}],"required":["_params"]},"example":{"name":"Cliente ativo","color":4,"_params":{"id":"1"}}}}},"x-mvo-operation":"business.labels-update"}},"/v1/instances/cliente-01/operations/business.order-create":{"post":{"operationId":"client_operation_business_order_create","summary":"Criar pedido de catálogo","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.order-create. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Cria pedido pelo checkout. Disponibilidade remota e extensões dependem do WhatsApp. JSON comercial limitado a 64 KiB e 16 níveis. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Cria pedido pelo checkout. Disponibilidade remota e extensões dependem do WhatsApp. JSON comercial limitado a 64 KiB e 16 níveis.","content":{"application/json":{"schema":{"type":"object","properties":{"jid":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"numero":{"type":"string","example":"5511999999999","description":"Alias de jid."},"products":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"quantity":{"oneOf":[{"type":"integer","minimum":1,"maximum":999999},{"type":"string","pattern":"^[1-9][0-9]{0,5}$"}],"description":"Quantidade positiva no checkout.","example":1}},"additionalProperties":true,"description":"Item nativo de checkout: id obrigatório, quantity opcional; extensões nativas são preservadas.","required":["id"]},"minItems":1,"maxItems":100}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["jid"]},{"required":["numero"]}]}],"required":["products"]},"example":{"jid":"5511999999999@s.whatsapp.net","products":[{"id":"987","quantity":1}]}}}},"x-mvo-operation":"business.order-create"}},"/v1/instances/cliente-01/operations/business.order-get":{"post":{"operationId":"client_operation_business_order_get","summary":"Consultar pedido usando token no corpo","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.order-get. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Consulta pedido pelo ID da rota, id ou _params.id. Omita jid para a própria conta. POST mantém o token do pedido no corpo JSON, fora da URL.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Consulta pedido pelo ID da rota, id ou _params.id. Omita jid para a própria conta.","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":8192,"example":"TOKEN_DO_PEDIDO_RETORNADO_PELO_WHATSAPP","description":"Token retornado pelo WhatsApp; enviar no corpo, nunca na query."},"jid":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"owner":{"type":"string","example":"5511999999999@s.whatsapp.net","description":"Alias de jid. Omita para usar a própria conta."},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."}},"additionalProperties":false}},"additionalProperties":false,"required":["token","_params"]},"example":{"token":"ORDER_TOKEN","_params":{"id":"987"}}}}},"x-mvo-operation":"business.order-get"}},"/v1/instances/cliente-01/operations/business.profile-get":{"get":{"operationId":"client_operation_business_profile_get","summary":"Consultar perfil comercial","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta business.profile-get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente.   O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"jid","in":"query","required":false,"schema":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"description":"Telefone com DDI ou JID individual."},{"name":"owner","in":"query","required":false,"schema":{"type":"string","example":"5511999999999@s.whatsapp.net","description":"Alias de jid. Omita para usar a própria conta."},"description":"Alias de jid. Omita para usar a própria conta."}],"x-mvo-operation":"business.profile-get"}},"/v1/instances/cliente-01/operations/business.profile-set":{"patch":{"operationId":"client_operation_business_profile_set","summary":"Editar endereço, horários e perfil comercial","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.profile-set. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Atualização parcial da própria conta. Envie ao menos um campo; obtenha categorias em business.categories. Escolha hours ou businessHours.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Atualização parcial da própria conta. Envie ao menos um campo; obtenha categorias em business.categories. Escolha hours ou businessHours.","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","maxLength":512,"description":"Texto vazio limpa."},"email":{"type":"string","maxLength":254,"example":"contato@mvo.host","description":"E-mail válido ou vazio para limpar."},"description":{"type":"string","maxLength":4096,"description":"Texto vazio limpa."},"websites":{"type":"array","items":{"type":"string","maxLength":2048,"example":"https://www.mvo.host","description":"URL HTTP/HTTPS sem credenciais."},"minItems":0,"maxItems":2},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"categories":{"type":"array","items":{"oneOf":[{"type":"string","minLength":1,"maxLength":128,"example":"123456789","description":"ID obtido em business.categories."},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":128}},"additionalProperties":false,"required":["id"]}]},"minItems":0,"maxItems":3},"hours":{"type":"object","properties":{"timezone":{"type":"string","minLength":1,"maxLength":100,"example":"America/Sao_Paulo","description":"Fuso válido para PHP DateTimeZone."},"days":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string","enum":["mon","tue","wed","thu","fri","sat","sun","monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"mode":{"type":"string","enum":["closed","open_24h","specific_hours","appointment_only"]},"open":{"type":"string","pattern":"^(?:[01][0-9]|2[0-3]):[0-5][0-9]$","example":"08:00","description":"Obrigatório em specific_hours; HH:MM."},"close":{"type":"string","pattern":"^(?:(?:[01][0-9]|2[0-3]):[0-5][0-9]|24:00)$","example":"18:00","description":"Obrigatório em specific_hours; permite 24:00."}},"additionalProperties":false,"required":["day","mode"],"allOf":[{"anyOf":[{"properties":{"mode":{"enum":["specific_hours"]}},"required":["open","close"]},{"properties":{"mode":{"enum":["closed","open_24h","appointment_only"]}}}]}]},"minItems":0,"maxItems":32}},"additionalProperties":false,"description":"Formato prático; múltiplos intervalos no mesmo dia. specific_hours exige open e close; closed remove o dia.","required":["timezone","days"]},"businessHours":{"type":"object","properties":{"timezone":{"type":"string","minLength":1,"maxLength":100,"example":"America/Sao_Paulo","description":"Fuso válido para PHP DateTimeZone."},"config":{"type":"array","items":{"type":"object","properties":{"dayOfWeek":{"type":"string","enum":["mon","tue","wed","thu","fri","sat","sun"]},"mode":{"type":"string","enum":["closed","open_24h","specific_hours","appointment_only"]},"openTime":{"type":"integer","minimum":0,"maximum":1439,"description":"Obrigatório em specific_hours; minutos após meia-noite.","example":480},"closeTime":{"type":"integer","minimum":0,"maximum":1440,"description":"Obrigatório em specific_hours; 1440 representa 24:00.","example":1080}},"additionalProperties":false,"required":["dayOfWeek","mode"],"allOf":[{"anyOf":[{"properties":{"mode":{"enum":["specific_hours"]}},"required":["openTime","closeTime"]},{"properties":{"mode":{"enum":["closed","open_24h","appointment_only"]}}}]}]},"minItems":0,"maxItems":32}},"additionalProperties":false,"description":"Alternativa nativa em minutos. Não enviar junto com hours.","required":["timezone","config"]}},"additionalProperties":false,"minProperties":1,"allOf":[{"not":{"required":["hours","businessHours"]}}]},"example":{"description":"Atendimento MVO","email":"contato@mvo.host","websites":["https://www.mvo.host"],"hours":{"timezone":"America/Sao_Paulo","days":[{"day":"mon","mode":"specific_hours","open":"08:00","close":"12:00"},{"day":"mon","mode":"specific_hours","open":"14:00","close":"18:00"}]}}}}},"x-mvo-operation":"business.profile-set"}},"/v1/instances/cliente-01/operations/business.quick-replies-delete":{"delete":{"operationId":"client_operation_business_quick_replies_delete","summary":"Excluir resposta rápida","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.quick-replies-delete. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Exclui resposta rápida existente pelo ID da rota; endpoint genérico usa _params.id.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Exclui resposta rápida existente pelo ID da rota; endpoint genérico usa _params.id.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,18}$","description":"ID numérico positivo da resposta rápida (até 19 dígitos).","example":"1700000000000001"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"id":"1700000000000001"}}}}},"x-mvo-operation":"business.quick-replies-delete"}},"/v1/instances/cliente-01/operations/business.quick-replies-get":{"get":{"operationId":"client_operation_business_quick_replies_get","summary":"Consultar resposta rápida","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta business.quick-replies-get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consulta ID da rota no estado sincronizado desta sessão. No endpoint genérico informe _params.id.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"id","in":"query","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]{0,18}$","description":"ID numérico positivo da resposta rápida (até 19 dígitos).","example":"1700000000000001"},"description":"ID numérico positivo da resposta rápida (até 19 dígitos)."}],"x-mvo-operation":"business.quick-replies-get"}},"/v1/instances/cliente-01/operations/business.quick-replies-list":{"get":{"operationId":"client_operation_business_quick_replies_list","summary":"Listar respostas rápidas sincronizadas","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta business.quick-replies-list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Leitura local já sincronizada da sessão (source=session_app_state). Paginação pelo ID next.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":128,"description":"ID next da página anterior."},"description":"ID next da página anterior."}],"x-mvo-operation":"business.quick-replies-list"}},"/v1/instances/cliente-01/operations/business.quick-replies-save":{"post":{"operationId":"client_operation_business_quick_replies_save","summary":"Criar ou editar resposta rápida","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.quick-replies-save. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Cria/atualiza pelo ID da rota, id ou _params.id. Nova resposta exige shortcut e message; atualizações preservam campos omitidos. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Cria/atualiza pelo ID da rota, id ou _params.id. Nova resposta exige shortcut e message; atualizações preservam campos omitidos.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"^[1-9][0-9]{0,18}$","example":"1700000000000001","description":"ID de resposta rápida como inteiro positivo em texto; pode vir da rota."},"shortcut":{"type":"string","minLength":1,"maxLength":64,"example":"planos","description":"Obrigatório na criação; opcional na atualização."},"message":{"type":"string","minLength":1,"maxLength":4096,"example":"Conheça os planos em https://www.mvo.host","description":"Obrigatório na criação; opcional na atualização."},"keywords":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"minItems":0,"maxItems":20,"uniqueItems":true},"count":{"type":"integer","minimum":0,"maximum":2147483647,"default":0},"deleted":{"type":"boolean","default":false,"description":"Marca como excluída. Para exclusão simples use quick-replies-delete."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["shortcut"]},{"required":["message"]},{"required":["keywords"]},{"required":["count"]},{"required":["deleted"]}]}]},"example":{"id":"1700000000000001","shortcut":"planos","message":"Conheça os planos em https://www.mvo.host","keywords":["hospedagem"]}}}},"x-mvo-operation":"business.quick-replies-save"}},"/v1/instances/cliente-01/operations/business.verified-name":{"get":{"operationId":"client_operation_business_verified_name","summary":"Consultar nome comercial verificado","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta business.verified-name. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente.   O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"jid","in":"query","required":false,"schema":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"description":"Telefone com DDI ou JID individual."},{"name":"owner","in":"query","required":false,"schema":{"type":"string","example":"5511999999999@s.whatsapp.net","description":"Alias de jid. Omita para usar a própria conta."},"description":"Alias de jid. Omita para usar a própria conta."}],"x-mvo-operation":"business.verified-name"}},"/v1/instances/cliente-01/operations/business.verified-names":{"post":{"operationId":"client_operation_business_verified_names","summary":"Consultar nomes comerciais em lote","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa business.verified-names. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente.  POST permite consultar um lote de contatos no corpo JSON.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"JSON aceito pela operação.","content":{"application/json":{"schema":{"type":"object","properties":{"jids":{"type":"array","items":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"minItems":1,"maxItems":100}},"additionalProperties":false,"required":["jids"]},"example":{"jids":["5511999999999@s.whatsapp.net"]}}}},"x-mvo-operation":"business.verified-names"}},"/v1/instances/cliente-01/operations/call.link":{"post":{"operationId":"client_operation_call_link","summary":"call.link","tags":["call"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa call.link. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Indisponível: a criação de link de chamada retorna HTTP 501 unsupported_operation. O corpo é ignorado e nenhuma chamada é criada.  A criação de links de chamada ainda retorna 501.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"call.link"}},"/v1/instances/cliente-01/operations/channel.admin-demote":{"delete":{"operationId":"client_operation_channel_admin_demote","summary":"Remover administrador","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.admin-demote. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Remover administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Remover administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","example":"5511999999999@s.whatsapp.net"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["user","_params"],"additionalProperties":false},"example":{"user":"5511999999999@s.whatsapp.net","_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.admin-demote"}},"/v1/instances/cliente-01/operations/channel.admin-invite-accept":{"post":{"operationId":"client_operation_channel_admin_invite_accept","summary":"Aceitar convite de administrador","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.admin-invite-accept. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Aceitar convite de administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Aceitar convite de administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.admin-invite-accept"}},"/v1/instances/cliente-01/operations/channel.admin-invite-create":{"post":{"operationId":"client_operation_channel_admin_invite_create","summary":"Convidar administrador","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.admin-invite-create. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Convidar administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Convidar administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","example":"5511999999999@s.whatsapp.net"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["user","_params"],"additionalProperties":false},"example":{"user":"5511999999999@s.whatsapp.net","_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.admin-invite-create"}},"/v1/instances/cliente-01/operations/channel.admin-invite-revoke":{"delete":{"operationId":"client_operation_channel_admin_invite_revoke","summary":"Revogar convite de administrador","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.admin-invite-revoke. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Revogar convite de administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Revogar convite de administrador. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","example":"5511999999999@s.whatsapp.net"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["user","_params"],"additionalProperties":false},"example":{"user":"5511999999999@s.whatsapp.net","_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.admin-invite-revoke"}},"/v1/instances/cliente-01/operations/channel.admins":{"get":{"operationId":"client_operation_channel_admins","summary":"Consultar administradores","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.admins. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar administradores. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}}],"x-mvo-operation":"channel.admins"}},"/v1/instances/cliente-01/operations/channel.ai-content":{"post":{"operationId":"client_operation_channel_ai_content","summary":"Identificar conteúdo de IA","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.ai-content. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Identificar conteúdo de IA. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Identificar conteúdo de IA. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"messageType":{"type":"string","enum":["MESSAGE","STATUS"],"default":"MESSAGE"},"_params":{"type":"object","required":["channel_id","serverId"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"messageType":"MESSAGE","_params":{"channel_id":"120363000000000000@newsletter","serverId":1}}}}},"x-mvo-operation":"channel.ai-content"}},"/v1/instances/cliente-01/operations/channel.by-invite":{"get":{"operationId":"client_operation_channel_by_invite","summary":"Consultar canal pelo convite","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.by-invite. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar canal pelo convite. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"invite","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":256,"example":"MVO_CONVITE"}},{"name":"viewRole","in":"query","required":false,"schema":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"}},{"name":"fetchViewerMetadata","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"fetchFullImage","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"fetchCreationTime","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"fetchWamoSub","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-operation":"channel.by-invite"}},"/v1/instances/cliente-01/operations/channel.capabilities":{"get":{"operationId":"client_operation_channel_capabilities","summary":"Consultar permissões","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.capabilities. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar permissões. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}}],"x-mvo-operation":"channel.capabilities"}},"/v1/instances/cliente-01/operations/channel.categories":{"get":{"operationId":"client_operation_channel_categories","summary":"Consultar categorias do diretório","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.categories. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar categorias do diretório. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"categories","in":"query","required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","enum":["BUSINESS","ENTERTAINMENT","LIFESTYLE","NEWS","ORGANIZATIONS","PEOPLE","SPORTS","SPECIAL_EVENTS","SPECIAL_EVENTS_2","SPECIAL_EVENTS_3","SPECIAL_EVENTS_4","SPECIAL_EVENTS_5"]},"minItems":1,"maxItems":100,"uniqueItems":true}}}},{"name":"country","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":2,"pattern":"^[A-Z]{2}$","example":"BR"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10}}],"x-mvo-operation":"channel.categories"}},"/v1/instances/cliente-01/operations/channel.create":{"post":{"operationId":"client_operation_channel_create","summary":"Criar canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.create. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Criar canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Criar canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"example":"Novidades MVO"},"description":{"type":"string","maxLength":2048},"url":{"type":"string","minLength":1,"maxLength":8192,"format":"uri","example":"https://example.com/canal.jpg"},"base64":{"type":"string","minLength":1,"maxLength":11184816,"example":"/9j/4AAQSkZJRgABAQAAAQABAAD="}},"required":["name"],"additionalProperties":false},"example":{"name":"Novidades MVO","description":"Avisos e novidades"}}}},"x-mvo-operation":"channel.create"}},"/v1/instances/cliente-01/operations/channel.dehydrated":{"get":{"operationId":"client_operation_channel_dehydrated","summary":"Consultar metadados reduzidos","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.dehydrated. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar metadados reduzidos. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"key","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":256,"example":"120363000000000000@newsletter"}},{"name":"viewRole","in":"query","required":false,"schema":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"}},{"name":"fetchWamoSub","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-operation":"channel.dehydrated"}},"/v1/instances/cliente-01/operations/channel.delete":{"delete":{"operationId":"client_operation_channel_delete","summary":"Excluir canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.delete. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Excluir canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Excluir canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.delete"}},"/v1/instances/cliente-01/operations/channel.description":{"put":{"operationId":"client_operation_channel_description","summary":"Alterar descrição do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.description. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Alterar descrição do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Alterar descrição do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","maxLength":2048},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["description","_params"],"additionalProperties":false},"example":{"description":"Avisos MVO","_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.description"}},"/v1/instances/cliente-01/operations/channel.directory":{"get":{"operationId":"client_operation_channel_directory","summary":"Listar diretório de canais","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.directory. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Listar diretório de canais. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"view","in":"query","required":true,"schema":{"type":"string","enum":["POPULAR","RECOMMENDED","NEW","FEATURED","TRENDING"]}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"countryCodes","in":"query","required":false,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2,"pattern":"^[A-Z]{2}$","example":"BR"},"minItems":0,"maxItems":100,"uniqueItems":true}}}},{"name":"categories","in":"query","required":false,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","enum":["BUSINESS","ENTERTAINMENT","LIFESTYLE","NEWS","ORGANIZATIONS","PEOPLE","SPORTS","SPECIAL_EVENTS","SPECIAL_EVENTS_2","SPECIAL_EVENTS_3","SPECIAL_EVENTS_4","SPECIAL_EVENTS_5"]},"minItems":0,"maxItems":100,"uniqueItems":true}}}},{"name":"startCursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":4096}}],"x-mvo-operation":"channel.directory"}},"/v1/instances/cliente-01/operations/channel.domains":{"post":{"operationId":"client_operation_channel_domains","summary":"Verificar domínio de prévia","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.domains. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Verificar domínio de prévia. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Verificar domínio de prévia. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"domains":{"type":"array","items":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\\.)+[A-Za-z]{2,63}$"},"minItems":1,"maxItems":100,"uniqueItems":true}},"required":["domains"],"additionalProperties":false},"example":{"domains":["mvo.host"]}}}},"x-mvo-operation":"channel.domains"}},"/v1/instances/cliente-01/operations/channel.edit":{"patch":{"operationId":"client_operation_channel_edit","summary":"Editar publicação de texto ou mídia","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.edit. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Editar publicação de texto ou mídia. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Editar publicação de texto ou mídia. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":65536},"type":{"type":"string","enum":["image","video","gif","ptv","audio","ptt","document","sticker"]},"url":{"type":"string","minLength":1,"maxLength":8192,"format":"uri","example":"https://example.com/novidades.jpg"},"base64":{"type":"string","minLength":1,"maxLength":44739248},"caption":{"type":"string","maxLength":65536},"mimetype":{"type":"string","minLength":1,"maxLength":128},"fileName":{"type":"string","minLength":1,"maxLength":256},"seconds":{"type":"integer","minimum":0,"maximum":86400},"width":{"type":"integer","minimum":1,"maximum":8192},"height":{"type":"integer","minimum":1,"maximum":8192},"_params":{"type":"object","required":["channel_id","message_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_CHANNEL_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"oneOf":[{"required":["text"]},{"required":["type"]}],"required":["_params"]},"example":{"text":"Texto atualizado","_params":{"channel_id":"120363000000000000@newsletter","message_id":"MVO_CHANNEL_EXAMPLE"}}}}},"x-mvo-operation":"channel.edit"}},"/v1/instances/cliente-01/operations/channel.enforcements":{"get":{"operationId":"client_operation_channel_enforcements","summary":"Consultar restrições do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.enforcements. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar restrições do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}}],"x-mvo-operation":"channel.enforcements"}},"/v1/instances/cliente-01/operations/channel.follow":{"put":{"operationId":"client_operation_channel_follow","summary":"Seguir canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.follow. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Seguir canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Seguir canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.follow"}},"/v1/instances/cliente-01/operations/channel.followers":{"get":{"operationId":"client_operation_channel_followers","summary":"Consultar seguidores","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.followers. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar seguidores. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50}}],"x-mvo-operation":"channel.followers"}},"/v1/instances/cliente-01/operations/channel.get":{"get":{"operationId":"client_operation_channel_get","summary":"Consultar canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"viewRole","in":"query","required":false,"schema":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"}},{"name":"fetchViewerMetadata","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"fetchFullImage","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"fetchCreationTime","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"fetchWamoSub","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-operation":"channel.get"}},"/v1/instances/cliente-01/operations/channel.insights":{"post":{"operationId":"client_operation_channel_insights","summary":"Consultar métricas nativas avançadas do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.insights. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Consultar métricas nativas avançadas do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. O formato interno de metrics depende do contrato nativo da conta e não foi observado na referência atual. Não apresentamos um exemplo inventado. Consulte o contrato nativo antes de executar. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Consultar métricas nativas avançadas do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. O formato interno de metrics depende do contrato nativo da conta e não foi observado na referência atual. Não apresentamos um exemplo inventado. Consulte o contrato nativo antes de executar.","content":{"application/json":{"schema":{"type":"object","properties":{"metrics":{"type":"array","items":{"type":"object","additionalProperties":true,"minProperties":1,"description":"Estrutura nativa de métrica determinada pelo WhatsApp. Campos específicos não foram observados na referência atual; esta operação avançada não foi homologada com uma conta real."},"minItems":1,"maxItems":100,"uniqueItems":true},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["metrics","_params"],"additionalProperties":false},"x-mvo-native-contract-unverified":true}}},"x-mvo-operation":"channel.insights"}},"/v1/instances/cliente-01/operations/channel.list":{"get":{"operationId":"client_operation_channel_list","summary":"Listar canais seguidos","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Listar canais seguidos. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"fetchWamoSub","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-operation":"channel.list"}},"/v1/instances/cliente-01/operations/channel.live":{"post":{"operationId":"client_operation_channel_live","summary":"Assinar atualizações ao vivo","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.live. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Assinar atualizações ao vivo. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Assinar atualizações ao vivo. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.live"}},"/v1/instances/cliente-01/operations/channel.media-download":{"post":{"operationId":"client_operation_channel_media_download","summary":"Baixar mídia da publicação observada","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.media-download. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Baixar mídia da publicação observada. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Baixar mídia da publicação observada. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991},"_params":{"type":"object","required":["channel_id","message_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"message_id":{"type":"string","pattern":"^(?:[A-Za-z0-9_-]{1,128}|server:[1-9][0-9]{0,17}|response:[A-Za-z0-9_-]{1,119})$","description":"ID real da mensagem recebida/enviada.","example":"MVO_CHANNEL_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"channel_id":"120363000000000000@newsletter","message_id":"MVO_CHANNEL_EXAMPLE"}}}}},"x-mvo-operation":"channel.media-download"}},"/v1/instances/cliente-01/operations/channel.message-get":{"get":{"operationId":"client_operation_channel_message_get","summary":"Consultar publicação observada","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.message-get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar publicação observada. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"message_id","in":"query","required":true,"schema":{"type":"string","pattern":"^(?:[A-Za-z0-9_-]{1,128}|server:[1-9][0-9]{0,17}|response:[A-Za-z0-9_-]{1,119})$","description":"ID real da mensagem recebida/enviada.","example":"MVO_CHANNEL_EXAMPLE"},"description":"ID real da mensagem recebida/enviada."},{"name":"serverId","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}}],"x-mvo-operation":"channel.message-get"}},"/v1/instances/cliente-01/operations/channel.messages":{"get":{"operationId":"client_operation_channel_messages","summary":"Consultar publicações no WhatsApp","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.messages. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar publicações no WhatsApp. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"after","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"viewRole","in":"query","required":false,"schema":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"}}],"x-mvo-operation":"channel.messages"}},"/v1/instances/cliente-01/operations/channel.messages-local":{"get":{"operationId":"client_operation_channel_messages_local","summary":"Listar publicações observadas localmente","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.messages-local. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Listar publicações observadas localmente. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}}],"x-mvo-operation":"channel.messages-local"}},"/v1/instances/cliente-01/operations/channel.mute":{"put":{"operationId":"client_operation_channel_mute","summary":"Configurar silenciamento do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.mute. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Configurar silenciamento do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Configurar silenciamento do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"muted":{"type":"boolean","default":false},"adminActivity":{"type":"boolean","default":false},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["muted","_params"],"additionalProperties":false},"example":{"muted":true,"adminActivity":false,"_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.mute"}},"/v1/instances/cliente-01/operations/channel.name":{"put":{"operationId":"client_operation_channel_name","summary":"Alterar nome do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.name. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Alterar nome do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Alterar nome do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"example":"Novidades MVO"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["name","_params"],"additionalProperties":false},"example":{"name":"Novidades MVO","_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.name"}},"/v1/instances/cliente-01/operations/channel.owner-transfer":{"post":{"operationId":"client_operation_channel_owner_transfer","summary":"Transferir propriedade","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.owner-transfer. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Transferir propriedade. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Transferir propriedade. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","example":"5511999999999@s.whatsapp.net"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["user","_params"],"additionalProperties":false},"example":{"user":"5511999999999@s.whatsapp.net","_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.owner-transfer"}},"/v1/instances/cliente-01/operations/channel.paid-partnership":{"post":{"operationId":"client_operation_channel_paid_partnership","summary":"Identificar parceria paga","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.paid-partnership. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Identificar parceria paga. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Identificar parceria paga. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"messageType":{"type":"string","enum":["MESSAGE","STATUS"],"default":"MESSAGE"},"_params":{"type":"object","required":["channel_id","serverId"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"messageType":"MESSAGE","_params":{"channel_id":"120363000000000000@newsletter","serverId":1}}}}},"x-mvo-operation":"channel.paid-partnership"}},"/v1/instances/cliente-01/operations/channel.pending-invites":{"get":{"operationId":"client_operation_channel_pending_invites","summary":"Consultar convites pendentes","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.pending-invites. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar convites pendentes. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}}],"x-mvo-operation":"channel.pending-invites"}},"/v1/instances/cliente-01/operations/channel.photo-delete":{"delete":{"operationId":"client_operation_channel_photo_delete","summary":"Remover foto do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.photo-delete. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Remover foto do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Remover foto do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.photo-delete"}},"/v1/instances/cliente-01/operations/channel.photo-get":{"get":{"operationId":"client_operation_channel_photo_get","summary":"Consultar foto ou prévia do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.photo-get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar foto ou prévia do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["image","preview"],"default":"image"}}],"x-mvo-operation":"channel.photo-get"}},"/v1/instances/cliente-01/operations/channel.photo-set":{"put":{"operationId":"client_operation_channel_photo_set","summary":"Atualizar foto do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.photo-set. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Atualizar foto do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Atualizar foto do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":8192,"format":"uri","example":"https://example.com/canal.jpg"},"base64":{"type":"string","minLength":1,"maxLength":11184816,"example":"/9j/4AAQSkZJRgABAQAAAQABAAD="},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"url":"https://example.com/canal.jpg","_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.photo-set"}},"/v1/instances/cliente-01/operations/channel.pin":{"put":{"operationId":"client_operation_channel_pin","summary":"Fixar publicações","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.pin. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Fixar publicações. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Fixar publicações. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"serverIds":{"type":"array","items":{"type":"integer","minimum":1,"maximum":9007199254740991},"minItems":1,"maxItems":10,"uniqueItems":true},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["serverIds","_params"],"additionalProperties":false},"example":{"serverIds":[1,2],"_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.pin"}},"/v1/instances/cliente-01/operations/channel.poll-voters":{"get":{"operationId":"client_operation_channel_poll_voters","summary":"Consultar votos da enquete","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.poll-voters. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar votos da enquete. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"serverId","in":"query","required":true,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},{"name":"voteHash","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"example":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50}}],"x-mvo-operation":"channel.poll-voters"}},"/v1/instances/cliente-01/operations/channel.react":{"put":{"operationId":"client_operation_channel_react","summary":"Reagir a uma publicação","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.react. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Reagir a uma publicação. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Reagir a uma publicação. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"emoji":{"type":"string","maxLength":128},"revoke":{"type":"boolean","default":false},"_params":{"type":"object","required":["channel_id","serverId"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},"additionalProperties":false}},"required":["emoji","_params"],"additionalProperties":false},"example":{"emoji":"👍","_params":{"channel_id":"120363000000000000@newsletter","serverId":1}}}}},"x-mvo-operation":"channel.react"}},"/v1/instances/cliente-01/operations/channel.reaction-senders":{"get":{"operationId":"client_operation_channel_reaction_senders","summary":"Consultar autores de reações","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.reaction-senders. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar autores de reações. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"serverId","in":"query","required":true,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}}],"x-mvo-operation":"channel.reaction-senders"}},"/v1/instances/cliente-01/operations/channel.reactions-setting":{"put":{"operationId":"client_operation_channel_reactions_setting","summary":"Configurar reações do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.reactions-setting. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Configurar reações do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Configurar reações do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"reactionCodesSetting":{"type":"string","enum":["ALL","BASIC","NONE","BLOCKLIST"]},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["reactionCodesSetting","_params"],"additionalProperties":false},"example":{"reactionCodesSetting":"ALL","_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.reactions-setting"}},"/v1/instances/cliente-01/operations/channel.recommended":{"get":{"operationId":"client_operation_channel_recommended","summary":"Consultar canais recomendados","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.recommended. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar canais recomendados. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"countryCodes","in":"query","required":false,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2,"pattern":"^[A-Z]{2}$","example":"BR"},"minItems":0,"maxItems":100,"uniqueItems":true}}}}],"x-mvo-operation":"channel.recommended"}},"/v1/instances/cliente-01/operations/channel.reports":{"get":{"operationId":"client_operation_channel_reports","summary":"Consultar denúncias de canais","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.reports. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar denúncias de canais. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"channel.reports"}},"/v1/instances/cliente-01/operations/channel.reshare-question":{"post":{"operationId":"client_operation_channel_reshare_question","summary":"Recompartilhar resposta observada de pergunta","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.reshare-question. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Recompartilhar resposta observada de pergunta. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Recompartilhar resposta observada de pergunta. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"question_message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:[A-Za-z0-9_-]{1,128}|server:[1-9][0-9]{0,17}|response:[A-Za-z0-9_-]{1,119})$","example":"MVO_CHANNEL_EXAMPLE"},"response_message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^(?:[A-Za-z0-9_-]{1,128}|server:[1-9][0-9]{0,17}|response:[A-Za-z0-9_-]{1,119})$","example":"MVO_CHANNEL_EXAMPLE"},"text":{"type":"string","minLength":1,"maxLength":65536},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"},"_params":{"type":"object","required":["channel_id","serverId","responseServerId"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"serverId":{"type":"integer","minimum":1,"maximum":2147483647,"example":1},"responseServerId":{"type":"string","minLength":1,"maxLength":128,"example":"MVO_RESPONSE_EXAMPLE"}},"additionalProperties":false}},"required":["question_message_id","response_message_id","text","_params"],"additionalProperties":false},"example":{"question_message_id":"server:1","response_message_id":"MVO_RESPONSE_CLIENT_ID","text":"Resposta da comunidade","_params":{"channel_id":"120363000000000000@newsletter","serverId":1,"responseServerId":"MVO_RESPONSE_EXAMPLE"}}}}},"x-mvo-operation":"channel.reshare-question"}},"/v1/instances/cliente-01/operations/channel.respond-question":{"post":{"operationId":"client_operation_channel_respond_question","summary":"Responder pergunta do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.respond-question. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Responder pergunta do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Responder pergunta do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":65536},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"},"_params":{"type":"object","required":["channel_id","serverId"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},"additionalProperties":false}},"required":["text","_params"],"additionalProperties":false},"example":{"text":"Sugiro dicas de tecnologia","_params":{"channel_id":"120363000000000000@newsletter","serverId":1}}}}},"x-mvo-operation":"channel.respond-question"}},"/v1/instances/cliente-01/operations/channel.revoke":{"delete":{"operationId":"client_operation_channel_revoke","summary":"Revogar publicação","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.revoke. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Revogar publicação. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Revogar publicação. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["channel_id","message_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_CHANNEL_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"channel_id":"120363000000000000@newsletter","message_id":"MVO_CHANNEL_EXAMPLE"}}}}},"x-mvo-operation":"channel.revoke"}},"/v1/instances/cliente-01/operations/channel.search":{"get":{"operationId":"client_operation_channel_search","summary":"Buscar canais no diretório","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.search. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Buscar canais no diretório. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"searchText","in":"query","required":false,"schema":{"type":"string","maxLength":1024}},{"name":"categories","in":"query","required":false,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","enum":["BUSINESS","ENTERTAINMENT","LIFESTYLE","NEWS","ORGANIZATIONS","PEOPLE","SPORTS","SPECIAL_EVENTS","SPECIAL_EVENTS_2","SPECIAL_EVENTS_3","SPECIAL_EVENTS_4","SPECIAL_EVENTS_5"]},"minItems":0,"maxItems":100,"uniqueItems":true}}}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"startCursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":4096}}],"x-mvo-operation":"channel.search"}},"/v1/instances/cliente-01/operations/channel.send-contact":{"post":{"operationId":"client_operation_channel_send_contact","summary":"Publicar contato no canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.send-contact. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Publicar contato no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar contato no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"displayName":{"type":"string","minLength":1,"maxLength":256},"vcard":{"type":"string","minLength":1,"maxLength":65536},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["vcard","_params"],"additionalProperties":false},"example":{"displayName":"Atendimento MVO","vcard":"BEGIN:VCARD\nVERSION:3.0\nFN:Atendimento MVO\nTEL;TYPE=CELL:+5511999999999\nEND:VCARD","_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.send-contact"}},"/v1/instances/cliente-01/operations/channel.send-media":{"post":{"operationId":"client_operation_channel_send_media","summary":"Publicar mídia no canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.send-media. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Publicar mídia no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar mídia no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["image","video","gif","ptv","audio","ptt","document","sticker"]},"url":{"type":"string","minLength":1,"maxLength":8192,"format":"uri","example":"https://example.com/novidades.jpg"},"base64":{"type":"string","minLength":1,"maxLength":44739248},"caption":{"type":"string","maxLength":65536},"mimetype":{"type":"string","minLength":1,"maxLength":128},"fileName":{"type":"string","minLength":1,"maxLength":256},"seconds":{"type":"integer","minimum":0,"maximum":86400},"width":{"type":"integer","minimum":1,"maximum":8192},"height":{"type":"integer","minimum":1,"maximum":8192},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["type","_params"],"additionalProperties":false},"example":{"type":"image","url":"https://example.com/novidades.jpg","caption":"Novidades da MVO","_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.send-media"}},"/v1/instances/cliente-01/operations/channel.send-poll":{"post":{"operationId":"client_operation_channel_send_poll","summary":"Publicar enquete no canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.send-poll. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Publicar enquete no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar enquete no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"options":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100},"minItems":2,"maxItems":12,"uniqueItems":true},"selectableCount":{"type":"integer","minimum":0,"maximum":12,"default":1},"allowAddOption":{"type":"boolean"},"hideParticipantName":{"type":"boolean"},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["name","options","_params"],"additionalProperties":false},"example":{"name":"Qual conteúdo você prefere?","options":["Dicas","Novidades"],"selectableCount":1,"_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.send-poll"}},"/v1/instances/cliente-01/operations/channel.send-poll-snapshot":{"post":{"operationId":"client_operation_channel_send_poll_snapshot","summary":"Publicar resultado de enquete","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.send-poll-snapshot. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Publicar resultado de enquete. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar resultado de enquete. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"pollVotes":{"type":"array","items":{"type":"object","properties":{"optionName":{"type":"string","minLength":1,"maxLength":100},"optionVoteCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["optionName","optionVoteCount"],"additionalProperties":false},"minItems":1,"maxItems":12,"uniqueItems":true},"version3":{"type":"boolean","default":false},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["name","pollVotes","_params"],"additionalProperties":false},"example":{"name":"Resultado","pollVotes":[{"optionName":"Novidades","optionVoteCount":10}],"version3":false,"_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.send-poll-snapshot"}},"/v1/instances/cliente-01/operations/channel.send-question":{"post":{"operationId":"client_operation_channel_send_question","summary":"Publicar pergunta no canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.send-question. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Publicar pergunta no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar pergunta no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":65536},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["text","_params"],"additionalProperties":false},"example":{"text":"Qual assunto você quer ver aqui?","_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.send-question"}},"/v1/instances/cliente-01/operations/channel.send-text":{"post":{"operationId":"client_operation_channel_send_text","summary":"Publicar texto no canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.send-text. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Publicar texto no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar texto no canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":65536,"example":"Novidades da MVO!"},"message_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{1,128}$","example":"MVO_CHANNEL_EXAMPLE"},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["text","_params"],"additionalProperties":false},"example":{"text":"Novidades da MVO!","_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.send-text"}},"/v1/instances/cliente-01/operations/channel.similar":{"get":{"operationId":"client_operation_channel_similar","summary":"Consultar canais semelhantes","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.similar. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar canais semelhantes. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"countryCodes","in":"query","required":false,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2,"pattern":"^[A-Z]{2}$","example":"BR"},"minItems":0,"maxItems":100,"uniqueItems":true}}}}],"x-mvo-operation":"channel.similar"}},"/v1/instances/cliente-01/operations/channel.statuses":{"get":{"operationId":"client_operation_channel_statuses","summary":"Consultar publicações temporárias do canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.statuses. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar publicações temporárias do canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"after","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"viewRole","in":"query","required":false,"schema":{"type":"string","enum":["OWNER","ADMIN","SUBSCRIBER","GUEST"],"default":"SUBSCRIBER"}}],"x-mvo-operation":"channel.statuses"}},"/v1/instances/cliente-01/operations/channel.tos-accept":{"post":{"operationId":"client_operation_channel_tos_accept","summary":"Aceitar termos de canais","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.tos-accept. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Aceitar termos de canais. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Aceitar termos de canais. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"notices":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"minItems":1,"maxItems":20,"uniqueItems":true}},"required":["notices"],"additionalProperties":false},"example":{"notices":["2060127000651691"]}}}},"x-mvo-operation":"channel.tos-accept"}},"/v1/instances/cliente-01/operations/channel.tos-get":{"get":{"operationId":"client_operation_channel_tos_get","summary":"Consultar termos de canais","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.tos-get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar termos de canais. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"notices","in":"query","required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","minLength":1,"maxLength":128},"minItems":1,"maxItems":20,"uniqueItems":true}}}}],"x-mvo-operation":"channel.tos-get"}},"/v1/instances/cliente-01/operations/channel.unfollow":{"delete":{"operationId":"client_operation_channel_unfollow","summary":"Deixar de seguir canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.unfollow. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Deixar de seguir canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Deixar de seguir canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.unfollow"}},"/v1/instances/cliente-01/operations/channel.unpin":{"delete":{"operationId":"client_operation_channel_unpin","summary":"Desafixar publicações","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.unpin. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Desafixar publicações. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Desafixar publicações. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"serverIds":{"type":"array","items":{"type":"integer","minimum":1,"maximum":9007199254740991},"minItems":1,"maxItems":10,"uniqueItems":true},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["serverIds","_params"],"additionalProperties":false},"example":{"serverIds":[1,2],"_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.unpin"}},"/v1/instances/cliente-01/operations/channel.update":{"patch":{"operationId":"client_operation_channel_update","summary":"Atualizar canal","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.update. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Atualizar canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Atualizar canal. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","maxLength":2048},"reactionCodesSetting":{"type":"string","enum":["ALL","BASIC","NONE","BLOCKLIST"]},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"name":"Novidades MVO atualizadas","_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.update"}},"/v1/instances/cliente-01/operations/channel.updates":{"get":{"operationId":"client_operation_channel_updates","summary":"Consultar atualizações de publicações","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta channel.updates. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar atualizações de publicações. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50}},{"name":"since","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"after","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}}],"x-mvo-operation":"channel.updates"}},"/v1/instances/cliente-01/operations/channel.views":{"post":{"operationId":"client_operation_channel_views","summary":"Enviar recibos de visualização","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.views. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enviar recibos de visualização. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar recibos de visualização. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"serverIds":{"type":"array","items":{"type":"integer","minimum":1,"maximum":9007199254740991},"minItems":1,"maxItems":1000,"uniqueItems":true},"_params":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"}},"additionalProperties":false}},"required":["serverIds","_params"],"additionalProperties":false},"example":{"serverIds":[1,2],"_params":{"channel_id":"120363000000000000@newsletter"}}}}},"x-mvo-operation":"channel.views"}},"/v1/instances/cliente-01/operations/channel.vote":{"post":{"operationId":"client_operation_channel_vote","summary":"Votar na enquete ou remover voto com lista vazia","tags":["Canais"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa channel.vote. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Votar na enquete ou remover voto com lista vazia. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Votar na enquete ou remover voto com lista vazia. Usa a sessão autenticada da instância; as permissões e a disponibilidade são decididas pelo WhatsApp. HTTP 202 representa um job, não entrega ou confirmação de uma publicação.","content":{"application/json":{"schema":{"type":"object","properties":{"votes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64,"pattern":"^(?:[a-fA-F0-9]{64}|[A-Za-z0-9+/]{43}=)$"},"minItems":0,"maxItems":12,"uniqueItems":true},"contentType":{"type":"string","minLength":1,"maxLength":64},"_params":{"type":"object","required":["channel_id","serverId"],"properties":{"channel_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9]{1,30}@newsletter$","example":"120363000000000000@newsletter"},"serverId":{"type":"integer","minimum":1,"maximum":9007199254740991,"example":1}},"additionalProperties":false}},"required":["votes","_params"],"additionalProperties":false},"example":{"votes":["AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="],"_params":{"channel_id":"120363000000000000@newsletter","serverId":1}}}}},"x-mvo-operation":"channel.vote"}},"/v1/instances/cliente-01/operations/chat.archive":{"put":{"operationId":"client_operation_chat_archive","summary":"chat.archive","tags":["chat"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa chat.archive. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Arquiva ou desarquiva uma conversa. Aceita messageData ou os mesmos campos na raiz.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Arquiva ou desarquiva uma conversa. Aceita messageData ou os mesmos campos na raiz.","content":{"application/json":{"schema":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"arquivar":{"anyOf":[{"type":"boolean"},{"type":"integer","enum":[0,1]},{"type":"string","enum":["true","false","0","1"]}],"description":"Booleano JSON recomendado; também aceita 0/1 e true/false como string."},"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"arquivar":{"anyOf":[{"type":"boolean"},{"type":"integer","enum":[0,1]},{"type":"string","enum":["true","false","0","1"]}],"description":"Booleano JSON recomendado; também aceita 0/1 e true/false como string."}},"required":["numero","arquivar"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["numero","arquivar"]},{"required":["messageData"]}]},"example":{"messageData":{"numero":"5511999999999","arquivar":true}}}}},"x-mvo-operation":"chat.archive"}},"/v1/instances/cliente-01/operations/chat.read":{"post":{"operationId":"client_operation_chat_read","summary":"chat.read","tags":["chat"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa chat.read. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Envia recibo de leitura para a mensagem. Em grupo, informe participant quando necessário. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Envia recibo de leitura para a mensagem. Em grupo, informe participant quando necessário.","content":{"application/json":{"schema":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"idMsg":{"type":"string","minLength":1,"maxLength":128,"description":"ID real da mensagem recebida."},"participant":{"type":"string","minLength":1,"maxLength":200,"description":"Participante remetente; necessário em recibos de mensagens de grupo.","example":"5511999999999"},"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"idMsg":{"type":"string","minLength":1,"maxLength":128,"description":"ID real da mensagem recebida."},"participant":{"type":"string","minLength":1,"maxLength":200,"description":"Participante remetente; necessário em recibos de mensagens de grupo.","example":"5511999999999"}},"required":["numero","idMsg"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["numero","idMsg"]},{"required":["messageData"]}]},"example":{"messageData":{"numero":"5511999999999","idMsg":"3EB01234567890ABCDEF"}}}}},"x-mvo-operation":"chat.read"}},"/v1/instances/cliente-01/operations/community.admins-demote":{"patch":{"operationId":"client_operation_community_admins_demote","summary":"Remover função de administrador","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.admins-demote. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Remover função de administrador. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Remover função de administrador. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["participants","_params"]},"example":{"participants":["123456789@lid"],"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.admins-demote"}},"/v1/instances/cliente-01/operations/community.admins-list":{"get":{"operationId":"client_operation_community_admins_list","summary":"Listar administradores da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta community.admins-list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Listar administradores da comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"community_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}],"x-mvo-operation":"community.admins-list"}},"/v1/instances/cliente-01/operations/community.admins-promote":{"patch":{"operationId":"client_operation_community_admins_promote","summary":"Promover membros a administradores","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.admins-promote. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Promover membros a administradores. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Promover membros a administradores. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["participants","_params"]},"example":{"participants":["123456789@lid"],"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.admins-promote"}},"/v1/instances/cliente-01/operations/community.appeal":{"post":{"operationId":"client_operation_community_appeal","summary":"Enviar recurso de suspensão da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.appeal. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enviar recurso de suspensão da comunidade. IDs vinculados à rota não são repetidos no JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar recurso de suspensão da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","nullable":true,"minLength":1,"maxLength":1024,"example":"Solicito a revisão da suspensão."},"debugInfo":{"type":"string","minLength":2,"maxLength":16384,"example":"{\"source\":\"customer-support\"}","description":"Texto JSON cujo valor é um objeto. Não enviar credenciais nem dados privados."},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"reason":"Solicito a revisão da suspensão.","_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.appeal"}},"/v1/instances/cliente-01/operations/community.create":{"post":{"operationId":"client_operation_community_create","summary":"Criar comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.create. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Criar comunidade. IDs vinculados à rota não são repetidos no JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Criar comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":100,"example":"Clientes MVO"},"options":{"type":"object","additionalProperties":false,"properties":{"description":{"type":"string","nullable":false,"maxLength":2048,"example":"Avisos e grupos de atendimento da MVO."},"membershipApprovalMode":{"type":"string","enum":["open","request_required"],"default":"request_required"},"allowNonAdminSubGroupCreation":{"type":"boolean"},"createGeneralChat":{"type":"boolean"}}}},"additionalProperties":false,"required":["subject"]},"example":{"subject":"Clientes MVO","options":{"description":"Avisos e atendimento","membershipApprovalMode":"request_required","createGeneralChat":true}}}}},"x-mvo-operation":"community.create"}},"/v1/instances/cliente-01/operations/community.deactivate":{"delete":{"operationId":"client_operation_community_deactivate","summary":"Desativar comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.deactivate. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Desativar comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Desativar comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.deactivate"}},"/v1/instances/cliente-01/operations/community.description":{"put":{"operationId":"client_operation_community_description","summary":"Definir ou remover descrição da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.description. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Definir ou remover descrição da comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir ou remover descrição da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","nullable":true,"maxLength":2048,"example":"Avisos e grupos de atendimento da MVO."},"previousId":{"type":"string","minLength":1,"maxLength":128,"example":"1700000000000","description":"descId anterior, quando conhecido."},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["description","_params"]},"example":{"description":"Canal de avisos e grupos de atendimento.","_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.description"}},"/v1/instances/cliente-01/operations/community.ephemeral":{"put":{"operationId":"client_operation_community_ephemeral","summary":"Definir duração das mensagens temporárias","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.ephemeral. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Definir duração das mensagens temporárias. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir duração das mensagens temporárias. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"seconds":{"type":"integer","enum":[0,86400,604800,7776000],"description":"Segundos: 0 desativa; demais valores representam 1, 7 ou 90 dias."},"trigger":{"type":"integer","minimum":0,"maximum":2147483647},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["seconds","_params"]},"example":{"seconds":86400,"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.ephemeral"}},"/v1/instances/cliente-01/operations/community.get":{"get":{"operationId":"client_operation_community_get","summary":"Consultar comunidade, membros e metadados","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta community.get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar comunidade, membros e metadados. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"community_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}],"x-mvo-operation":"community.get"}},"/v1/instances/cliente-01/operations/community.history-share-mode":{"put":{"operationId":"client_operation_community_history_share_mode","summary":"Definir quem pode compartilhar histórico","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.history-share-mode. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Definir quem pode compartilhar histórico. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir quem pode compartilhar histórico. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["admin_share","all_member_share"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["mode","_params"]},"example":{"mode":"admin_share","_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.history-share-mode"}},"/v1/instances/cliente-01/operations/community.internal":{"get":{"operationId":"client_operation_community_internal","summary":"Consultar se grupo é interno à comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta community.internal. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar se grupo é interno à comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"community_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID @g.us do grupo/subgrupo a verificar. O campo se chama community_id por consistência da rota; a consulta verifica esse ID."},"description":"JID @g.us do grupo/subgrupo a verificar. O campo se chama community_id por consistência da rota; a consulta verifica esse ID."}],"x-mvo-operation":"community.internal"}},"/v1/instances/cliente-01/operations/community.invite-get":{"get":{"operationId":"client_operation_community_invite_get","summary":"Consultar código de convite da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta community.invite-get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar código de convite da comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"community_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}],"x-mvo-operation":"community.invite-get"}},"/v1/instances/cliente-01/operations/community.invite-info":{"post":{"operationId":"client_operation_community_invite_info","summary":"Consultar comunidade por código de convite","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.invite-info. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Consultar comunidade por código de convite. IDs vinculados à rota não são repetidos no JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Consultar comunidade por código de convite. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$","example":"CODIGO_DO_CONVITE","description":"Código do convite. Enviado no JSON para evitar registro na URL."}},"additionalProperties":false,"required":["code"]},"example":{"code":"CODIGO_DO_CONVITE"}}}},"x-mvo-operation":"community.invite-info"}},"/v1/instances/cliente-01/operations/community.invite-revoke":{"post":{"operationId":"client_operation_community_invite_revoke","summary":"Revogar e renovar convite da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.invite-revoke. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Revogar e renovar convite da comunidade. IDs vinculados à rota não são repetidos no JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Revogar e renovar convite da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.invite-revoke"}},"/v1/instances/cliente-01/operations/community.join":{"post":{"operationId":"client_operation_community_join","summary":"Entrar na comunidade por convite","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.join. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Entrar na comunidade por convite. IDs vinculados à rota não são repetidos no JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Entrar na comunidade por convite. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$","example":"CODIGO_DO_CONVITE","description":"Código do convite. Enviado no JSON para evitar registro na URL."}},"additionalProperties":false,"required":["code"]},"example":{"code":"CODIGO_DO_CONVITE"}}}},"x-mvo-operation":"community.join"}},"/v1/instances/cliente-01/operations/community.leave":{"delete":{"operationId":"client_operation_community_leave","summary":"Sair da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.leave. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Sair da comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Sair da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.leave"}},"/v1/instances/cliente-01/operations/community.list":{"get":{"operationId":"client_operation_community_list","summary":"Listar comunidades da conta","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta community.list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Listar comunidades da conta. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"community.list"}},"/v1/instances/cliente-01/operations/community.member-add-mode":{"put":{"operationId":"client_operation_community_member_add_mode","summary":"Definir quem pode adicionar membros","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.member-add-mode. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Definir quem pode adicionar membros. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir quem pode adicionar membros. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["admin_add","all_member_add"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["mode","_params"]},"example":{"mode":"admin_add","_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.member-add-mode"}},"/v1/instances/cliente-01/operations/community.member-link-mode":{"put":{"operationId":"client_operation_community_member_link_mode","summary":"Definir quem pode vincular subgrupos","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.member-link-mode. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Definir quem pode vincular subgrupos. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir quem pode vincular subgrupos. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["admin_link","all_member_link"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["mode","_params"]},"example":{"mode":"admin_link","_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.member-link-mode"}},"/v1/instances/cliente-01/operations/community.members-add":{"post":{"operationId":"client_operation_community_members_add","summary":"Adicionar membros à comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.members-add. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Adicionar membros à comunidade. IDs vinculados à rota não são repetidos no JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Adicionar membros à comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["participants","_params"]},"example":{"participants":["123456789@lid"],"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.members-add"}},"/v1/instances/cliente-01/operations/community.members-list":{"get":{"operationId":"client_operation_community_members_list","summary":"Listar membros da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta community.members-list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Listar membros da comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"community_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}],"x-mvo-operation":"community.members-list"}},"/v1/instances/cliente-01/operations/community.members-remove":{"delete":{"operationId":"client_operation_community_members_remove","summary":"Remover membros da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.members-remove. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Remover membros da comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Remover membros da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["participants","_params"]},"example":{"participants":["123456789@lid"],"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.members-remove"}},"/v1/instances/cliente-01/operations/community.owner-transfer":{"post":{"operationId":"client_operation_community_owner_transfer","summary":"Transferir propriedade da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.owner-transfer. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Transferir propriedade da comunidade. IDs vinculados à rota não são repetidos no JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Transferir propriedade da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"newOwner":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["newOwner","_params"]},"example":{"newOwner":"123456789@lid","_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.owner-transfer"}},"/v1/instances/cliente-01/operations/community.photo-delete":{"delete":{"operationId":"client_operation_community_photo_delete","summary":"Remover foto da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.photo-delete. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Remover foto da comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Remover foto da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.photo-delete"}},"/v1/instances/cliente-01/operations/community.photo-get":{"get":{"operationId":"client_operation_community_photo_get","summary":"Consultar URL da foto da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta community.photo-get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar URL da foto da comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"community_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["image","preview"],"default":"image"}}],"x-mvo-operation":"community.photo-get"}},"/v1/instances/cliente-01/operations/community.photo-set":{"put":{"operationId":"client_operation_community_photo_set","summary":"Definir foto da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.photo-set. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Definir foto da comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir foto da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":8192,"example":"https://cdn.sua-empresa.example/comunidade.jpg","description":"URL HTTPS pública da imagem; não combine com base64."},"base64":{"type":"string","minLength":1,"maxLength":11184816,"description":"Bytes da imagem em base64, até 8 MiB após decodificar; não combine com url."},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"oneOf":[{"required":["url"],"not":{"required":["base64"]}},{"required":["base64"],"not":{"required":["url"]}}],"required":["_params"]},"examples":{"url":{"summary":"Foto por URL HTTPS pública","value":{"url":"https://cdn.sua-empresa.example/comunidade.jpg","_params":{"community_id":"120363000000000000@g.us"}}},"base64":{"summary":"Foto PNG em base64 (2 × 2 pixels)","value":{"base64":"iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAC0lEQVQImWNgQAYAAA4AAbGa6gYAAAAASUVORK5CYII=","_params":{"community_id":"120363000000000000@g.us"}}}}}}},"x-mvo-operation":"community.photo-set"}},"/v1/instances/cliente-01/operations/community.requests-approve":{"post":{"operationId":"client_operation_community_requests_approve","summary":"Aprovar solicitações de participação","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.requests-approve. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Aprovar solicitações de participação. IDs vinculados à rota não são repetidos no JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Aprovar solicitações de participação. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["participants","_params"]},"example":{"participants":["123456789@lid"],"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.requests-approve"}},"/v1/instances/cliente-01/operations/community.requests-cancel":{"delete":{"operationId":"client_operation_community_requests_cancel","summary":"Cancelar solicitações de participação","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.requests-cancel. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Cancelar solicitações de participação. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Cancelar solicitações de participação. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["participants","_params"]},"example":{"participants":["123456789@lid"],"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.requests-cancel"}},"/v1/instances/cliente-01/operations/community.requests-list":{"get":{"operationId":"client_operation_community_requests_list","summary":"Listar solicitações de participação","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta community.requests-list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Listar solicitações de participação. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"community_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}],"x-mvo-operation":"community.requests-list"}},"/v1/instances/cliente-01/operations/community.requests-reject":{"post":{"operationId":"client_operation_community_requests_reject","summary":"Rejeitar solicitações de participação","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.requests-reject. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Rejeitar solicitações de participação. IDs vinculados à rota não são repetidos no JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Rejeitar solicitações de participação. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"participants":{"type":"array","minItems":1,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["participants","_params"]},"example":{"participants":["123456789@lid"],"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.requests-reject"}},"/v1/instances/cliente-01/operations/community.setting":{"put":{"operationId":"client_operation_community_setting","summary":"Definir configuração da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.setting. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Definir configuração da comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir configuração da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"setting":{"type":"string","enum":["announcement","restrict","membership_approval_mode","allow_non_admin_sub_group_creation","group_history","allow_admin_reports","no_frequently_forwarded"]},"enabled":{"type":"boolean"},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["setting","enabled","_params"]},"example":{"setting":"allow_non_admin_sub_group_creation","enabled":false,"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.setting"}},"/v1/instances/cliente-01/operations/community.subgroups-create":{"post":{"operationId":"client_operation_community_subgroups_create","summary":"Criar grupo vinculado à comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.subgroups-create. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Criar grupo vinculado à comunidade. IDs vinculados à rota não são repetidos no JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Criar grupo vinculado à comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":100,"example":"Clientes MVO"},"participants":{"type":"array","minItems":0,"maxItems":1024,"uniqueItems":true,"items":{"type":"string","pattern":"^(?:\\+?[0-9]{1,20}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"123456789@lid","description":"Telefone com DDI ou JID individual PN/LID, sem dispositivo. LIDs devem ser reais e confirmados pelo WhatsApp."},"example":["123456789@lid"]},"options":{"type":"object","additionalProperties":false,"properties":{"description":{"type":"string","nullable":false,"maxLength":2048,"example":"Avisos e grupos de atendimento da MVO."}}},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["subject","_params"]},"example":{"subject":"Atendimento MVO","participants":["123456789@lid"],"options":{"description":"Suporte aos clientes"},"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.subgroups-create"}},"/v1/instances/cliente-01/operations/community.subgroups-join":{"post":{"operationId":"client_operation_community_subgroups_join","summary":"Entrar em subgrupo vinculado à comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.subgroups-join. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Entrar em subgrupo vinculado à comunidade. IDs vinculados à rota não são repetidos no JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Entrar em subgrupo vinculado à comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"subgroup_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID real do subgrupo vinculado."},"type":{"type":"string","maxLength":32,"pattern":"^[a-z_]+$","description":"Tipo de ingresso do protocolo, quando conhecido. Omita para usar o padrão do servidor."},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["subgroup_id","_params"]},"example":{"subgroup_id":"120363000000000001@g.us","_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.subgroups-join"}},"/v1/instances/cliente-01/operations/community.subgroups-link":{"post":{"operationId":"client_operation_community_subgroups_link","summary":"Vincular grupos existentes à comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.subgroups-link. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Vincular grupos existentes à comunidade. IDs vinculados à rota não são repetidos no JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Vincular grupos existentes à comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"subgroup_ids":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"items":{"oneOf":[{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},{"type":"object","properties":{"jid":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"hidden":{"type":"boolean","default":false,"description":"Solicita o vínculo como grupo oculto usando hidden_group no protocolo."}},"required":["jid"],"additionalProperties":false}]},"example":["120363000000000001@g.us"]},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["subgroup_ids","_params"]},"examples":{"groups":{"summary":"Vincular grupos existentes","value":{"subgroup_ids":["120363000000000001@g.us"],"_params":{"community_id":"120363000000000000@g.us"}}},"hidden_group":{"summary":"Vincular um grupo oculto","value":{"subgroup_ids":[{"jid":"120363000000000001@g.us","hidden":true}],"_params":{"community_id":"120363000000000000@g.us"}}}}}}},"x-mvo-operation":"community.subgroups-link"}},"/v1/instances/cliente-01/operations/community.subgroups-list":{"get":{"operationId":"client_operation_community_subgroups_list","summary":"Listar subgrupos vinculados à comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta community.subgroups-list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Listar subgrupos vinculados à comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"community_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["iq","mex"],"default":"iq","description":"iq retorna a lista de metadados; mex conserva o envelope original, incluindo null e campos adicionais."},"description":"iq retorna a lista de metadados; mex conserva o envelope original, incluindo null e campos adicionais."}],"x-mvo-operation":"community.subgroups-list"}},"/v1/instances/cliente-01/operations/community.subgroups-participants":{"get":{"operationId":"client_operation_community_subgroups_participants","summary":"Consultar participantes dos subgrupos vinculados","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta community.subgroups-participants. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar participantes dos subgrupos vinculados. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"community_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}],"x-mvo-operation":"community.subgroups-participants"}},"/v1/instances/cliente-01/operations/community.subgroups-suggestions":{"get":{"operationId":"client_operation_community_subgroups_suggestions","summary":"Consultar sugestões de subgrupos","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta community.subgroups-suggestions. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar sugestões de subgrupos. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"community_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},{"name":"hint","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID de grupo usado como sugestão inicial, quando conhecido."},"description":"JID de grupo usado como sugestão inicial, quando conhecido."}],"x-mvo-operation":"community.subgroups-suggestions"}},"/v1/instances/cliente-01/operations/community.subgroups-unlink":{"delete":{"operationId":"client_operation_community_subgroups_unlink","summary":"Desvincular grupos da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.subgroups-unlink. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Desvincular grupos da comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Desvincular grupos da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"subgroup_ids":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"items":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000001@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."},"example":["120363000000000001@g.us"]},"removeOrphanedMembers":{"type":"boolean","default":false,"description":"Solicita remover membros que perderam todos os vínculos de subgrupos; o servidor decide o resultado."},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["subgroup_ids","_params"]},"example":{"subgroup_ids":["120363000000000001@g.us"],"removeOrphanedMembers":false,"_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.subgroups-unlink"}},"/v1/instances/cliente-01/operations/community.subject":{"put":{"operationId":"client_operation_community_subject","summary":"Definir nome da comunidade","tags":["Comunidades"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa community.subject. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Definir nome da comunidade. IDs vinculados à rota não são repetidos no JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir nome da comunidade. IDs vinculados à rota não são repetidos no JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":100,"example":"Clientes MVO"},"_params":{"type":"object","required":["community_id"],"properties":{"community_id":{"type":"string","pattern":"^[0-9]+(?:-[0-9]+)?@g\\.us$","maxLength":128,"example":"120363000000000000@g.us","description":"JID real da comunidade retornado pelo WhatsApp. Use @g.us; não use o código de convite como ID."}},"additionalProperties":false}},"additionalProperties":false,"required":["subject","_params"]},"example":{"subject":"Comunidade MVO","_params":{"community_id":"120363000000000000@g.us"}}}}},"x-mvo-operation":"community.subject"}},"/v1/instances/cliente-01/operations/contact.block":{"put":{"operationId":"client_operation_contact_block","summary":"contact.block","tags":["contact"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa contact.block. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Bloqueia ou desbloqueia o contato. Aceita campos no corpo ou no objeto messageData.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Bloqueia ou desbloqueia o contato. Aceita campos no corpo ou no objeto messageData.","content":{"application/json":{"schema":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"acao":{"type":"string","enum":["block","unblock"],"default":"block","description":"Opcional; se enviado, prevalece sobre a ação padrão desta operação."},"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"acao":{"type":"string","enum":["block","unblock"],"default":"block","description":"Opcional; se enviado, prevalece sobre a ação padrão desta operação."}},"required":["numero"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["numero"]},{"required":["messageData"]}]},"example":{"numero":"5511999999999","acao":"block"}}}},"x-mvo-operation":"contact.block"}},"/v1/instances/cliente-01/operations/contact.photo":{"get":{"operationId":"client_operation_contact_photo","summary":"contact.photo","tags":["contact"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta contact.photo. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consulta a foto do contato indicado no caminho numero; respeita as restrições de privacidade.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"numero","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão."}],"x-mvo-operation":"contact.photo"}},"/v1/instances/cliente-01/operations/contact.presence":{"post":{"operationId":"client_operation_contact_presence","summary":"contact.presence","tags":["contact"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa contact.presence. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Assina presença do destinatário e envia o estado. available/unavailable alteram a presença global da conta; composing/recording/paused enviam estado da conversa. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Assina presença do destinatário e envia o estado. available/unavailable alteram a presença global da conta; composing/recording/paused enviam estado da conversa.","content":{"application/json":{"schema":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"presenca":{"type":"string","enum":["available","unavailable","composing","recording","paused"]}},"required":["numero","presenca"],"additionalProperties":false},"example":{"numero":"5511999999999","presenca":"composing"}}}},"x-mvo-operation":"contact.presence"}},"/v1/instances/cliente-01/operations/contact.status":{"get":{"operationId":"client_operation_contact_status","summary":"contact.status","tags":["contact"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta contact.status. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consulta o recado do contato indicado no caminho numero.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"numero","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão."}],"x-mvo-operation":"contact.status"}},"/v1/instances/cliente-01/operations/contact.unblock":{"delete":{"operationId":"client_operation_contact_unblock","summary":"contact.unblock","tags":["contact"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa contact.unblock. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Bloqueia ou desbloqueia o contato. Aceita campos no corpo ou no objeto messageData.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Bloqueia ou desbloqueia o contato. Aceita campos no corpo ou no objeto messageData.","content":{"application/json":{"schema":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"acao":{"type":"string","enum":["block","unblock"],"default":"unblock","description":"Opcional; se enviado, prevalece sobre a ação padrão desta operação."},"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"acao":{"type":"string","enum":["block","unblock"],"default":"unblock","description":"Opcional; se enviado, prevalece sobre a ação padrão desta operação."}},"required":["numero"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["numero"]},{"required":["messageData"]}]},"example":{"numero":"5511999999999","acao":"unblock"}}}},"x-mvo-operation":"contact.unblock"}},"/v1/instances/cliente-01/operations/event.by-number":{"get":{"operationId":"client_operation_event_by_number","summary":"event.by-number","tags":["event"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta event.by-number. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Lista eventos de calendário do histórico local da conversa indicada no caminho numero.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"numero","in":"query","required":true,"schema":{"type":"string","example":"5511999999999"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100,"example":100}}],"x-mvo-operation":"event.by-number"}},"/v1/instances/cliente-01/operations/event.list":{"get":{"operationId":"client_operation_event_list","summary":"event.list","tags":["event"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta event.list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Lista eventos de calendário encontrados no histórico local da sessão; não cria nem busca eventos fora do histórico.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100,"example":100}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"Cursor do último JID da página anterior.","example":"5511999999999@s.whatsapp.net"},"description":"Cursor do último JID da página anterior."}],"x-mvo-operation":"event.list"}},"/v1/instances/cliente-01/operations/group.add":{"post":{"operationId":"client_operation_group_add","summary":"group.add","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa group.add. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Altera os participantes do grupo. Informe group_id/id_grupo junto dos participantes ou use query group_id. Resultados individuais podem conter recusas; não presuma sucesso total. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"group_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho."}],"requestBody":{"required":true,"description":"Altera os participantes do grupo. Informe group_id/id_grupo junto dos participantes ou use query group_id. Resultados individuais podem conter recusas; não presuma sucesso total.","content":{"application/json":{"schema":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024}},"required":["participants"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["participants"]},{"required":["group_data"]}]},"example":{"group_data":{"group_id":"120363000000000000@g.us","participants":["5511999999999"]}}}}},"x-mvo-operation":"group.add"}},"/v1/instances/cliente-01/operations/group.admins":{"get":{"operationId":"client_operation_group_admins","summary":"group.admins","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta group.admins. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Lista grupos em que a conta é administradora, sem incluir participantes.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"group.admins"}},"/v1/instances/cliente-01/operations/group.admins.participants":{"get":{"operationId":"client_operation_group_admins_participants","summary":"group.admins.participants","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta group.admins.participants. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Lista grupos em que a conta é administradora, incluindo os participantes.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"group.admins.participants"}},"/v1/instances/cliente-01/operations/group.create":{"post":{"operationId":"client_operation_group_create","summary":"group.create","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa group.create. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Cria um grupo; aceita group_data ou os mesmos campos na raiz. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Cria um grupo; aceita group_data ou os mesmos campos na raiz.","content":{"application/json":{"schema":{"type":"object","properties":{"group_name":{"type":"string","minLength":1,"maxLength":100,"description":"Nome do grupo."},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":0,"maxItems":1024,"description":"Lista de contatos com DDI/DDD ou JID; vazia é aceita."},"group_data":{"type":"object","properties":{"group_name":{"type":"string","minLength":1,"maxLength":100,"description":"Nome do grupo."},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":0,"maxItems":1024,"description":"Lista de contatos com DDI/DDD ou JID; vazia é aceita."}},"required":["group_name","participants"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["group_name","participants"]},{"required":["group_data"]}]},"example":{"group_data":{"group_name":"Equipe de atendimento","participants":["5511999999999","5511988888888"]}}}}},"x-mvo-operation":"group.create"}},"/v1/instances/cliente-01/operations/group.demote":{"patch":{"operationId":"client_operation_group_demote","summary":"group.demote","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa group.demote. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Altera os participantes do grupo. Informe group_id/id_grupo junto dos participantes ou use query group_id. Resultados individuais podem conter recusas; não presuma sucesso total.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"group_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho."}],"requestBody":{"required":true,"description":"Altera os participantes do grupo. Informe group_id/id_grupo junto dos participantes ou use query group_id. Resultados individuais podem conter recusas; não presuma sucesso total.","content":{"application/json":{"schema":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024},"acao":{"type":"string","enum":["demote","promote"],"default":"demote","description":"Nesta rota de cargo, acao pode substituir a ação padrão."},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024},"acao":{"type":"string","enum":["demote","promote"],"default":"demote","description":"Nesta rota de cargo, acao pode substituir a ação padrão."}},"required":["participants"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["participants"]},{"required":["group_data"]}]},"example":{"group_data":{"group_id":"120363000000000000@g.us","participants":["5511999999999"],"acao":"demote"}}}}},"x-mvo-operation":"group.demote"}},"/v1/instances/cliente-01/operations/group.ephemeral":{"put":{"operationId":"client_operation_group_ephemeral","summary":"group.ephemeral","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa group.ephemeral. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Configura mensagens temporárias. Informe o grupo no corpo (group_id/id_grupo), group_data ou query group_id.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"group_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho."}],"requestBody":{"required":true,"description":"Configura mensagens temporárias. Informe o grupo no corpo (group_id/id_grupo), group_data ou query group_id.","content":{"application/json":{"schema":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"time":{"type":"integer","enum":[0,1,7,90],"description":"Duração em dias; 0 desativa mensagens temporárias."},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"time":{"type":"integer","enum":[0,1,7,90],"description":"Duração em dias; 0 desativa mensagens temporárias."}},"required":["time"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["time"]},{"required":["group_data"]}]},"example":{"id_grupo":"120363000000000000@g.us","time":7}}}},"x-mvo-operation":"group.ephemeral"}},"/v1/instances/cliente-01/operations/group.get":{"get":{"operationId":"client_operation_group_get","summary":"group.get","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta group.get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consulta metadados e participantes do grupo. Informe group_id no caminho/query ou group_id/id_grupo no corpo, conforme a rota.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"group_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota."},{"name":"group_data","in":"query","required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"}},"additionalProperties":false,"anyOf":[{"required":["group_id"]},{"required":["id_grupo"]}]}}}}],"x-mvo-operation":"group.get"}},"/v1/instances/cliente-01/operations/group.invite":{"get":{"operationId":"client_operation_group_invite","summary":"group.invite","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta group.invite. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consulta o código de convite do grupo. Informe group_id no caminho/query ou group_id/id_grupo no corpo, conforme a rota.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"group_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota."},{"name":"id_grupo","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"Alias de group_id."},{"name":"group_data","in":"query","required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"}},"additionalProperties":false,"anyOf":[{"required":["group_id"]},{"required":["id_grupo"]}]}}}}],"x-mvo-operation":"group.invite"}},"/v1/instances/cliente-01/operations/group.join-list":{"get":{"operationId":"client_operation_group_join_list","summary":"group.join-list","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta group.join-list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consulta as solicitações pendentes para entrar no grupo. Informe group_id no caminho/query ou group_id/id_grupo no corpo, conforme a rota.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"group_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota."},{"name":"id_grupo","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"Alias de group_id."},{"name":"group_data","in":"query","required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"}},"additionalProperties":false,"anyOf":[{"required":["group_id"]},{"required":["id_grupo"]}]}}}}],"x-mvo-operation":"group.join-list"}},"/v1/instances/cliente-01/operations/group.join-review":{"post":{"operationId":"client_operation_group_join_review","summary":"group.join-review","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa group.join-review. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Aprova ou rejeita solicitações de entrada. O grupo deve ser informado por query group_id, caminho ou group_id/id_grupo no corpo. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"group_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho."}],"requestBody":{"required":true,"description":"Aprova ou rejeita solicitações de entrada. O grupo deve ser informado por query group_id, caminho ou group_id/id_grupo no corpo.","content":{"application/json":{"schema":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"acao":{"type":"string","enum":["approve","reject"]},"numero":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024,"description":"Solicitantes cuja entrada será aprovada ou rejeitada."},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"acao":{"type":"string","enum":["approve","reject"]},"numero":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024,"description":"Solicitantes cuja entrada será aprovada ou rejeitada."}},"required":["acao","numero"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["acao","numero"]},{"required":["group_data"]}]},"example":{"acao":"approve","numero":["5511999999999"]}}}},"x-mvo-operation":"group.join-review"}},"/v1/instances/cliente-01/operations/group.leave":{"delete":{"operationId":"client_operation_group_leave","summary":"group.leave","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa group.leave. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Sai do grupo indicado; esta operação altera a participação da conta. Informe group_id no caminho/query ou group_id/id_grupo no corpo, conforme a rota.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"group_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho."}],"requestBody":{"required":false,"description":"Sai do grupo indicado; esta operação altera a participação da conta. Informe group_id no caminho/query ou group_id/id_grupo no corpo, conforme a rota.","content":{"application/json":{"schema":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"}},"additionalProperties":false,"anyOf":[{"required":["group_id"]},{"required":["id_grupo"]}]}},"additionalProperties":false},"example":{"group_id":"120363000000000000@g.us"}}}},"x-mvo-operation":"group.leave"}},"/v1/instances/cliente-01/operations/group.list":{"get":{"operationId":"client_operation_group_list","summary":"group.list","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta group.list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Lista os grupos dos quais a conta participa.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"group.list"}},"/v1/instances/cliente-01/operations/group.photo":{"put":{"operationId":"client_operation_group_photo","summary":"group.photo","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa group.photo. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Atualiza a foto do grupo. Informe id_grupo/group_id e url HTTPS pública ou base64; imagem de até 8 MiB.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"group_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho."}],"requestBody":{"required":true,"description":"Atualiza a foto do grupo. Informe id_grupo/group_id e url HTTPS pública ou base64; imagem de até 8 MiB.","content":{"application/json":{"schema":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"}},"additionalProperties":false,"anyOf":[{"required":["group_id"]},{"required":["id_grupo"]}]},"url":{"type":"string","minLength":1,"maxLength":8192,"description":"URL HTTPS pública da imagem, sem credenciais, fragmento ou porta diferente de 443.","format":"uri","pattern":"^https://"},"base64":{"type":"string","minLength":1,"maxLength":11184816,"description":"Bytes da imagem em base64 padrão, sem prefixo data:. Limite de 8 MiB.","format":"byte"}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["group_id"]},{"required":["id_grupo"]},{"required":["group_data"]}]},{"anyOf":[{"required":["url"]},{"required":["base64"]}]}]},"example":{"id_grupo":"120363000000000000@g.us","url":"https://example.com/grupo.jpg"}}}},"x-mvo-operation":"group.photo"}},"/v1/instances/cliente-01/operations/group.promote":{"patch":{"operationId":"client_operation_group_promote","summary":"group.promote","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa group.promote. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Altera os participantes do grupo. Informe group_id/id_grupo junto dos participantes ou use query group_id. Resultados individuais podem conter recusas; não presuma sucesso total.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"group_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho."}],"requestBody":{"required":true,"description":"Altera os participantes do grupo. Informe group_id/id_grupo junto dos participantes ou use query group_id. Resultados individuais podem conter recusas; não presuma sucesso total.","content":{"application/json":{"schema":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024}},"required":["participants"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["participants"]},{"required":["group_data"]}]},"example":{"group_data":{"group_id":"120363000000000000@g.us","participants":["5511999999999"]}}}}},"x-mvo-operation":"group.promote"}},"/v1/instances/cliente-01/operations/group.remove":{"delete":{"operationId":"client_operation_group_remove","summary":"group.remove","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa group.remove. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Altera os participantes do grupo. Informe group_id/id_grupo junto dos participantes ou use query group_id. Resultados individuais podem conter recusas; não presuma sucesso total.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"group_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho."}],"requestBody":{"required":true,"description":"Altera os participantes do grupo. Informe group_id/id_grupo junto dos participantes ou use query group_id. Resultados individuais podem conter recusas; não presuma sucesso total.","content":{"application/json":{"schema":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"participants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato; não aceita JID de grupo.","example":"5511999999999"},"minItems":1,"maxItems":1024}},"required":["participants"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["participants"]},{"required":["group_data"]}]},"example":{"group_data":{"group_id":"120363000000000000@g.us","participants":["5511999999999"]}}}}},"x-mvo-operation":"group.remove"}},"/v1/instances/cliente-01/operations/group.send-policy":{"put":{"operationId":"client_operation_group_send_policy","summary":"group.send-policy","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa group.send-policy. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Define quem pode enviar mensagens no grupo. Grupo e allowOnlyAdmins podem ser fornecidos na query ou no corpo.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"group_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho."},{"name":"allowOnlyAdmins","in":"query","required":false,"schema":{"type":"string","enum":["true","false","0","1"],"description":"Obrigatório quando não fornecido no corpo. true: somente administradores; false: todos.","example":"true"},"description":"Obrigatório quando não fornecido no corpo. true: somente administradores; false: todos."}],"requestBody":{"required":false,"description":"Define quem pode enviar mensagens no grupo. Grupo e allowOnlyAdmins podem ser fornecidos na query ou no corpo.","content":{"application/json":{"schema":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"allowOnlyAdmins":{"anyOf":[{"type":"boolean"},{"type":"integer","enum":[0,1]},{"type":"string","enum":["true","false","0","1"]}],"description":"true permite somente administradores; false permite todos. Pode ser enviado na query."},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"allowOnlyAdmins":{"anyOf":[{"type":"boolean"},{"type":"integer","enum":[0,1]},{"type":"string","enum":["true","false","0","1"]}],"description":"true permite somente administradores; false permite todos. Pode ser enviado na query."}},"additionalProperties":false}},"additionalProperties":false},"example":{"group_id":"120363000000000000@g.us","allowOnlyAdmins":true}}}},"x-mvo-operation":"group.send-policy"}},"/v1/instances/cliente-01/operations/group.settings-policy":{"put":{"operationId":"client_operation_group_settings_policy","summary":"group.settings-policy","tags":["group"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa group.settings-policy. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Define quem pode alterar configurações do grupo. Grupo e allowOnlyAdmins podem ser fornecidos na query ou no corpo.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"group_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"description":"JID do grupo; obrigatório quando não for fornecido no corpo ou caminho."},{"name":"allowOnlyAdmins","in":"query","required":false,"schema":{"type":"string","enum":["true","false","0","1"],"description":"Obrigatório quando não fornecido no corpo. true: somente administradores; false: todos.","example":"true"},"description":"Obrigatório quando não fornecido no corpo. true: somente administradores; false: todos."}],"requestBody":{"required":false,"description":"Define quem pode alterar configurações do grupo. Grupo e allowOnlyAdmins podem ser fornecidos na query ou no corpo.","content":{"application/json":{"schema":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"allowOnlyAdmins":{"anyOf":[{"type":"boolean"},{"type":"integer","enum":[0,1]},{"type":"string","enum":["true","false","0","1"]}],"description":"true permite somente administradores; false permite todos. Pode ser enviado na query."},"group_data":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"maxLength":200,"description":"JID do grupo. Obrigatório no corpo, group_data, caminho ou query, conforme a rota.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"id_grupo":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de group_id.","pattern":"^\\d+(?:-\\d+)?@g\\.us$","example":"120363000000000000@g.us"},"allowOnlyAdmins":{"anyOf":[{"type":"boolean"},{"type":"integer","enum":[0,1]},{"type":"string","enum":["true","false","0","1"]}],"description":"true permite somente administradores; false permite todos. Pode ser enviado na query."}},"additionalProperties":false}},"additionalProperties":false},"example":{"group_id":"120363000000000000@g.us","allowOnlyAdmins":true}}}},"x-mvo-operation":"group.settings-policy"}},"/v1/instances/cliente-01/operations/history.chat":{"get":{"operationId":"client_operation_history_chat","summary":"history.chat","tags":["history"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta history.chat. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Informe chat_id para consultar uma mensagem pelo ID. Sem chat_id, informe jid ou numero para consultar a conversa. jid também restringe a busca por chat_id.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"chat_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":128,"description":"ID da mensagem a consultar; não é um JID de conversa.","example":"3EB01234567890ABCDEF"},"description":"ID da mensagem a consultar; não é um JID de conversa."},{"name":"numero","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone/JID opcional; restringe a consulta a uma conversa.","example":"5511999999999"},"description":"Telefone/JID opcional; restringe a consulta a uma conversa."},{"name":"jid","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de numero para selecionar conversa.","example":"5511999999999"},"description":"Alias de numero para selecionar conversa."}],"x-mvo-operation":"history.chat"}},"/v1/instances/cliente-01/operations/history.chats":{"get":{"operationId":"client_operation_history_chats","summary":"history.chats","tags":["history"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta history.chats. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Inventário local desta sessão. page seleciona páginas compatíveis de 50 itens; para paginação por cursor, envie limit e opcionalmente after, sem page.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":1000000000,"default":1,"description":"Paginação compatível: 50 itens por página; 0 é tratado como 1."},"description":"Paginação compatível: 50 itens por página; 0 é tratado como 1."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100,"example":100}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"Cursor do último JID da página anterior.","example":"5511999999999@s.whatsapp.net"},"description":"Cursor do último JID da página anterior."}],"x-mvo-operation":"history.chats"}},"/v1/instances/cliente-01/operations/history.contacts":{"get":{"operationId":"client_operation_history_contacts","summary":"history.contacts","tags":["history"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta history.contacts. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Inventário local desta sessão. page seleciona páginas compatíveis de 50 itens; para paginação por cursor, envie limit e opcionalmente after, sem page.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":1000000000,"default":1,"description":"Paginação compatível: 50 itens por página; 0 é tratado como 1."},"description":"Paginação compatível: 50 itens por página; 0 é tratado como 1."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100,"example":100}},{"name":"after","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"Cursor do último JID da página anterior.","example":"5511999999999@s.whatsapp.net"},"description":"Cursor do último JID da página anterior."}],"x-mvo-operation":"history.contacts"}},"/v1/instances/cliente-01/operations/history.messages":{"get":{"operationId":"client_operation_history_messages","summary":"history.messages","tags":["history"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta history.messages. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Sem numero/jid: inventário local em páginas de 50 itens (page). Com numero/jid: mensagens da conversa, usando limit e before.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":1000000000,"default":1,"description":"Paginação compatível: 50 itens por página; 0 é tratado como 1."},"description":"Paginação compatível: 50 itens por página; 0 é tratado como 1."},{"name":"numero","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone/JID opcional; restringe a consulta a uma conversa.","example":"5511999999999"},"description":"Telefone/JID opcional; restringe a consulta a uma conversa."},{"name":"jid","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"Alias de numero para selecionar conversa.","example":"5511999999999"},"description":"Alias de numero para selecionar conversa."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100,"example":100}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9223372036854775807,"description":"Timestamp anterior para paginar a conversa; usado somente com numero/jid."},"description":"Timestamp anterior para paginar a conversa; usado somente com numero/jid."}],"x-mvo-operation":"history.messages"}},"/v1/instances/cliente-01/operations/message.buttons":{"post":{"operationId":"client_operation_message_buttons","summary":"message.buttons","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.buttons. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enviar até 10 botões. Não misture quick_reply com CTA na mesma mensagem. IDs de quick_reply devem ser únicos. cta_opt e cta_otp são aliases de cta_copy. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar até 10 botões. Não misture quick_reply com CTA na mesma mensagem. IDs de quick_reply devem ser únicos. cta_opt e cta_otp são aliases de cta_copy.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal."},"titulo":{"type":"string","description":"Título opcional."},"footer":{"type":"string","description":"Rodapé opcional."},"botoes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["quick_reply"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"id":{"type":"string","minLength":1,"description":"ID único do botão."}},"additionalProperties":false,"required":["type","texto","id"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_url"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["type","texto","url"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_call"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"phone_number":{"type":"string","minLength":1,"description":"Número discado pelo botão.","pattern":"^\\+?[0-9 ()-]{5,30}$"}},"additionalProperties":false,"required":["type","texto","phone_number"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_copy","cta_opt","cta_otp"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"copy_code":{"type":"string","minLength":1,"description":"Texto ou código copiado pelo botão."}},"additionalProperties":false,"required":["type","texto","copy_code"]}]},"minItems":1,"maxItems":10}},"additionalProperties":false,"required":["numero","texto","botoes"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal."},"titulo":{"type":"string","description":"Título opcional."},"footer":{"type":"string","description":"Rodapé opcional."},"botoes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["quick_reply"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"id":{"type":"string","minLength":1,"description":"ID único do botão."}},"additionalProperties":false,"required":["type","texto","id"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_url"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["type","texto","url"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_call"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"phone_number":{"type":"string","minLength":1,"description":"Número discado pelo botão.","pattern":"^\\+?[0-9 ()-]{5,30}$"}},"additionalProperties":false,"required":["type","texto","phone_number"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_copy","cta_opt","cta_otp"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"copy_code":{"type":"string","minLength":1,"description":"Texto ou código copiado pelo botão."}},"additionalProperties":false,"required":["type","texto","copy_code"]}]},"minItems":1,"maxItems":10}},"additionalProperties":false,"required":["numero","texto","botoes"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},"examples":{"respostas":{"summary":"Botões de resposta rápida","value":{"messageData":{"numero":"5511999999999","texto":"Como podemos ajudar?","botoes":[{"type":"quick_reply","id":"suporte","texto":"Suporte"},{"type":"quick_reply","id":"vendas","texto":"Vendas"}]}}},"acoes":{"summary":"Botões de site, telefone e copiar","value":{"messageData":{"numero":"5511999999999","texto":"Fale com a MVO","botoes":[{"type":"cta_url","texto":"Abrir site","url":"https://www.mvo.host/"},{"type":"cta_call","texto":"Ligar","phone_number":"+5511999999999"},{"type":"cta_copy","texto":"Copiar protocolo","copy_code":"MVO-2026-001"}]}}}}}}},"x-mvo-operation":"message.buttons"}},"/v1/instances/cliente-01/operations/message.charge":{"post":{"operationId":"client_operation_message_charge","summary":"message.charge","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.charge. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enviar cobrança em BRL usando PIX, boleto ou link de pagamento já existente. A API calcula o total a partir dos itens (centavos, offset 100); não cria PIX/boleto, não confirma pagamento. Substitua os dados pelo instrumento real. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar cobrança em BRL usando PIX, boleto ou link de pagamento já existente. A API calcula o total a partir dos itens (centavos, offset 100); não cria PIX/boleto, não confirma pagamento. Substitua os dados pelo instrumento real.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"body":{"type":"object","properties":{"texto":{"type":"string","minLength":1,"description":"Texto da cobrança."},"footer":{"type":"string","description":"Rodapé."},"header":{"type":"object","properties":{"title":{"type":"string","description":"Título opcional da cobrança."},"hasMediaAttachment":{"type":"boolean","default":false},"type":{"type":"string","minLength":1,"enum":["image","video","document"]},"imageMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]}},"additionalProperties":false,"anyOf":[{"properties":{"hasMediaAttachment":{"type":"boolean","enum":[false]}}},{"required":["hasMediaAttachment","type","imageMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["image"]}}},{"required":["hasMediaAttachment","type","videoMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["video"]}}},{"required":["hasMediaAttachment","type","documentMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["document"]}}}]},"items":{"type":"array","items":{"type":"object","properties":{"retailer_id":{"type":"string","minLength":1,"description":"Referência do item na sua aplicação."},"name":{"type":"string","minLength":1,"description":"Nome do item."},"amount":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":100000000000,"description":"Valor inteiro em centavos (2990 = R$ 29,90)."},"offset":{"type":"integer","minimum":100,"maximum":100,"default":100}},"additionalProperties":false,"required":["value"]},"quantity":{"type":"integer","minimum":1,"maximum":1000000}},"additionalProperties":false,"required":["retailer_id","name","amount","quantity"]},"minItems":1,"maxItems":100},"pixEnabled":{"type":"boolean","default":false},"pixData":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Código PIX copia e cola completo."},"merchant_name":{"type":"string","minLength":1,"description":"Nome do recebedor."},"key":{"type":"string","minLength":1,"description":"Chave PIX do recebedor."},"key_type":{"type":"string","minLength":1,"enum":["CNPJ","CPF","EMAIL","PHONE","EVP"]}},"additionalProperties":false,"required":["code","merchant_name","key","key_type"]},"boletoEnabled":{"type":"boolean","default":false},"boletoData":{"type":"object","properties":{"digitable_line":{"type":"string","minLength":1,"description":"Linha digitável do boleto."}},"additionalProperties":false,"required":["digitable_line"]},"UrlEnabled":{"type":"boolean","default":false},"urlData":{"type":"object","properties":{"uri":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["uri"]}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"pixEnabled":{"type":"boolean","enum":[false]}}},{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"boletoEnabled":{"type":"boolean","enum":[false]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"UrlEnabled":{"type":"boolean","enum":[false]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]}],"required":["texto","items"]}},"additionalProperties":false,"required":["numero","body"]},{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto da cobrança."},"footer":{"type":"string","description":"Rodapé."},"header":{"type":"object","properties":{"title":{"type":"string","description":"Título opcional da cobrança."},"hasMediaAttachment":{"type":"boolean","default":false},"type":{"type":"string","minLength":1,"enum":["image","video","document"]},"imageMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]}},"additionalProperties":false,"anyOf":[{"properties":{"hasMediaAttachment":{"type":"boolean","enum":[false]}}},{"required":["hasMediaAttachment","type","imageMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["image"]}}},{"required":["hasMediaAttachment","type","videoMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["video"]}}},{"required":["hasMediaAttachment","type","documentMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["document"]}}}]},"items":{"type":"array","items":{"type":"object","properties":{"retailer_id":{"type":"string","minLength":1,"description":"Referência do item na sua aplicação."},"name":{"type":"string","minLength":1,"description":"Nome do item."},"amount":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":100000000000,"description":"Valor inteiro em centavos (2990 = R$ 29,90)."},"offset":{"type":"integer","minimum":100,"maximum":100,"default":100}},"additionalProperties":false,"required":["value"]},"quantity":{"type":"integer","minimum":1,"maximum":1000000}},"additionalProperties":false,"required":["retailer_id","name","amount","quantity"]},"minItems":1,"maxItems":100},"pixEnabled":{"type":"boolean","default":false},"pixData":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Código PIX copia e cola completo."},"merchant_name":{"type":"string","minLength":1,"description":"Nome do recebedor."},"key":{"type":"string","minLength":1,"description":"Chave PIX do recebedor."},"key_type":{"type":"string","minLength":1,"enum":["CNPJ","CPF","EMAIL","PHONE","EVP"]}},"additionalProperties":false,"required":["code","merchant_name","key","key_type"]},"boletoEnabled":{"type":"boolean","default":false},"boletoData":{"type":"object","properties":{"digitable_line":{"type":"string","minLength":1,"description":"Linha digitável do boleto."}},"additionalProperties":false,"required":["digitable_line"]},"UrlEnabled":{"type":"boolean","default":false},"urlData":{"type":"object","properties":{"uri":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["uri"]}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"pixEnabled":{"type":"boolean","enum":[false]}}},{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"boletoEnabled":{"type":"boolean","enum":[false]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"UrlEnabled":{"type":"boolean","enum":[false]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]}],"required":["numero","texto","items"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto da cobrança."},"footer":{"type":"string","description":"Rodapé."},"header":{"type":"object","properties":{"title":{"type":"string","description":"Título opcional da cobrança."},"hasMediaAttachment":{"type":"boolean","default":false},"type":{"type":"string","minLength":1,"enum":["image","video","document"]},"imageMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]}},"additionalProperties":false,"anyOf":[{"properties":{"hasMediaAttachment":{"type":"boolean","enum":[false]}}},{"required":["hasMediaAttachment","type","imageMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["image"]}}},{"required":["hasMediaAttachment","type","videoMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["video"]}}},{"required":["hasMediaAttachment","type","documentMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["document"]}}}]},"items":{"type":"array","items":{"type":"object","properties":{"retailer_id":{"type":"string","minLength":1,"description":"Referência do item na sua aplicação."},"name":{"type":"string","minLength":1,"description":"Nome do item."},"amount":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":100000000000,"description":"Valor inteiro em centavos (2990 = R$ 29,90)."},"offset":{"type":"integer","minimum":100,"maximum":100,"default":100}},"additionalProperties":false,"required":["value"]},"quantity":{"type":"integer","minimum":1,"maximum":1000000}},"additionalProperties":false,"required":["retailer_id","name","amount","quantity"]},"minItems":1,"maxItems":100},"pixEnabled":{"type":"boolean","default":false},"pixData":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Código PIX copia e cola completo."},"merchant_name":{"type":"string","minLength":1,"description":"Nome do recebedor."},"key":{"type":"string","minLength":1,"description":"Chave PIX do recebedor."},"key_type":{"type":"string","minLength":1,"enum":["CNPJ","CPF","EMAIL","PHONE","EVP"]}},"additionalProperties":false,"required":["code","merchant_name","key","key_type"]},"boletoEnabled":{"type":"boolean","default":false},"boletoData":{"type":"object","properties":{"digitable_line":{"type":"string","minLength":1,"description":"Linha digitável do boleto."}},"additionalProperties":false,"required":["digitable_line"]},"UrlEnabled":{"type":"boolean","default":false},"urlData":{"type":"object","properties":{"uri":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["uri"]}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"pixEnabled":{"type":"boolean","enum":[false]}}},{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"boletoEnabled":{"type":"boolean","enum":[false]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"UrlEnabled":{"type":"boolean","enum":[false]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]}],"required":["numero","texto","items"]}]},"examples":{"link":{"summary":"Cobrança com link existente","value":{"numero":"5511999999999","body":{"texto":"Cobrança do plano MVO","header":{"title":"Pedido MVO-001"},"footer":"MVO","items":[{"retailer_id":"plano-01","name":"Hospedagem","amount":{"value":2990,"offset":100},"quantity":1}],"UrlEnabled":true,"urlData":{"uri":"https://www.mvo.host/"}}}},"pix":{"summary":"Cobrança com PIX existente (substitua code/key)","value":{"numero":"5511999999999","body":{"texto":"Pagamento do pedido MVO-001","items":[{"retailer_id":"plano-01","name":"Hospedagem","amount":{"value":2990,"offset":100},"quantity":1}],"pixEnabled":true,"pixData":{"code":"000201010212...CODIGO_PIX_REAL","merchant_name":"MVO","key":"financeiro@mvo.host","key_type":"EMAIL"}}}}}}}},"x-mvo-operation":"message.charge"}},"/v1/instances/cliente-01/operations/message.contact":{"post":{"operationId":"client_operation_message_contact","summary":"message.contact","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.contact. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enviar cartão de contato vCard. numero é o destinatário; vcard.phoneNumber é o número do contato compartilhado. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar cartão de contato vCard. numero é o destinatário; vcard.phoneNumber é o número do contato compartilhado.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"vcard":{"type":"object","properties":{"fullName":{"type":"string","minLength":1,"description":"Nome completo do contato."},"phoneNumber":{"type":"string","minLength":1,"description":"Telefone do contato, com DDI e DDD.","example":"5511999999999"},"organization":{"type":"string","description":"Organização do contato."}},"additionalProperties":false,"required":["fullName","phoneNumber"]}},"additionalProperties":false,"required":["numero","vcard"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"vcard":{"type":"object","properties":{"fullName":{"type":"string","minLength":1,"description":"Nome completo do contato."},"phoneNumber":{"type":"string","minLength":1,"description":"Telefone do contato, com DDI e DDD.","example":"5511999999999"},"organization":{"type":"string","description":"Organização do contato."}},"additionalProperties":false,"required":["fullName","phoneNumber"]}},"additionalProperties":false,"required":["numero","vcard"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},"example":{"messageData":{"numero":"5511999999999","vcard":{"fullName":"Equipe MVO","phoneNumber":"5511999999999","organization":"MVO Host"}}}}}},"x-mvo-operation":"message.contact"}},"/v1/instances/cliente-01/operations/message.delete":{"delete":{"operationId":"client_operation_message_delete","summary":"message.delete","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.delete. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Apagar mensagem para todos (revogação), sujeito às permissões e ao prazo do WhatsApp. Copie a chave real da mensagem.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Apagar mensagem para todos (revogação), sujeito às permissões e ao prazo do WhatsApp. Copie a chave real da mensagem.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]}},"additionalProperties":false,"required":["numero","key"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"data":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]}},"additionalProperties":false,"required":["numero","key"]}},"additionalProperties":false,"required":["data"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]}},"additionalProperties":false,"required":["numero","key"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo. Também aceita envelope data."},"example":{"messageData":{"numero":"5511999999999","key":{"id":"3EB0MVOEXEMPLO001","remoteJid":"5511999999999@s.whatsapp.net","fromMe":true}}}}}},"x-mvo-operation":"message.delete"}},"/v1/instances/cliente-01/operations/message.download":{"post":{"operationId":"client_operation_message_download","summary":"message.download","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.download. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Baixar e descriptografar mídia usando metadados reais do evento/histórico. O retorno data é Base64. O exemplo mostra a estrutura; substitua mediaKey, hashes, directPath/URL e tamanho pelos valores do arquivo recebido. POST recebe no corpo JSON as chaves e os metadados necessários para baixar a mídia.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Baixar e descriptografar mídia usando metadados reais do evento/histórico. O retorno data é Base64. O exemplo mostra a estrutura; substitua mediaKey, hashes, directPath/URL e tamanho pelos valores do arquivo recebido.","content":{"application/json":{"schema":{"type":"object","properties":{"messageKeys":{"anyOf":[{"type":"object","properties":{"messageType":{"type":"string","minLength":1,"enum":["image","imageMessage","video","videoMessage","audio","audioMessage","ptt","gif","ptv","document","documentMessage","sticker","stickerMessage"]},"mediaType":{"type":"string","minLength":1,"description":"Alias de messageType.","enum":["image","video","audio","ptt","gif","ptv","document","sticker"]},"mediaKey":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileEncSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"directPath":{"type":"string","minLength":1,"description":"Caminho de mídia retornado pelo WhatsApp, começando por /, ou URL de CDN HTTPS.","example":"/v/t62.7118-24/ARQUIVO_REAL.enc"},"url":{"type":"string","minLength":1,"description":"URL original de CDN WhatsApp (whatsapp.net, whatsapp.com ou fbcdn.net).","format":"uri","pattern":"^https://","maxLength":8192},"fileLength":{"type":"integer","minimum":0},"mimetype":{"type":"string","minLength":1,"example":"image/png"},"fileName":{"type":"string","minLength":1}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["messageType"]},{"required":["mediaType"]}]},{"anyOf":[{"required":["directPath"]},{"required":["url"]}]}],"required":["mediaKey"]},{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"audioMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"stickerMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]}},"additionalProperties":true,"description":"Mensagem protobuf de mídia original. Copie integralmente do evento; envelopes ephemeral/viewOnceMessage conhecidos também são desembrulhados pela biblioteca."},"proto":{"type":"object","properties":{"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"audioMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"stickerMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]}},"additionalProperties":true,"description":"Mensagem protobuf de mídia original. Copie integralmente do evento; envelopes ephemeral/viewOnceMessage conhecidos também são desembrulhados pela biblioteca."}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"media":{"type":"object","properties":{"messageType":{"type":"string","minLength":1,"enum":["image","imageMessage","video","videoMessage","audio","audioMessage","ptt","gif","ptv","document","documentMessage","sticker","stickerMessage"]},"mediaType":{"type":"string","minLength":1,"description":"Alias de messageType.","enum":["image","video","audio","ptt","gif","ptv","document","sticker"]},"mediaKey":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileEncSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"directPath":{"type":"string","minLength":1,"description":"Caminho de mídia retornado pelo WhatsApp, começando por /, ou URL de CDN HTTPS.","example":"/v/t62.7118-24/ARQUIVO_REAL.enc"},"url":{"type":"string","minLength":1,"description":"URL original de CDN WhatsApp (whatsapp.net, whatsapp.com ou fbcdn.net).","format":"uri","pattern":"^https://","maxLength":8192},"fileLength":{"type":"integer","minimum":0},"mimetype":{"type":"string","minLength":1,"example":"image/png"},"fileName":{"type":"string","minLength":1}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["messageType"]},{"required":["mediaType"]}]},{"anyOf":[{"required":["directPath"]},{"required":["url"]}]}],"required":["mediaKey"]}},"additionalProperties":false,"required":["media"]}],"description":"Preferencialmente envie o descritor media do evento. Também aceita message/proto com mídia e mediaKey, protobuf direto ou envelopes retorno/msgData conhecidos; copie o objeto original."},"messageType":{"type":"string","minLength":1,"enum":["image","imageMessage","video","videoMessage","audio","audioMessage","ptt","gif","ptv","document","documentMessage","sticker","stickerMessage"]},"mediaType":{"type":"string","minLength":1,"description":"Alias de messageType.","enum":["image","video","audio","ptt","gif","ptv","document","sticker"]},"mediaKey":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileEncSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"directPath":{"type":"string","minLength":1,"description":"Caminho de mídia retornado pelo WhatsApp, começando por /, ou URL de CDN HTTPS.","example":"/v/t62.7118-24/ARQUIVO_REAL.enc"},"url":{"type":"string","minLength":1,"description":"URL original de CDN WhatsApp (whatsapp.net, whatsapp.com ou fbcdn.net).","format":"uri","pattern":"^https://","maxLength":8192},"fileLength":{"type":"integer","minimum":0},"mimetype":{"type":"string","minLength":1,"example":"image/png"},"fileName":{"type":"string","minLength":1},"media":{"type":"object","properties":{"messageType":{"type":"string","minLength":1,"enum":["image","imageMessage","video","videoMessage","audio","audioMessage","ptt","gif","ptv","document","documentMessage","sticker","stickerMessage"]},"mediaType":{"type":"string","minLength":1,"description":"Alias de messageType.","enum":["image","video","audio","ptt","gif","ptv","document","sticker"]},"mediaKey":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"fileEncSha256":{"description":"Chave/hash original de exatamente 32 bytes. Copie do evento, em Base64 ou formato de bytes legado.","anyOf":[{"type":"string","minLength":44,"format":"byte","maxLength":44},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["Buffer"]},"data":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":32,"maxItems":32}},"additionalProperties":false,"required":["type","data"]},{"type":"object","properties":{"encoding":{"type":"string","minLength":1,"enum":["base64"]},"data":{"type":"string","minLength":44,"format":"byte","maxLength":44}},"additionalProperties":false,"required":["encoding","data"]}]},"directPath":{"type":"string","minLength":1,"description":"Caminho de mídia retornado pelo WhatsApp, começando por /, ou URL de CDN HTTPS.","example":"/v/t62.7118-24/ARQUIVO_REAL.enc"},"url":{"type":"string","minLength":1,"description":"URL original de CDN WhatsApp (whatsapp.net, whatsapp.com ou fbcdn.net).","format":"uri","pattern":"^https://","maxLength":8192},"fileLength":{"type":"integer","minimum":0},"mimetype":{"type":"string","minLength":1,"example":"image/png"},"fileName":{"type":"string","minLength":1}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["messageType"]},{"required":["mediaType"]}]},{"anyOf":[{"required":["directPath"]},{"required":["url"]}]}],"required":["mediaKey"]},"message":{"type":"object","properties":{"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"audioMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"stickerMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]}},"additionalProperties":true,"description":"Mensagem protobuf de mídia original. Copie integralmente do evento; envelopes ephemeral/viewOnceMessage conhecidos também são desembrulhados pela biblioteca."},"proto":{"type":"object","properties":{"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"audioMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]},"stickerMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true,"required":["mediaKey"]}},"additionalProperties":true,"description":"Mensagem protobuf de mídia original. Copie integralmente do evento; envelopes ephemeral/viewOnceMessage conhecidos também são desembrulhados pela biblioteca."},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]}},"additionalProperties":true,"anyOf":[{"required":["messageKeys"]},{"required":["media"]},{"required":["message"]},{"required":["proto"]},{"required":["mediaKey"],"allOf":[{"anyOf":[{"required":["messageType"]},{"required":["mediaType"]}]},{"anyOf":[{"required":["directPath"]},{"required":["url"]}]}]}]},"example":{"messageKeys":{"messageType":"image","mediaKey":"AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM=","fileSha256":"BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ=","fileEncSha256":"BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU=","directPath":"/v/t62.7118-24/SUBSTITUA_PELO_CAMINHO_REAL.enc","mimetype":"image/png","fileLength":1024}}}}},"x-mvo-operation":"message.download"}},"/v1/instances/cliente-01/operations/message.edit":{"patch":{"operationId":"client_operation_message_edit","summary":"message.edit","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.edit. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Editar mensagem enviada pela própria sessão. keyMsg.fromMe deve ser true e a mensagem precisa ser editável no WhatsApp.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Editar mensagem enviada pela própria sessão. keyMsg.fromMe deve ser true e a mensagem precisa ser editável no WhatsApp.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Novo texto da mensagem."},"keyMsg":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","enum":[true],"description":"A edição exige mensagem enviada pela própria sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id","fromMe"]}},"additionalProperties":false,"required":["numero","text","keyMsg"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Novo texto da mensagem."},"keyMsg":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","enum":[true],"description":"A edição exige mensagem enviada pela própria sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id","fromMe"]}},"additionalProperties":false,"required":["numero","text","keyMsg"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},"example":{"messageData":{"numero":"5511999999999","text":"Texto corrigido pela API MVO","keyMsg":{"id":"3EB0MVOEXEMPLO001","remoteJid":"5511999999999@s.whatsapp.net","fromMe":true}}}}}},"x-mvo-operation":"message.edit"}},"/v1/instances/cliente-01/operations/message.event":{"post":{"operationId":"client_operation_message_event","summary":"message.event","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.event. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Criar evento. startDate/endDate usam segundos Unix. Se houver call, informe joinLink real de chamada já existente. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Criar evento. startDate/endDate usam segundos Unix. Se houver call, informe joinLink real de chamada já existente.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"evento":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Nome do evento."},"startDate":{"type":"integer","minimum":0,"description":"Início em Unix timestamp, segundos (não milissegundos)."},"endDate":{"type":"integer","minimum":0,"description":"Fim em Unix timestamp, segundos; deve ser >= startDate."},"description":{"type":"string","description":"Descrição."},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"degreesLatitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"degreesLongitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"name":{"type":"string"},"address":{"type":"string"}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["latitude"]},{"required":["degreesLatitude"]}]},{"anyOf":[{"required":["longitude"]},{"required":["degreesLongitude"]}]}]},"call":{"type":"string","minLength":1,"description":"Exige joinLink existente; a API não gera esse link.","enum":["audio","video"]},"joinLink":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"anyOf":[{"not":{"required":["call"]}},{"required":["call","joinLink"]}],"required":["name","startDate"]}},"additionalProperties":false,"required":["numero","evento"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"evento":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Nome do evento."},"startDate":{"type":"integer","minimum":0,"description":"Início em Unix timestamp, segundos (não milissegundos)."},"endDate":{"type":"integer","minimum":0,"description":"Fim em Unix timestamp, segundos; deve ser >= startDate."},"description":{"type":"string","description":"Descrição."},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"degreesLatitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"degreesLongitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"name":{"type":"string"},"address":{"type":"string"}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["latitude"]},{"required":["degreesLatitude"]}]},{"anyOf":[{"required":["longitude"]},{"required":["degreesLongitude"]}]}]},"call":{"type":"string","minLength":1,"description":"Exige joinLink existente; a API não gera esse link.","enum":["audio","video"]},"joinLink":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"anyOf":[{"not":{"required":["call"]}},{"required":["call","joinLink"]}],"required":["name","startDate"]}},"additionalProperties":false,"required":["numero","evento"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},"example":{"messageData":{"numero":"5511999999999","evento":{"name":"Demonstração MVO","startDate":1800000000,"endDate":1800003600,"description":"Apresentação do serviço","location":{"latitude":-23.5505,"longitude":-46.6333,"name":"São Paulo"}}}}}}},"x-mvo-operation":"message.event"}},"/v1/instances/cliente-01/operations/message.flow":{"post":{"operationId":"client_operation_message_flow","summary":"message.flow","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.flow. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enviar Flow navigate inline com flow_json, sem exigir flow_id; a primeira tela é inferida quando screen não é informado. Também aceita flow_id de Flow publicado. Para data_exchange informe action e um flow_id registrado com endpoint configurado. O botão usa o formato nativo galaxy_message. Publicar o Flow na Meta é uma operação separada. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar Flow navigate inline com flow_json, sem exigir flow_id; a primeira tela é inferida quando screen não é informado. Também aceita flow_id de Flow publicado. Para data_exchange informe action e um flow_id registrado com endpoint configurado. O botão usa o formato nativo galaxy_message. Publicar o Flow na Meta é uma operação separada.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"oneOf":[{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_id","screen"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["screen"],"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_id","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_json"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_json","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["data_exchange"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["data_exchange"]}},"required":["numero","flow_id","flow_token"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]},{"anyOf":[{"required":["action"]},{"required":["flow_action"]}]}]}]}},"required":["messageData"],"additionalProperties":false},{"oneOf":[{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_id","screen"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["screen"],"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_id","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_json"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_json","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["data_exchange"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["data_exchange"]}},"required":["numero","flow_id","flow_token"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]},{"anyOf":[{"required":["action"]},{"required":["flow_action"]}]}]}]}],"description":"Aceita messageData ou os mesmos campos diretamente no corpo. Use somente uma forma de cada alias."},"examples":{"inline":{"summary":"Flow navigate inline, sem flow_id","value":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_json":{"version":"7.3","screens":[{"id":"INICIO","title":"Cadastro MVO","terminal":true,"success":true,"data":{},"layout":{"type":"SingleColumnLayout","children":[{"type":"Form","name":"form","children":[{"type":"TextInput","name":"name","label":"Nome","required":true},{"type":"Footer","label":"Enviar","on-click-action":{"name":"complete","payload":{"name":"${form.name}"}}}]}]}}]}}}},"published":{"summary":"Flow publicado: substitua flow_id pelo ID real","value":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_id":"123456789012345","screen":"INICIO","data":{"cliente_id":42}}}},"published_payload":{"summary":"Flow publicado com payload: substitua flow_id pelo ID real","value":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_id":"123456789012345","flow_action_payload":{"screen":"INICIO","data":{"cliente_id":42}}}}},"published_with_endpoint":{"summary":"Navigate com endpoint registrado: substitua flow_id pelo ID real","value":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_id":"123456789012345","screen":"INICIO","data":{"cliente_id":42},"data_api_version":"3.0"}}},"data_exchange":{"summary":"Flow registrado com endpoint: substitua flow_id pelo ID real","value":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_id":"123456789012345","data_api_version":"3.0","action":"data_exchange"}}}}}}},"x-mvo-operation":"message.flow"}},"/v1/instances/cliente-01/operations/message.flow.exchange":{"post":{"operationId":"client_operation_message_flow_exchange","summary":"message.flow.exchange","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.flow.exchange. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Abrir Flow registrado com data_exchange. Exige flow_id e endpoint de dados configurado, com metadados e chaves do Flow. A biblioteca inclui flow_metadata.data_api_version=3.0 para solicitar a consulta remota e verificação da chave/assinatura do endpoint pelo cliente. O campo opcional data_api_version aceita somente a string 3.0. flow_json, screen, data e flow_action_payload são rejeitados; enviar uma definição inline não registra nem configura o endpoint. O botão usa galaxy_message. A execução real do endpoint ainda não foi homologada. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Abrir Flow registrado com data_exchange. Exige flow_id e endpoint de dados configurado, com metadados e chaves do Flow. A biblioteca inclui flow_metadata.data_api_version=3.0 para solicitar a consulta remota e verificação da chave/assinatura do endpoint pelo cliente. O campo opcional data_api_version aceita somente a string 3.0. flow_json, screen, data e flow_action_payload são rejeitados; enviar uma definição inline não registra nem configura o endpoint. O botão usa galaxy_message. A execução real do endpoint ainda não foi homologada.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["data_exchange"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["data_exchange"]}},"required":["numero","flow_id","flow_token"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}},"required":["messageData"],"additionalProperties":false},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["data_exchange"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["data_exchange"]}},"required":["numero","flow_id","flow_token"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}],"description":"Aceita messageData ou os mesmos campos diretamente no corpo. Use somente uma forma de cada alias."},"example":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_id":"123456789012345","data_api_version":"3.0"}}}}},"x-mvo-operation":"message.flow.exchange"}},"/v1/instances/cliente-01/operations/message.flow.navigate":{"post":{"operationId":"client_operation_message_flow_navigate","summary":"message.flow.navigate","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.flow.navigate. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enviar Flow navigate inline com flow_json, sem exigir flow_id; a primeira tela é inferida quando screen não é informado. Também aceita flow_id de Flow publicado. O botão usa o formato nativo galaxy_message. Publicar o Flow na Meta é uma operação separada. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar Flow navigate inline com flow_json, sem exigir flow_id; a primeira tela é inferida quando screen não é informado. Também aceita flow_id de Flow publicado. O botão usa o formato nativo galaxy_message. Publicar o Flow na Meta é uma operação separada.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_id","screen"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["screen"],"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_id","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_json"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_json","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}]}},"required":["messageData"],"additionalProperties":false},{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_id","screen"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["screen"],"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_id","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_json"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_json","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}]}],"description":"Aceita messageData ou os mesmos campos diretamente no corpo. Use somente uma forma de cada alias."},"examples":{"inline":{"summary":"Flow navigate inline, sem flow_id","value":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_json":{"version":"7.3","screens":[{"id":"INICIO","title":"Cadastro MVO","terminal":true,"success":true,"data":{},"layout":{"type":"SingleColumnLayout","children":[{"type":"Form","name":"form","children":[{"type":"TextInput","name":"name","label":"Nome","required":true},{"type":"Footer","label":"Enviar","on-click-action":{"name":"complete","payload":{"name":"${form.name}"}}}]}]}}]}}}},"published":{"summary":"Flow publicado: substitua flow_id pelo ID real","value":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_id":"123456789012345","screen":"INICIO","data":{"cliente_id":42}}}},"published_payload":{"summary":"Flow publicado com payload: substitua flow_id pelo ID real","value":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_id":"123456789012345","flow_action_payload":{"screen":"INICIO","data":{"cliente_id":42}}}}},"published_with_endpoint":{"summary":"Navigate com endpoint registrado: substitua flow_id pelo ID real","value":{"messageData":{"numero":"5511999999999","texto":"Complete seu cadastro","titulo":"Cadastro MVO","cta":"Abrir cadastro","flow_token":"cliente-42-cadastro-001","flow_id":"123456789012345","screen":"INICIO","data":{"cliente_id":42},"data_api_version":"3.0"}}}}}}},"x-mvo-operation":"message.flow.navigate"}},"/v1/instances/cliente-01/operations/message.form":{"post":{"operationId":"client_operation_message_form","summary":"message.form","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.form. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enviar formulário nativo form_message/a2ui_form pela sessão PHP, sem cadastro Meta, flow_id, flow_token ou endpoint. Use 1 a 3 etapas. platform=portable é o padrão, com escolhas de 1 a 5 opções por etapa validadas no Web e Android. platform=android habilita kind=input com 1 a 5 campos de texto, validado no Android; não prometa compatibilidade Web para InputFields. Não recebe flow_json, schema bruto nem metadados de protocolo. Respostas chegam em parsedFormResponse nos eventos e formResponse nos webhooks. Correlacione pelo ID citado quando disponível ou por IDs únicos dos campos; não há flow_token inventado. Esse formato é distinto de Galaxy data_exchange. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar formulário nativo form_message/a2ui_form pela sessão PHP, sem cadastro Meta, flow_id, flow_token ou endpoint. Use 1 a 3 etapas. platform=portable é o padrão, com escolhas de 1 a 5 opções por etapa validadas no Web e Android. platform=android habilita kind=input com 1 a 5 campos de texto, validado no Android; não prometa compatibilidade Web para InputFields. Não recebe flow_json, schema bruto nem metadados de protocolo. Respostas chegam em parsedFormResponse nos eventos e formResponse nos webhooks. Correlacione pelo ID citado quando disponível ou por IDs únicos dos campos; não há flow_token inventado. Esse formato é distinto de Galaxy data_exchange.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false}},"platform":{"type":"string","enum":["portable"],"default":"portable","description":"Escolhas compatíveis com o caminho validado no Web e Android. Campos input não são aceitos."}},"required":["numero","cta","steps"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"oneOf":[{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false},{"type":"object","required":["id","label","kind","fields"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Título da etapa, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["input"]},"fields":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","label","type","required"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID do campo retornado, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Rótulo do campo, até 1024 bytes UTF-8."},"type":{"type":"string","enum":["text"]},"required":{"type":"boolean","description":"Indica se o preenchimento é obrigatório."},"default":{"type":"string","maxLength":128,"description":"Valor inicial opcional. Limite real de 128 unidades UTF-16, como no Android: um emoji ocupa duas unidades."}},"additionalProperties":false}},"button":{"type":"string","minLength":1,"maxLength":30,"description":"Botão de envio da etapa. Se omitido, usa cta; até 30 caracteres Unicode."}},"additionalProperties":false}]}},"platform":{"type":"string","enum":["android"],"description":"Habilita InputFields validado no Android. Não há suporte Web confirmado para essas etapas."}},"required":["numero","cta","steps","platform"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]}]}},"required":["messageData"],"additionalProperties":false},{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false}},"platform":{"type":"string","enum":["portable"],"default":"portable","description":"Escolhas compatíveis com o caminho validado no Web e Android. Campos input não são aceitos."}},"required":["numero","cta","steps"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"oneOf":[{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false},{"type":"object","required":["id","label","kind","fields"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Título da etapa, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["input"]},"fields":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","label","type","required"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID do campo retornado, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Rótulo do campo, até 1024 bytes UTF-8."},"type":{"type":"string","enum":["text"]},"required":{"type":"boolean","description":"Indica se o preenchimento é obrigatório."},"default":{"type":"string","maxLength":128,"description":"Valor inicial opcional. Limite real de 128 unidades UTF-16, como no Android: um emoji ocupa duas unidades."}},"additionalProperties":false}},"button":{"type":"string","minLength":1,"maxLength":30,"description":"Botão de envio da etapa. Se omitido, usa cta; até 30 caracteres Unicode."}},"additionalProperties":false}]}},"platform":{"type":"string","enum":["android"],"description":"Habilita InputFields validado no Android. Não há suporte Web confirmado para essas etapas."}},"required":["numero","cta","steps","platform"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]}]}],"description":"Aceita messageData ou os mesmos campos diretamente no corpo."},"examples":{"single":{"summary":"Formulário nativo com escolha única","value":{"messageData":{"numero":"5511999999999","texto":"Como você prefere ser atendido?","titulo":"Atendimento MVO","cta":"Responder","steps":[{"id":"preferencia","label":"Escolha o atendimento","selection":"single","options":[{"id":"suporte","title":"Suporte técnico"},{"id":"comercial","title":"Comercial"}],"allow_custom_answer":true}]}}},"multiple":{"summary":"Escolhas múltiplas e mais de uma etapa","value":{"messageData":{"numero":"5511999999999","texto":"Personalize seu atendimento.","cta":"Escolher","steps":[{"id":"servicos","label":"Quais serviços você procura?","selection":"multiple","options":[{"id":"hospedagem","title":"Hospedagem"},{"id":"whatsapp","title":"WhatsApp"},{"id":"dominio","title":"Domínio"}]},{"id":"periodo","label":"Quando prefere receber contato?","selection":"single","options":[{"id":"manha","title":"Manhã"},{"id":"tarde","title":"Tarde"}]}]}}},"android_input":{"summary":"Campo Nome validado no Android; exige platform=android","value":{"messageData":{"numero":"5511999999999","texto":"Informe seu nome.","cta":"Abrir cadastro","platform":"android","steps":[{"id":"cadastro","label":"Cadastro MVO","kind":"input","button":"Enviar","fields":[{"id":"name","label":"Nome","type":"text","required":true,"default":""}]}]}}}}}}},"x-mvo-operation":"message.form"}},"/v1/instances/cliente-01/operations/message.forward":{"post":{"operationId":"client_operation_message_forward","summary":"message.forward","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.forward. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Encaminhar o protobuf de uma mensagem recebida ou enviada. O indicador de encaminhamento é aplicado pela biblioteca. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Encaminhar o protobuf de uma mensagem recebida ou enviada. O indicador de encaminhamento é aplicado pela biblioteca.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["numero","mensagem"]},{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"}},"additionalProperties":false,"required":["numero"]},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["messageData","mensagem"]}]},"example":{"numero":"5511999999999","mensagem":{"key":{"id":"3EB0MVOEXEMPLO001","remoteJid":"5511999999999@s.whatsapp.net","fromMe":false},"message":{"conversation":"Olá! Preciso de ajuda."}}}}}},"x-mvo-operation":"message.forward"}},"/v1/instances/cliente-01/operations/message.link":{"post":{"operationId":"client_operation_message_link","summary":"message.link","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.link. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enviar texto com metadados de link. Não realiza scraping automático do site ou thumbnail. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar texto com metadados de link. Não realiza scraping automático do site ou thumbnail.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto da mensagem com link."},"sourceUrl":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192},"url":{"type":"string","minLength":1,"description":"Alias de sourceUrl.","format":"uri","pattern":"^https://","maxLength":8192},"title":{"type":"string","description":"Título do preview."},"body":{"type":"string","description":"Descrição do preview."},"thumbnailUrl":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192},"mediaType":{"type":"string","minLength":1,"description":"Tipo do thumbnail externo.","enum":["image","video"],"default":"image"}},"additionalProperties":false,"anyOf":[{"required":["sourceUrl"]},{"required":["url"]}],"required":["numero","text"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto da mensagem com link."},"sourceUrl":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192},"url":{"type":"string","minLength":1,"description":"Alias de sourceUrl.","format":"uri","pattern":"^https://","maxLength":8192},"title":{"type":"string","description":"Título do preview."},"body":{"type":"string","description":"Descrição do preview."},"thumbnailUrl":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192},"mediaType":{"type":"string","minLength":1,"description":"Tipo do thumbnail externo.","enum":["image","video"],"default":"image"}},"additionalProperties":false,"anyOf":[{"required":["sourceUrl"]},{"required":["url"]}],"required":["numero","text"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},"example":{"messageData":{"numero":"5511999999999","text":"Conheça a MVO: https://www.mvo.host/","sourceUrl":"https://www.mvo.host/","title":"MVO","body":"Hospedagem e tecnologia"}}}}},"x-mvo-operation":"message.link"}},"/v1/instances/cliente-01/operations/message.list":{"post":{"operationId":"client_operation_message_list","summary":"message.list","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.list. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enviar lista de seleção única. Até 100 opções no total, com IDs únicos entre todas as seções. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar lista de seleção única. Até 100 opções no total, com IDs únicos entre todas as seções.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"titulo":{"type":"string","description":"Título da lista."},"title":{"type":"string","description":"Alias de titulo."},"texto":{"type":"string","minLength":1,"description":"Texto principal."},"text":{"type":"string","minLength":1,"description":"Alias de texto."},"textoBotao":{"type":"string","minLength":1,"description":"Rótulo do botão que abre a lista."},"buttonText":{"type":"string","minLength":1,"description":"Alias de textoBotao."},"footer":{"type":"string","description":"Rodapé."},"secoes":{"type":"array","items":{"type":"object","properties":{"titulo":{"type":"string","description":"Título da seção."},"title":{"type":"string","description":"Alias de titulo."},"opcoes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100,"description":"Alias de opcoes."}},"additionalProperties":false,"anyOf":[{"required":["opcoes"]},{"required":["rows"]}]},"minItems":1,"maxItems":100},"sections":{"type":"array","items":{"type":"object","properties":{"titulo":{"type":"string","description":"Título da seção."},"title":{"type":"string","description":"Alias de titulo."},"opcoes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100,"description":"Alias de opcoes."}},"additionalProperties":false,"anyOf":[{"required":["opcoes"]},{"required":["rows"]}]},"minItems":1,"maxItems":100,"description":"Alias de secoes."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["textoBotao"]},{"required":["buttonText"]}]},{"anyOf":[{"required":["secoes"]},{"required":["sections"]}]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"titulo":{"type":"string","description":"Título da lista."},"title":{"type":"string","description":"Alias de titulo."},"texto":{"type":"string","minLength":1,"description":"Texto principal."},"text":{"type":"string","minLength":1,"description":"Alias de texto."},"textoBotao":{"type":"string","minLength":1,"description":"Rótulo do botão que abre a lista."},"buttonText":{"type":"string","minLength":1,"description":"Alias de textoBotao."},"footer":{"type":"string","description":"Rodapé."},"secoes":{"type":"array","items":{"type":"object","properties":{"titulo":{"type":"string","description":"Título da seção."},"title":{"type":"string","description":"Alias de titulo."},"opcoes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100,"description":"Alias de opcoes."}},"additionalProperties":false,"anyOf":[{"required":["opcoes"]},{"required":["rows"]}]},"minItems":1,"maxItems":100},"sections":{"type":"array","items":{"type":"object","properties":{"titulo":{"type":"string","description":"Título da seção."},"title":{"type":"string","description":"Alias de titulo."},"opcoes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100,"description":"Alias de opcoes."}},"additionalProperties":false,"anyOf":[{"required":["opcoes"]},{"required":["rows"]}]},"minItems":1,"maxItems":100,"description":"Alias de secoes."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["textoBotao"]},{"required":["buttonText"]}]},{"anyOf":[{"required":["secoes"]},{"required":["sections"]}]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},"example":{"messageData":{"numero":"5511999999999","titulo":"Atendimento MVO","texto":"Selecione o serviço desejado","textoBotao":"Ver serviços","footer":"MVO","secoes":[{"titulo":"Serviços","opcoes":[{"id":"hospedagem","titulo":"Hospedagem","texto":"Conhecer nossos planos"},{"id":"suporte","titulo":"Suporte","texto":"Falar com a equipe"}]}]}}}}},"x-mvo-operation":"message.list"}},"/v1/instances/cliente-01/operations/message.location":{"post":{"operationId":"client_operation_message_location","summary":"message.location","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.location. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enviar localização estática. Coordenadas ficam em coordenadas ou diretamente no objeto de dados. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar localização estática. Coordenadas ficam em coordenadas ou diretamente no objeto de dados.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"coordenadas":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333}},"additionalProperties":false,"required":["latitude","longitude"]},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"name":{"type":"string","description":"Nome do local."},"address":{"type":"string","description":"Endereço do local."}},"additionalProperties":false,"anyOf":[{"required":["coordenadas"]},{"required":["latitude","longitude"]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"coordenadas":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333}},"additionalProperties":false,"required":["latitude","longitude"]},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"name":{"type":"string","description":"Nome do local."},"address":{"type":"string","description":"Endereço do local."}},"additionalProperties":false,"anyOf":[{"required":["coordenadas"]},{"required":["latitude","longitude"]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},"example":{"messageData":{"numero":"5511999999999","coordenadas":{"latitude":-23.5505,"longitude":-46.6333},"name":"São Paulo","address":"São Paulo, SP"}}}}},"x-mvo-operation":"message.location"}},"/v1/instances/cliente-01/operations/message.media":{"post":{"operationId":"client_operation_message_media","summary":"message.media","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.media. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enviar image, video, audio, document, sticker, gif, ptv ou ptt. Informe url HTTPS/data URI ou base64. Formato e codecs devem ser compatíveis com o WhatsApp. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar image, video, audio, document, sticker, gif, ptv ou ptt. Informe url HTTPS/data URI ou base64. Formato e codecs devem ser compatíveis com o WhatsApp.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"type":{"type":"string","minLength":1,"enum":["image","video","audio","document","sticker","gif","ptv","ptt"]},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"caption":{"type":"string","description":"Legenda da mídia."},"mimeType":{"type":"string","minLength":1,"description":"MIME do arquivo, quando necessário.","example":"image/png"},"nameFile":{"type":"string","minLength":1,"description":"Nome de arquivo sem diretórios. Alias de fileName.","maxLength":255},"fileName":{"type":"string","minLength":1,"description":"Nome de arquivo sem barras ou diretórios.","maxLength":255},"seconds":{"type":"integer","minimum":0,"description":"Duração em segundos, quando aplicável."},"viewOnce":{"type":"boolean","description":"Visualização única, quando suportada pelo tipo."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}],"required":["numero","type"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"type":{"type":"string","minLength":1,"enum":["image","video","audio","document","sticker","gif","ptv","ptt"]},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"caption":{"type":"string","description":"Legenda da mídia."},"mimeType":{"type":"string","minLength":1,"description":"MIME do arquivo, quando necessário.","example":"image/png"},"nameFile":{"type":"string","minLength":1,"description":"Nome de arquivo sem diretórios. Alias de fileName.","maxLength":255},"fileName":{"type":"string","minLength":1,"description":"Nome de arquivo sem barras ou diretórios.","maxLength":255},"seconds":{"type":"integer","minimum":0,"description":"Duração em segundos, quando aplicável."},"viewOnce":{"type":"boolean","description":"Visualização única, quando suportada pelo tipo."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}],"required":["numero","type"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},"examples":{"imagem_base64":{"summary":"Imagem PNG em Base64, pronta para teste","value":{"messageData":{"numero":"5511999999999","type":"image","base64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+jVZkAAAAASUVORK5CYII=","caption":"Imagem MVO","mimeType":"image/png"}}},"documento_url":{"summary":"Documento em URL HTTPS (substitua pela URL real)","value":{"messageData":{"numero":"5511999999999","type":"document","url":"https://seu-cdn.example/contrato.pdf","mimeType":"application/pdf","fileName":"contrato.pdf"}}},"video_url":{"summary":"Vídeo em URL HTTPS (substitua pela URL real)","value":{"messageData":{"numero":"5511999999999","type":"video","url":"https://seu-cdn.example/video.mp4","mimeType":"video/mp4","caption":"Apresentação"}}}}}}},"x-mvo-operation":"message.media"}},"/v1/instances/cliente-01/operations/message.payment":{"post":{"operationId":"client_operation_message_payment","summary":"message.payment","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.payment. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Solicitar pagamento em BRL pelo formato nativo. A API converte reais para amount1000; disponibilidade depende do WhatsApp e da conta. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Solicitar pagamento em BRL pelo formato nativo. A API converte reais para amount1000; disponibilidade depende do WhatsApp e da conta.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Nota da solicitação."},"valor":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":100000000,"description":"Valor em reais (29.90 = R$ 29,90)."}},"additionalProperties":false,"required":["numero","text","valor"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"data":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Nota da solicitação."},"valor":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":100000000,"description":"Valor em reais (29.90 = R$ 29,90)."}},"additionalProperties":false,"required":["numero","text","valor"]}},"additionalProperties":false,"required":["data"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Nota da solicitação."},"valor":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":100000000,"description":"Valor em reais (29.90 = R$ 29,90)."}},"additionalProperties":false,"required":["numero","text","valor"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo. Também aceita envelope data."},"example":{"messageData":{"numero":"5511999999999","text":"Pedido MVO-001","valor":29.9}}}}},"x-mvo-operation":"message.payment"}},"/v1/instances/cliente-01/operations/message.poll":{"post":{"operationId":"client_operation_message_poll","summary":"message.poll","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.poll. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Criar enquete com 1 a 12 opções. Cada opção pode ser texto ou objeto opcao/name. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Criar enquete com 1 a 12 opções. Cada opção pode ser texto ou objeto opcao/name.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"pergunta":{"type":"string","minLength":1,"description":"Pergunta da enquete."},"name":{"type":"string","minLength":1,"description":"Alias de pergunta."},"opcoes":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"opcao":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"description":"Alias de opcao."}},"additionalProperties":false,"anyOf":[{"required":["opcao"]},{"required":["name"]}]}]},"minItems":1,"maxItems":12},"options":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"opcao":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"description":"Alias de opcao."}},"additionalProperties":false,"anyOf":[{"required":["opcao"]},{"required":["name"]}]}]},"minItems":1,"maxItems":12,"description":"Alias de opcoes."},"selectableCount":{"type":"integer","minimum":0,"maximum":12,"default":1,"description":"0 permite múltiplas seleções; não pode exceder a quantidade de opções."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pergunta"]},{"required":["name"]}]},{"anyOf":[{"required":["opcoes"]},{"required":["options"]}]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"pergunta":{"type":"string","minLength":1,"description":"Pergunta da enquete."},"name":{"type":"string","minLength":1,"description":"Alias de pergunta."},"opcoes":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"opcao":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"description":"Alias de opcao."}},"additionalProperties":false,"anyOf":[{"required":["opcao"]},{"required":["name"]}]}]},"minItems":1,"maxItems":12},"options":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"opcao":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"description":"Alias de opcao."}},"additionalProperties":false,"anyOf":[{"required":["opcao"]},{"required":["name"]}]}]},"minItems":1,"maxItems":12,"description":"Alias de opcoes."},"selectableCount":{"type":"integer","minimum":0,"maximum":12,"default":1,"description":"0 permite múltiplas seleções; não pode exceder a quantidade de opções."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pergunta"]},{"required":["name"]}]},{"anyOf":[{"required":["opcoes"]},{"required":["options"]}]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},"example":{"messageData":{"numero":"5511999999999","pergunta":"Como prefere ser atendido?","opcoes":["WhatsApp","Telefone","E-mail"],"selectableCount":1}}}}},"x-mvo-operation":"message.poll"}},"/v1/instances/cliente-01/operations/message.reaction":{"put":{"operationId":"client_operation_message_reaction","summary":"message.reaction","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.reaction. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Adicionar ou remover a reação da sessão a uma mensagem real. Informe key ou idMsg.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Adicionar ou remover a reação da sessão a uma mensagem real. Informe key ou idMsg.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"reacao":{"type":"string","description":"Emoji da reação. Use string vazia para remover a própria reação."},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"idMsg":{"type":"string","minLength":1,"description":"Alias de key.id."},"fromMe":{"type":"boolean","default":false,"description":"Autor da mensagem alvo, quando usar idMsg."},"participant":{"type":"string","minLength":1,"description":"JID do autor da mensagem em grupo, quando usar idMsg."}},"additionalProperties":false,"anyOf":[{"required":["key"]},{"required":["idMsg"]}],"required":["numero","reacao"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"reacao":{"type":"string","description":"Emoji da reação. Use string vazia para remover a própria reação."},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"idMsg":{"type":"string","minLength":1,"description":"Alias de key.id."},"fromMe":{"type":"boolean","default":false,"description":"Autor da mensagem alvo, quando usar idMsg."},"participant":{"type":"string","minLength":1,"description":"JID do autor da mensagem em grupo, quando usar idMsg."}},"additionalProperties":false,"anyOf":[{"required":["key"]},{"required":["idMsg"]}],"required":["numero","reacao"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},"examples":{"reagir":{"summary":"Reagir com emoji","value":{"messageData":{"numero":"5511999999999","key":{"id":"3EB0MVOEXEMPLO001","fromMe":false},"reacao":"👍"}}},"remover":{"summary":"Remover a reação","value":{"messageData":{"numero":"5511999999999","idMsg":"3EB0MVOEXEMPLO001","fromMe":false,"reacao":""}}}}}}},"x-mvo-operation":"message.reaction"}},"/v1/instances/cliente-01/operations/message.reply":{"post":{"operationId":"client_operation_message_reply","summary":"message.reply","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.reply. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Responder citando uma mensagem real. Copie key e message/proto do evento ou histórico; o remoteJid da citação deve corresponder ao destinatário. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Responder citando uma mensagem real. Copie key e message/proto do evento ou histórico; o remoteJid da citação deve corresponder ao destinatário.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1}},"additionalProperties":false,"required":["numero","text"]},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["messageData","mensagem"]},{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto da resposta."},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["numero","text","mensagem"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto da resposta."},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["numero","text","mensagem"]}]},"example":{"messageData":{"numero":"5511999999999","text":"Olá! Vou ajudar você."},"mensagem":{"key":{"id":"3EB0MVOEXEMPLO001","remoteJid":"5511999999999@s.whatsapp.net","fromMe":false},"message":{"conversation":"Olá! Preciso de ajuda."}}}}}},"x-mvo-operation":"message.reply"}},"/v1/instances/cliente-01/operations/message.text":{"post":{"operationId":"client_operation_message_text","summary":"message.text","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.text. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enviar texto. O destinatário e o conteúdo ficam em messageData; o formato direto também é aceito. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar texto. O destinatário e o conteúdo ficam em messageData; o formato direto também é aceito.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto enviado ao destinatário."},"texto":{"type":"string","minLength":1,"description":"Alias de text; text tem preferência."}},"additionalProperties":false,"anyOf":[{"required":["text"]},{"required":["texto"]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto enviado ao destinatário."},"texto":{"type":"string","minLength":1,"description":"Alias de text; text tem preferência."}},"additionalProperties":false,"anyOf":[{"required":["text"]},{"required":["texto"]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},"examples":{"numero":{"summary":"Enviar para número","value":{"messageData":{"numero":"5511999999999","text":"Olá! Esta mensagem foi enviada pela API MVO."}}},"username":{"summary":"Enviar para username","value":{"messageData":{"numero":"maik.venancio","text":"Olá! Esta mensagem foi enviada pela API MVO."}}},"username_pin":{"summary":"Username que exige chave de contato","value":{"messageData":{"numero":"@maik.venancio:1234","text":"Olá pela API MVO!"}}}}}}},"x-mvo-operation":"message.text"}},"/v1/instances/cliente-01/operations/message.voice":{"post":{"operationId":"client_operation_message_voice","summary":"message.voice","tags":["Mensagens"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa message.voice. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enviar mensagem de voz (PTT). A API normaliza áudio quando o conversor configurado está disponível; substitua a URL por um áudio real compatível. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enviar mensagem de voz (PTT). A API normaliza áudio quando o conversor configurado está disponível; substitua a URL por um áudio real compatível.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"caption":{"type":"string","description":"Legenda da mídia."},"mimeType":{"type":"string","minLength":1,"description":"MIME do arquivo, quando necessário.","example":"image/png"},"nameFile":{"type":"string","minLength":1,"description":"Nome de arquivo sem diretórios. Alias de fileName.","maxLength":255},"fileName":{"type":"string","minLength":1,"description":"Nome de arquivo sem barras ou diretórios.","maxLength":255},"seconds":{"type":"integer","minimum":0,"description":"Duração em segundos, quando aplicável."},"viewOnce":{"type":"boolean","description":"Visualização única, quando suportada pelo tipo."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"caption":{"type":"string","description":"Legenda da mídia."},"mimeType":{"type":"string","minLength":1,"description":"MIME do arquivo, quando necessário.","example":"image/png"},"nameFile":{"type":"string","minLength":1,"description":"Nome de arquivo sem diretórios. Alias de fileName.","maxLength":255},"fileName":{"type":"string","minLength":1,"description":"Nome de arquivo sem barras ou diretórios.","maxLength":255},"seconds":{"type":"integer","minimum":0,"description":"Duração em segundos, quando aplicável."},"viewOnce":{"type":"boolean","description":"Visualização única, quando suportada pelo tipo."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."},"example":{"messageData":{"numero":"5511999999999","url":"https://seu-cdn.example/audio.ogg","mimeType":"audio/ogg; codecs=opus","seconds":5}}}}},"x-mvo-operation":"message.voice"}},"/v1/instances/cliente-01/operations/mobile.devices":{"get":{"operationId":"client_operation_mobile_devices","summary":"mobile.devices","tags":["mobile"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta mobile.devices. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Lista os aparelhos vinculados por uma sessão primária Mobile importada explicitamente. Sessões companheiras por QR recebem 409 primary_session_required.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"mobile.devices"}},"/v1/instances/cliente-01/operations/mobile.link":{"post":{"operationId":"client_operation_mobile_link","summary":"mobile.link","tags":["mobile"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa mobile.link. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Exige sessão primária Mobile importada explicitamente; sessão conectada por QR é companheira e recebe 409 primary_session_required. Vincula outro Web/Desktop por código ou conteúdo bruto do QR. Isto não é o fluxo /connect para vincular a API. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Exige sessão primária Mobile importada explicitamente; sessão conectada por QR é companheira e recebe 409 primary_session_required. Vincula outro Web/Desktop por código ou conteúdo bruto do QR. Isto não é o fluxo /connect para vincular a API.","content":{"application/json":{"schema":{"type":"object","properties":{"metodo":{"type":"string","enum":["qrcode","codigo"],"description":"Método para vincular um aparelho Web/Desktop a uma sessão primária Mobile."},"qrcode":{"type":"string","minLength":1,"maxLength":16384,"description":"Conteúdo bruto atual do QR Code do aparelho Web/Desktop; não uma imagem/base64 do QR."},"codigo":{"type":"string","minLength":8,"maxLength":64,"description":"Código de oito letras/dígitos exibido pelo aparelho. Espaços e hífens são removidos.","pattern":"^[A-Za-z0-9\\s-]+$"}},"required":["metodo"],"additionalProperties":false,"anyOf":[{"properties":{"metodo":{"enum":["qrcode"]}},"required":["qrcode"]},{"properties":{"metodo":{"enum":["codigo"]}},"required":["codigo"]}]},"example":{"metodo":"codigo","codigo":"ABCD1234"}}}},"x-mvo-operation":"mobile.link"}},"/v1/instances/cliente-01/operations/mobile.unlink":{"delete":{"operationId":"client_operation_mobile_unlink","summary":"mobile.unlink","tags":["mobile"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa mobile.unlink. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Revoga o aparelho informado em device_jid no caminho. Exige sessão primária Mobile importada explicitamente.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Revoga o aparelho informado em device_jid no caminho. Exige sessão primária Mobile importada explicitamente.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["device_jid"],"properties":{"device_jid":{"type":"string","maxLength":200,"pattern":"^\\d+(?::\\d+)?@(?:s\\.whatsapp\\.net|lid)$","description":"JID real do dispositivo retornado na listagem.","example":"5511999999999:2@s.whatsapp.net"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"device_jid":"5511999999999:2@s.whatsapp.net"}}}}},"x-mvo-operation":"mobile.unlink"}},"/v1/instances/cliente-01/operations/passkey.sign":{"post":{"operationId":"client_operation_passkey_sign","summary":"passkey.sign","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa passkey.sign. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Envia uma assertion WebAuthn real para o desafio atual da sessão, com validade de cinco minutos. Os valores ilustrativos devem ser substituídos por uma credencial e assinatura válidas. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Envia uma assertion WebAuthn real para o desafio atual da sessão, com validade de cinco minutos. Os valores ilustrativos devem ser substituídos por uma credencial e assinatura válidas.","content":{"application/json":{"schema":{"type":"object","properties":{"credentialId":{"type":"string","minLength":1,"maxLength":1398104,"description":"Identificador da credencial WebAuthn em base64/base64url.","format":"byte","pattern":"^[A-Za-z0-9_+/-]+={0,2}$"},"webauthnAssertion":{"type":"string","minLength":1,"maxLength":1398104,"description":"Assertion WebAuthn assinada em base64/base64url; máximo de 1 MiB após decodificação.","format":"byte","pattern":"^[A-Za-z0-9_+/-]+={0,2}$"},"requestOptionsBase64":{"type":"string","minLength":1,"maxLength":1398104,"description":"Opcional: cópia exata de passkey.requestOptionsBase64. Se informado, deve corresponder ao desafio atual.","format":"byte","pattern":"^[A-Za-z0-9_+/-]+={0,2}$"}},"required":["credentialId","webauthnAssertion"],"additionalProperties":false},"example":{"credentialId":"Y3JlZGVuY2lhbC1leGVtcGxv","webauthnAssertion":"YXNzZXJ0aW9uLWV4ZW1wbG8="}}}},"x-mvo-operation":"passkey.sign"}},"/v1/instances/cliente-01/operations/passkey.state":{"get":{"operationId":"client_operation_passkey_state","summary":"passkey.state","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta passkey.state. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consulta o desafio WebAuthn observado pelo worker; não requer conexão WhatsApp ativa.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"passkey.state"}},"/v1/instances/cliente-01/operations/product.cart-get":{"get":{"operationId":"client_operation_product_cart_get","summary":"Consultar configuração do carrinho","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta product.cart-get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente.   O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"jid","in":"query","required":false,"schema":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"description":"Telefone com DDI ou JID individual."},{"name":"owner","in":"query","required":false,"schema":{"type":"string","example":"5511999999999@s.whatsapp.net","description":"Alias de jid. Omita para usar a própria conta."},"description":"Alias de jid. Omita para usar a própria conta."}],"x-mvo-operation":"product.cart-get"}},"/v1/instances/cliente-01/operations/product.cart-set":{"put":{"operationId":"client_operation_product_cart_set","summary":"Ativar ou desativar carrinho","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa product.cart-set. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente.   O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"JSON aceito pela operação.","content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"cartEnabled":{"type":"boolean","description":"Alias de enabled; se ambos forem enviados devem ser iguais."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["enabled"]},{"required":["cartEnabled"]}]}]},"example":{"enabled":true}}}},"x-mvo-operation":"product.cart-set"}},"/v1/instances/cliente-01/operations/product.catalog-create":{"post":{"operationId":"client_operation_product_catalog_create","summary":"Criar catálogo comercial","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa product.catalog-create. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Cria o catálogo da própria conta. Não precisa de corpo JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"product.catalog-create"}},"/v1/instances/cliente-01/operations/product.collection-appeal":{"post":{"operationId":"client_operation_product_collection_appeal","summary":"Solicitar revisão de coleção","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa product.collection-appeal. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Solicitar revisão não garante aprovação. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Solicitar revisão não garante aprovação.","content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":4096,"description":"Motivo opcional da revisão."},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"reason":"Produtos de hospedagem de sites","_params":{"id":"987"}}}}},"x-mvo-operation":"product.collection-appeal"}},"/v1/instances/cliente-01/operations/product.collection-create":{"post":{"operationId":"client_operation_product_collection_create","summary":"Criar coleção de produtos","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa product.collection-create. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. products contém IDs de produtos existentes; pode ser omitido ou vazio. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"products contém IDs de produtos existentes; pode ser omitido ou vazio.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"products":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"minItems":0,"maxItems":100,"uniqueItems":true},"catalogSessionId":{"type":"string","minLength":1,"maxLength":128,"example":"catalog-mvo-01","description":"Identificador opcional da sessão do catálogo."}},"additionalProperties":false,"required":["name"]},"example":{"name":"Planos MVO","products":["987"]}}}},"x-mvo-operation":"product.collection-create"}},"/v1/instances/cliente-01/operations/product.collection-delete":{"delete":{"operationId":"client_operation_product_collection_delete","summary":"Excluir coleção","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa product.collection-delete. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Exclui o ID da rota ou uma lista ids. Falhas parciais são retornadas por coleção.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Exclui o ID da rota ou uma lista ids. Falhas parciais são retornadas por coleção.","content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"minItems":1,"maxItems":100,"uniqueItems":true},"catalogSessionId":{"type":"string","minLength":1,"maxLength":128,"example":"catalog-mvo-01","description":"Identificador opcional da sessão do catálogo."},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"ids":["COLL1"],"_params":{"id":"987"}}}}},"x-mvo-operation":"product.collection-delete"}},"/v1/instances/cliente-01/operations/product.collection-get":{"get":{"operationId":"client_operation_product_collection_get","summary":"Consultar produtos de uma coleção","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta product.collection-get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente.   O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"id","in":"query","required":true,"schema":{"type":"string","example":"RESOURCE_ID"}},{"name":"jid","in":"query","required":false,"schema":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"description":"Telefone com DDI ou JID individual."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":51}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":4096,"description":"nextPageCursor da resposta anterior."},"description":"nextPageCursor da resposta anterior."},{"name":"owner","in":"query","required":false,"schema":{"type":"string","example":"5511999999999@s.whatsapp.net","description":"Alias de jid. Omita para usar a própria conta."},"description":"Alias de jid. Omita para usar a própria conta."}],"x-mvo-operation":"product.collection-get"}},"/v1/instances/cliente-01/operations/product.collection-reorder":{"patch":{"operationId":"client_operation_product_collection_reorder","summary":"Reordenar coleções","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa product.collection-reorder. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente.   O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"JSON aceito pela operação.","content":{"application/json":{"schema":{"type":"object","properties":{"moves":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"fromIndex":{"type":"integer","minimum":0,"maximum":1000000},"toIndex":{"type":"integer","minimum":0,"maximum":1000000}},"additionalProperties":false,"required":["id","fromIndex","toIndex"]},"minItems":1,"maxItems":100}},"additionalProperties":false,"required":["moves"]},"example":{"moves":[{"id":"COLL1","fromIndex":1,"toIndex":0}]}}}},"x-mvo-operation":"product.collection-reorder"}},"/v1/instances/cliente-01/operations/product.collection-update":{"patch":{"operationId":"client_operation_product_collection_update","summary":"Editar coleção e seus produtos","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa product.collection-update. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Envie nome ou adições/remoções. catalogSessionId sozinho não atualiza a coleção.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Envie nome ou adições/remoções. catalogSessionId sozinho não atualiza a coleção.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"productsToAdd":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"minItems":0,"maxItems":100,"uniqueItems":true},"productsToRemove":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"minItems":0,"maxItems":100,"uniqueItems":true},"catalogSessionId":{"type":"string","minLength":1,"maxLength":128,"example":"catalog-mvo-01","description":"Identificador opcional da sessão do catálogo."},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."}},"additionalProperties":false}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["name"]},{"required":["productsToAdd"]},{"required":["productsToRemove"]}]}],"required":["_params"]},"example":{"name":"Planos MVO","productsToAdd":["987"],"productsToRemove":[],"_params":{"id":"987"}}}}},"x-mvo-operation":"product.collection-update"}},"/v1/instances/cliente-01/operations/product.collections":{"get":{"operationId":"client_operation_product_collections","summary":"product.collections","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta product.collections. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente.   O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"jid","in":"query","required":false,"schema":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"description":"Telefone com DDI ou JID individual."},{"name":"owner","in":"query","required":false,"schema":{"type":"string","example":"5511999999999@s.whatsapp.net","description":"Alias de jid. Omita para usar a própria conta."},"description":"Alias de jid. Omita para usar a própria conta."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":51}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":4096,"description":"nextPageCursor da resposta anterior."},"description":"nextPageCursor da resposta anterior."}],"x-mvo-operation":"product.collections"}},"/v1/instances/cliente-01/operations/product.create":{"post":{"operationId":"client_operation_product_create","summary":"product.create","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa product.create. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Cria produto da própria conta Business. Imagens são enviadas antes da criação; moderação vem do WhatsApp. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Cria produto da própria conta Business. Imagens são enviadas antes da criação; moderação vem do WhatsApp.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"name":{"type":"string","minLength":1,"maxLength":512},"description":{"type":"string","maxLength":4096,"description":"Descrição; texto vazio limpa."},"price":{"oneOf":[{"type":"number","minimum":0,"maximum":999999999999},{"type":"string","pattern":"^[0-9]{1,12}(?:\\.[0-9]{1,6})?$"}],"description":"Valor na moeda principal: 19.99 equivale a R$ 19,99 em BRL. Convertido para milésimos com arredondamento; não enviar junto com priceAmount1000.","example":19.99},"priceAmount1000":{"oneOf":[{"type":"integer","minimum":0,"maximum":999999999999999},{"type":"string","pattern":"^[0-9]{1,15}$"}],"description":"Alternativa a price em milésimos: \"19990\" equivale a 19.99.","example":"19990"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","example":"BRL","description":"Moeda ISO 4217; padrão BRL na criação."},"currencyCode":{"type":"string","pattern":"^[A-Z]{3}$","description":"Alias de currency; se ambos forem informados devem ser iguais."},"images":{"type":"array","items":{"oneOf":[{"type":"string","minLength":1,"example":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII=","description":"URL HTTPS pública ou data:image/png;base64,...; não aceita caminho local."},{"type":"object","properties":{"url":{"type":"string","pattern":"^https://","maxLength":8192,"example":"https://seu-dominio.example/imagens/produto.png","description":"URL HTTPS pública na porta 443, sem credenciais nem fragmento. Não aceita arquivos locais ou redes privadas."}},"additionalProperties":false,"required":["url"]},{"type":"object","properties":{"base64":{"type":"string","minLength":1,"example":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII=","description":"Bytes completos da imagem em base64. JPEG, PNG ou WebP; até 8192 por eixo e 16777216 pixels. Respeite o limite de mídia configurado."}},"additionalProperties":false,"required":["base64"]}]},"minItems":1,"maxItems":10},"imagemUrl":{"type":"string","pattern":"^https://","description":"Alias para uma única imagem HTTPS; não enviar junto com images."},"url":{"type":"string","maxLength":2048,"example":"https://www.mvo.host","description":"Link HTTP/HTTPS do produto; texto vazio remove."},"isHidden":{"type":"boolean","default":false},"originCountryCode":{"type":"string","pattern":"^[A-Z]{2}$","nullable":true,"example":"BR","description":"País ISO; padrão BR na criação, null declara isenção."},"retailerId":{"type":"string","maxLength":128,"example":"MVO-PLANO-01","description":"SKU interno; texto vazio remove."},"salePrice":{"oneOf":[{"type":"number","minimum":0,"maximum":999999999999},{"type":"string","pattern":"^[0-9]{1,12}(?:\\.[0-9]{1,6})?$"}],"description":"Preço promocional na moeda principal.","example":14.99}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["price"]},{"required":["priceAmount1000"]}]},{"anyOf":[{"required":["images"]},{"required":["imagemUrl"]}]},{"not":{"required":["price","priceAmount1000"]}},{"not":{"required":["images","imagemUrl"]}}],"required":["name","description"]},"example":{"name":"Plano MVO","description":"Hospedagem de sites","price":19.99,"currency":"BRL","images":[{"base64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII="}],"isHidden":false,"originCountryCode":"BR","retailerId":"MVO-PLANO-01","url":"https://www.mvo.host"}}}},"x-mvo-operation":"product.create"}},"/v1/instances/cliente-01/operations/product.delete":{"delete":{"operationId":"client_operation_product_delete","summary":"product.delete","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa product.delete. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Exclui o ID da rota ou uma lista ids. No endpoint genérico informe id, ids ou _params.id.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Exclui o ID da rota ou uma lista ids. No endpoint genérico informe id, ids ou _params.id.","content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."},"minItems":1,"maxItems":100,"uniqueItems":true},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"ids":["987"],"_params":{"id":"987"}}}}},"x-mvo-operation":"product.delete"}},"/v1/instances/cliente-01/operations/product.edit":{"patch":{"operationId":"client_operation_product_edit","summary":"product.edit","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa product.edit. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Atualização parcial. Envie ao menos um campo além do ID.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Atualização parcial. Envie ao menos um campo além do ID.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":512},"description":{"type":"string","maxLength":4096,"description":"Descrição; texto vazio limpa."},"price":{"oneOf":[{"type":"number","minimum":0,"maximum":999999999999},{"type":"string","pattern":"^[0-9]{1,12}(?:\\.[0-9]{1,6})?$"}],"description":"Valor na moeda principal: 19.99 equivale a R$ 19,99 em BRL. Convertido para milésimos com arredondamento; não enviar junto com priceAmount1000.","example":19.99},"priceAmount1000":{"oneOf":[{"type":"integer","minimum":0,"maximum":999999999999999},{"type":"string","pattern":"^[0-9]{1,15}$"}],"description":"Alternativa a price em milésimos: \"19990\" equivale a 19.99.","example":"19990"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","example":"BRL","description":"Moeda ISO 4217; padrão BRL na criação."},"currencyCode":{"type":"string","pattern":"^[A-Z]{3}$","description":"Alias de currency; se ambos forem informados devem ser iguais."},"images":{"type":"array","items":{"oneOf":[{"type":"string","minLength":1,"example":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII=","description":"URL HTTPS pública ou data:image/png;base64,...; não aceita caminho local."},{"type":"object","properties":{"url":{"type":"string","pattern":"^https://","maxLength":8192,"example":"https://seu-dominio.example/imagens/produto.png","description":"URL HTTPS pública na porta 443, sem credenciais nem fragmento. Não aceita arquivos locais ou redes privadas."}},"additionalProperties":false,"required":["url"]},{"type":"object","properties":{"base64":{"type":"string","minLength":1,"example":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+a9eoAAAAASUVORK5CYII=","description":"Bytes completos da imagem em base64. JPEG, PNG ou WebP; até 8192 por eixo e 16777216 pixels. Respeite o limite de mídia configurado."}},"additionalProperties":false,"required":["base64"]}]},"minItems":1,"maxItems":10},"imagemUrl":{"type":"string","pattern":"^https://","description":"Alias para uma única imagem HTTPS; não enviar junto com images."},"url":{"type":"string","maxLength":2048,"example":"https://www.mvo.host","description":"Link HTTP/HTTPS do produto; texto vazio remove."},"isHidden":{"type":"boolean","default":false},"originCountryCode":{"type":"string","pattern":"^[A-Z]{2}$","nullable":true,"example":"BR","description":"País ISO; padrão BR na criação, null declara isenção."},"retailerId":{"type":"string","maxLength":128,"example":"MVO-PLANO-01","description":"SKU interno; texto vazio remove."},"salePrice":{"oneOf":[{"type":"number","minimum":0,"maximum":999999999999},{"type":"string","pattern":"^[0-9]{1,12}(?:\\.[0-9]{1,6})?$"}],"description":"Preço promocional na moeda principal.","example":14.99},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."}},"additionalProperties":false}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["name"]},{"required":["description"]},{"required":["price"]},{"required":["priceAmount1000"]},{"required":["currency"]},{"required":["currencyCode"]},{"required":["images"]},{"required":["imagemUrl"]},{"required":["url"]},{"required":["isHidden"]},{"required":["originCountryCode"]},{"required":["retailerId"]},{"required":["salePrice"]}]},{"not":{"required":["price","priceAmount1000"]}},{"not":{"required":["images","imagemUrl"]}}],"required":["_params"]},"example":{"name":"Plano MVO atualizado","price":24.99,"_params":{"id":"987"}}}}},"x-mvo-operation":"product.edit"}},"/v1/instances/cliente-01/operations/product.get":{"get":{"operationId":"client_operation_product_get","summary":"Consultar produto e suas variações","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta product.get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente.   O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"id","in":"query","required":true,"schema":{"type":"string","example":"RESOURCE_ID"}},{"name":"jid","in":"query","required":false,"schema":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"description":"Telefone com DDI ou JID individual."},{"name":"owner","in":"query","required":false,"schema":{"type":"string","example":"5511999999999@s.whatsapp.net","description":"Alias de jid. Omita para usar a própria conta."},"description":"Alias de jid. Omita para usar a própria conta."}],"x-mvo-operation":"product.get"}},"/v1/instances/cliente-01/operations/product.list":{"get":{"operationId":"client_operation_product_list","summary":"product.list","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta product.list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente.   O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"jid","in":"query","required":false,"schema":{"type":"string","minLength":1,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID individual."},"description":"Telefone com DDI ou JID individual."},{"name":"owner","in":"query","required":false,"schema":{"type":"string","example":"5511999999999@s.whatsapp.net","description":"Alias de jid. Omita para usar a própria conta."},"description":"Alias de jid. Omita para usar a própria conta."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":4096,"description":"nextPageCursor da resposta anterior."},"description":"nextPageCursor da resposta anterior."}],"x-mvo-operation":"product.list"}},"/v1/instances/cliente-01/operations/product.send":{"post":{"operationId":"client_operation_product_send","summary":"product.send","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa product.send. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Envia uma mensagem com um produto do catálogo. produtos é um objeto, não uma lista. A moeda usa milésimos nesta rota. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Envia uma mensagem com um produto do catálogo. produtos é um objeto, não uma lista. A moeda usa milésimos nesta rota.","content":{"application/json":{"schema":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"produtoId":{"type":"string","minLength":1,"maxLength":128,"description":"ID real do produto no catálogo."},"title":{"type":"string","minLength":1,"maxLength":512,"description":"Título do produto."},"description":{"type":"string","minLength":0,"maxLength":4096,"description":"Descrição opcional.","default":""},"currencyCode":{"type":"string","pattern":"^[A-Z]{3}$","default":"BRL","description":"Código de moeda com três letras maiúsculas."},"price":{"anyOf":[{"type":"integer","minimum":0,"maximum":999999999999999},{"type":"string","pattern":"^\\d{1,15}$"}],"description":"Preço em milésimos da moeda; 19990 corresponde a R$ 19,99. Diferente de product.create/edit, esta rota não aceita preço decimal."},"image":{"anyOf":[{"type":"string","minLength":1,"maxLength":8192,"description":"URL HTTPS pública da imagem; nunca um caminho local.","pattern":"^https://","format":"uri"},{"type":"string","pattern":"^data:[a-zA-Z0-9.+-]+/[a-zA-Z0-9.+-]+;base64,","maxLength":44739300,"description":"Data URI contendo imagem base64; máximo de 32 MiB após decodificação."},{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":8192,"description":"URL HTTPS pública da imagem.","format":"uri","pattern":"^https://"},"base64":{"type":"string","minLength":1,"maxLength":44739248,"description":"Bytes da imagem em base64 padrão.","format":"byte"}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]}],"description":"Imagem do produto, validada e enviada pela API. Aceita URL HTTPS pública, data URI ou objeto {url} / {base64}. Limite de 32 MiB."},"url":{"type":"string","minLength":0,"maxLength":2048,"description":"Link opcional do produto."},"retailerId":{"type":"string","minLength":0,"maxLength":2048,"description":"Código interno/SKU opcional."},"produtos":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"produtoId":{"type":"string","minLength":1,"maxLength":128,"description":"ID real do produto no catálogo."},"title":{"type":"string","minLength":1,"maxLength":512,"description":"Título do produto."},"description":{"type":"string","minLength":0,"maxLength":4096,"description":"Descrição opcional.","default":""},"currencyCode":{"type":"string","pattern":"^[A-Z]{3}$","default":"BRL","description":"Código de moeda com três letras maiúsculas."},"price":{"anyOf":[{"type":"integer","minimum":0,"maximum":999999999999999},{"type":"string","pattern":"^\\d{1,15}$"}],"description":"Preço em milésimos da moeda; 19990 corresponde a R$ 19,99. Diferente de product.create/edit, esta rota não aceita preço decimal."},"image":{"anyOf":[{"type":"string","minLength":1,"maxLength":8192,"description":"URL HTTPS pública da imagem; nunca um caminho local.","pattern":"^https://","format":"uri"},{"type":"string","pattern":"^data:[a-zA-Z0-9.+-]+/[a-zA-Z0-9.+-]+;base64,","maxLength":44739300,"description":"Data URI contendo imagem base64; máximo de 32 MiB após decodificação."},{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":8192,"description":"URL HTTPS pública da imagem.","format":"uri","pattern":"^https://"},"base64":{"type":"string","minLength":1,"maxLength":44739248,"description":"Bytes da imagem em base64 padrão.","format":"byte"}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]}],"description":"Imagem do produto, validada e enviada pela API. Aceita URL HTTPS pública, data URI ou objeto {url} / {base64}. Limite de 32 MiB."},"url":{"type":"string","minLength":0,"maxLength":2048,"description":"Link opcional do produto."},"retailerId":{"type":"string","minLength":0,"maxLength":2048,"description":"Código interno/SKU opcional."}},"required":["numero","produtoId","title","price","image"],"additionalProperties":false}},"additionalProperties":false,"anyOf":[{"required":["numero","produtoId","title","price","image"]},{"required":["produtos"]}]},"example":{"produtos":{"numero":"5511999999999","produtoId":"1234567890123456","title":"Plano MVO","description":"Hospedagem de sites","currencyCode":"BRL","price":"19990","image":{"url":"https://example.com/produto.jpg"}}}}}},"x-mvo-operation":"product.send"}},"/v1/instances/cliente-01/operations/product.visibility":{"put":{"operationId":"client_operation_product_visibility","summary":"Ocultar ou exibir produto","tags":["WhatsApp Business"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa product.visibility. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente.   O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"JSON aceito pela operação.","content":{"application/json":{"schema":{"type":"object","properties":{"isHidden":{"type":"boolean"},"oculto":{"type":"boolean","description":"Alias de isHidden."},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","example":"987","description":"ID retornado pelo WhatsApp. Pode vir de :id na rota, id no corpo ou _params.id no endpoint genérico."}},"additionalProperties":false}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["isHidden"]},{"required":["oculto"]}]}],"required":["_params"]},"example":{"isHidden":true,"_params":{"id":"987"}}}}},"x-mvo-operation":"product.visibility"}},"/v1/instances/cliente-01/operations/profile.business":{"patch":{"operationId":"client_operation_profile_business","summary":"profile.business","tags":["profile"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa profile.business. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Atualiza um ou mais campos do perfil comercial da conta conectada. Use hours ou businessHours; não envie os dois.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Atualiza um ou mais campos do perfil comercial da conta conectada. Use hours ou businessHours; não envie os dois.","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","minLength":0,"maxLength":512,"description":"Endereço comercial; string vazia remove o valor."},"email":{"type":"string","minLength":0,"maxLength":254,"description":"E-mail comercial válido; string vazia remove o valor."},"description":{"type":"string","minLength":0,"maxLength":4096,"description":"Descrição comercial; string vazia remove o valor."},"websites":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2048,"description":"URL HTTP ou HTTPS, sem credenciais.","format":"uri","pattern":"^https?://"},"minItems":0,"maxItems":2},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"categories":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1,"maxLength":128,"description":"ID de categoria comercial consultado em business.categories."},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da categoria."}},"required":["id"],"additionalProperties":false}]},"minItems":0,"maxItems":3},"hours":{"type":"object","properties":{"timezone":{"type":"string","minLength":1,"maxLength":100,"description":"Fuso IANA, por exemplo America/Sao_Paulo."},"days":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string","enum":["mon","tue","wed","thu","fri","sat","sun","monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"mode":{"type":"string","enum":["closed","open_24h","specific_hours","appointment_only"]},"open":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$","description":"Obrigatório para mode=specific_hours; HH:MM."},"close":{"type":"string","pattern":"^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$","description":"Obrigatório para mode=specific_hours; fechamento 24:00 é aceito."}},"required":["day","mode"],"additionalProperties":false,"anyOf":[{"properties":{"mode":{"enum":["closed","open_24h","appointment_only"]}}},{"properties":{"mode":{"enum":["specific_hours"]}},"required":["open","close"]}]},"minItems":0,"maxItems":32,"description":"Aceita vários intervalos no mesmo dia."}},"required":["timezone","days"],"additionalProperties":false},"businessHours":{"type":"object","properties":{"timezone":{"type":"string","minLength":1,"maxLength":100,"description":"Fuso IANA, por exemplo America/Sao_Paulo."},"config":{"type":"array","items":{"type":"object","properties":{"dayOfWeek":{"type":"string","enum":["mon","tue","wed","thu","fri","sat","sun","monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"mode":{"type":"string","enum":["closed","open_24h","specific_hours","appointment_only"]},"openTime":{"type":"integer","minimum":0,"maximum":1439,"description":"Minutos desde meia-noite; obrigatório para specific_hours."},"closeTime":{"type":"integer","minimum":0,"maximum":1440,"description":"Minutos desde meia-noite; 1440 representa 24:00; obrigatório para specific_hours."}},"required":["dayOfWeek","mode"],"additionalProperties":false,"anyOf":[{"properties":{"mode":{"enum":["closed","open_24h","appointment_only"]}}},{"properties":{"mode":{"enum":["specific_hours"]}},"required":["openTime","closeTime"]}]},"minItems":0,"maxItems":32,"description":"Alternativa nativa a hours; aceita vários intervalos no mesmo dia."}},"required":["timezone","config"],"additionalProperties":false}},"additionalProperties":false,"minProperties":1,"not":{"required":["hours","businessHours"]}},"example":{"description":"Atendimento da minha empresa","email":"contato@minhaempresa.com.br","websites":["https://www.mvo.host"],"hours":{"timezone":"America/Sao_Paulo","days":[{"day":"monday","mode":"specific_hours","open":"08:00","close":"12:00"},{"day":"monday","mode":"specific_hours","open":"14:00","close":"18:00"},{"day":"sunday","mode":"closed"}]}}}}},"x-mvo-operation":"profile.business"}},"/v1/instances/cliente-01/operations/profile.get":{"get":{"operationId":"client_operation_profile_get","summary":"profile.get","tags":["profile"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta profile.get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consulta identidade, perfil comercial, estado da sessão e desafio de passkey, quando disponível.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"profile.get"}},"/v1/instances/cliente-01/operations/profile.name":{"put":{"operationId":"client_operation_profile_name","summary":"profile.name","tags":["profile"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa profile.name. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Atualiza o nome exibido pela conta.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Atualiza o nome exibido pela conta.","content":{"application/json":{"schema":{"type":"object","properties":{"nome":{"type":"string","minLength":1,"maxLength":100,"description":"Nome exibido no perfil."}},"required":["nome"],"additionalProperties":false},"example":{"nome":"Minha empresa"}}}},"x-mvo-operation":"profile.name"}},"/v1/instances/cliente-01/operations/profile.photo":{"put":{"operationId":"client_operation_profile_photo","summary":"profile.photo","tags":["profile"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa profile.photo. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Envia a foto de perfil. Informe url HTTPS pública ou base64. JPEG é enviado diretamente; outros formatos exigem GD para conversão. Limites de dimensões: 8192 por lado e 16.777.216 pixels.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Envia a foto de perfil. Informe url HTTPS pública ou base64. JPEG é enviado diretamente; outros formatos exigem GD para conversão. Limites de dimensões: 8192 por lado e 16.777.216 pixels.","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":8192,"description":"URL HTTPS pública da imagem, sem credenciais, fragmento ou porta diferente de 443.","format":"uri","pattern":"^https://"},"base64":{"type":"string","minLength":1,"maxLength":11184816,"description":"Bytes da imagem em base64 padrão, sem prefixo data:. Limite de 8 MiB.","format":"byte"}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"example":{"url":"https://example.com/perfil.jpg"}}}},"x-mvo-operation":"profile.photo"}},"/v1/instances/cliente-01/operations/profile.status":{"put":{"operationId":"client_operation_profile_status","summary":"profile.status","tags":["profile"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa profile.status. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Atualiza o recado do WhatsApp.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Atualiza o recado do WhatsApp.","content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":139,"description":"Recado do perfil; até 139 bytes UTF-8."}},"required":["text"],"additionalProperties":false},"example":{"text":"Atendimento de segunda a sexta, das 8h às 18h."}}}},"x-mvo-operation":"profile.status"}},"/v1/instances/cliente-01/operations/service.number":{"get":{"operationId":"client_operation_service_number","summary":"service.number","tags":["service"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta service.number. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consulta no WhatsApp se o número/JID está registrado; não infere existência apenas pelo mapeamento LID.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"numero","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão.","example":"5511999999999"},"description":"Telefone com DDI/DDD ou JID de contato/grupo. O destino precisa ser acessível pela sessão."}],"x-mvo-operation":"service.number"}},"/v1/instances/cliente-01/operations/session.connect":{"post":{"operationId":"client_operation_session_connect","summary":"session.connect","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa session.connect. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Gerar ou atualizar QR, ou solicitar código. Sem JSON usa qrcode. Para codigo informe numero com DDI/DDD. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"wait","in":"query","required":false,"schema":{"type":"number","minimum":0,"maximum":10,"default":0,"description":"Espera até 10 segundos pela geração do QR/código."},"description":"Espera até 10 segundos pela geração do QR/código."}],"requestBody":{"required":false,"description":"Gerar ou atualizar QR, ou solicitar código. Sem JSON usa qrcode. Para codigo informe numero com DDI/DDD.","content":{"application/json":{"schema":{"type":"object","properties":{"tipo":{"type":"string","enum":["qrcode","codigo"],"default":"qrcode","description":"Modo de conexão; qrcode por padrão."},"mode":{"type":"string","enum":["qrcode","codigo"],"description":"Alias de tipo."},"numero":{"type":"string","pattern":"^[1-9][0-9]{7,14}$","example":"5511999999999","description":"Obrigatório no modo codigo; inclua DDI e DDD."}},"additionalProperties":false,"anyOf":[{"properties":{"tipo":{"enum":["qrcode"]},"mode":{"enum":["qrcode"]}}},{"required":["numero"],"properties":{"tipo":{"enum":["codigo"]},"mode":{"enum":["codigo"]}},"anyOf":[{"required":["tipo"]},{"required":["mode"]}]}]},"examples":{"qrcode":{"summary":"QR Code","value":{"tipo":"qrcode"}},"codigo":{"summary":"Código pelo número","value":{"tipo":"codigo","numero":"5511999999999"}}}}}},"x-mvo-operation":"session.connect"}},"/v1/instances/cliente-01/operations/session.disconnect":{"post":{"operationId":"client_operation_session_disconnect","summary":"session.disconnect","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa session.disconnect. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Pausa o worker preservando o vínculo. Sem corpo JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"session.disconnect"}},"/v1/instances/cliente-01/operations/session.logout":{"delete":{"operationId":"client_operation_session_logout","summary":"session.logout","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa session.logout. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Revoga o vínculo no WhatsApp. Sem corpo JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"session.logout"}},"/v1/instances/cliente-01/operations/session.reset":{"post":{"operationId":"client_operation_session_reset","summary":"session.reset","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa session.reset. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Arquiva as credenciais e solicita novo vínculo. Sem corpo JSON. POST executa a ação composta de arquivar as credenciais e preparar um novo pareamento.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"session.reset"}},"/v1/instances/cliente-01/operations/session.restart":{"post":{"operationId":"client_operation_session_restart","summary":"session.restart","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa session.restart. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Reinicia com as credenciais salvas. Sem corpo JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"session.restart"}},"/v1/instances/cliente-01/operations/session.start":{"post":{"operationId":"client_operation_session_start","summary":"session.start","tags":["Sessão"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa session.start. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Inicia a instância; não recebe JSON. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"session.start"}},"/v1/instances/cliente-01/operations/settings.calls.get":{"get":{"operationId":"client_operation_settings_calls_get","summary":"settings.calls.get","tags":["settings"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta settings.calls.get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consulta as configurações da instância; não recebe JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"settings.calls.get"}},"/v1/instances/cliente-01/operations/settings.calls.set":{"patch":{"operationId":"client_operation_settings_calls_set","summary":"settings.calls.set","tags":["settings"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa settings.calls.set. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Altera somente as opções enviadas. Um objeto vazio preserva as configurações.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":false,"description":"Altera somente as opções enviadas. Um objeto vazio preserva as configurações.","content":{"application/json":{"schema":{"type":"object","properties":{"reject":{"type":"boolean","description":"Rejeitar automaticamente chamadas recebidas."},"message":{"type":"string","maxLength":4096,"description":"Resposta automática ao rejeitar chamadas."}},"additionalProperties":false},"example":{"reject":true,"message":"Atendemos por mensagem."}}}},"x-mvo-operation":"settings.calls.set"}},"/v1/instances/cliente-01/operations/settings.messages.get":{"get":{"operationId":"client_operation_settings_messages_get","summary":"settings.messages.get","tags":["settings"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta settings.messages.get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consulta as configurações da instância; não recebe JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"settings.messages.get"}},"/v1/instances/cliente-01/operations/settings.messages.set":{"patch":{"operationId":"client_operation_settings_messages_set","summary":"settings.messages.set","tags":["settings"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa settings.messages.set. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Altera somente as opções enviadas. Um objeto vazio preserva as configurações.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":false,"description":"Altera somente as opções enviadas. Um objeto vazio preserva as configurações.","content":{"application/json":{"schema":{"type":"object","properties":{"readMsgAuto":{"type":"boolean"},"archivedMsgAuto":{"type":"boolean"}},"additionalProperties":false},"example":{"readMsgAuto":false,"archivedMsgAuto":false}}}},"x-mvo-operation":"settings.messages.set"}},"/v1/instances/cliente-01/operations/status.delete":{"delete":{"operationId":"client_operation_status_delete","summary":"Apagar um status próprio","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa status.delete. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Apagar um status próprio. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Sem recipients, reutiliza a audiência original persistida. IDs desconhecidos ou recebidos não podem ser apagados.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Apagar um status próprio. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Sem recipients, reutiliza a audiência original persistida. IDs desconhecidos ou recebidos não podem ser apagados.","content":{"application/json":{"schema":{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."},"_params":{"type":"object","required":["message_id"],"properties":{"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"message_id":"MVO_STATUS_EXAMPLE"}}}}},"x-mvo-operation":"status.delete"}},"/v1/instances/cliente-01/operations/status.download":{"post":{"operationId":"client_operation_status_download","summary":"Baixar e descriptografar mídia de status observado","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa status.download. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Baixar e descriptografar mídia de status observado. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Retorna bytes em base64 com limite de 32 MiB. Não recebe mediaKey, URL de download, protobuf ou descritores arbitrários. POST solicita o download e a decifragem da mídia de um Status local identificado por autor e mensagem; não recebe chaves privadas ou caminhos de arquivo.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}],"requestBody":{"required":true,"description":"Baixar e descriptografar mídia de status observado. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Retorna bytes em base64 com limite de 32 MiB. Não recebe mediaKey, URL de download, protobuf ou descritores arbitrários.","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"_params":{"type":"object","required":["message_id"],"properties":{"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"message_id":"MVO_STATUS_EXAMPLE"}}}}},"x-mvo-operation":"status.download"}},"/v1/instances/cliente-01/operations/status.get":{"get":{"operationId":"client_operation_status_get","summary":"Consultar um status observado","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta status.get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar um status observado. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"message_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"},"description":"ID real da mensagem recebida/enviada."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},{"name":"includeExpired","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"includeRevoked","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-operation":"status.get"}},"/v1/instances/cliente-01/operations/status.list":{"get":{"operationId":"client_operation_status_list","summary":"Listar status observados pela sessão","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta status.list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Listar status observados pela sessão. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Timestamp Unix exclusivo, em segundos."},"description":"Timestamp Unix exclusivo, em segundos."},{"name":"includeExpired","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"includeRevoked","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-operation":"status.list"}},"/v1/instances/cliente-01/operations/status.mute":{"put":{"operationId":"client_operation_status_mute","summary":"Silenciar status de um autor","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa status.mute. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Silenciar status de um autor. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Silenciar status de um autor. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["author"],"properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"author":"5511999999999@s.whatsapp.net"}}}}},"x-mvo-operation":"status.mute"}},"/v1/instances/cliente-01/operations/status.muted-list":{"get":{"operationId":"client_operation_status_muted_list","summary":"Listar autores silenciados","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta status.muted-list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Listar autores silenciados. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"after","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}],"x-mvo-operation":"status.muted-list"}},"/v1/instances/cliente-01/operations/status.own":{"get":{"operationId":"client_operation_status_own","summary":"Listar os próprios status","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta status.own. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Listar os próprios status. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Timestamp Unix exclusivo, em segundos."},"description":"Timestamp Unix exclusivo, em segundos."},{"name":"includeExpired","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"includeRevoked","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-operation":"status.own"}},"/v1/instances/cliente-01/operations/status.privacy-get":{"get":{"operationId":"client_operation_status_privacy_get","summary":"Consultar privacidade sincronizada dos status","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta status.privacy-get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Consultar privacidade sincronizada dos status. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"status.privacy-get"}},"/v1/instances/cliente-01/operations/status.privacy-set":{"put":{"operationId":"client_operation_status_privacy_set","summary":"Definir privacidade dos status","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa status.privacy-set. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Definir privacidade dos status. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Alteração autenticada por AppState. Não altera retroativamente a audiência de publicações existentes.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Definir privacidade dos status. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. Alteração autenticada por AppState. Não altera retroativamente a audiência de publicações existentes.","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["ALLOW_LIST","DENY_LIST","CONTACTS","CLOSE_FRIENDS","CUSTOM_LIST"]},"userJids":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"maxItems":1024},"shareToFB":{"type":"boolean"},"shareToIG":{"type":"boolean"}},"additionalProperties":false,"required":["mode"]},"example":{"mode":"ALLOW_LIST","userJids":["5511999999999@s.whatsapp.net"],"shareToFB":false,"shareToIG":false}}}},"x-mvo-operation":"status.privacy-set"}},"/v1/instances/cliente-01/operations/status.publish-image":{"post":{"operationId":"client_operation_status_publish_image","summary":"Publicar status de imagem","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa status.publish-image. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Publicar status de imagem. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar status de imagem. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."},"url":{"type":"string","format":"uri","maxLength":8192,"example":"https://example.com/status.jpg","description":"HTTPS público; redes privadas, credenciais, caminhos locais e redirecionamentos privados são bloqueados."},"base64":{"type":"string","minLength":4,"maxLength":44739248,"description":"Conteúdo da mídia em base64 puro, limitado a 32 MiB."},"mimetype":{"type":"string","maxLength":128},"accessibilityLabel":{"type":"string","maxLength":65536},"caption":{"type":"string","maxLength":65536},"width":{"type":"integer","minimum":0,"maximum":4294967295},"height":{"type":"integer","minimum":0,"maximum":4294967295},"jpegThumbnailBase64":{"type":"string","maxLength":1398104,"description":"Thumbnail JPEG em base64, até 1 MiB."}},"additionalProperties":false,"required":["recipients"],"oneOf":[{"required":["url"],"not":{"required":["base64"]}},{"required":["base64"],"not":{"required":["url"]}}]},"example":{"recipients":["5511999999999@s.whatsapp.net"],"url":"https://example.com/status.jpg","mimetype":"image/jpeg"}}}},"x-mvo-operation":"status.publish-image"}},"/v1/instances/cliente-01/operations/status.publish-text":{"post":{"operationId":"client_operation_status_publish_text","summary":"Publicar status de texto com estilo","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa status.publish-text. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Publicar status de texto com estilo. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar status de texto com estilo. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Até 65.536 bytes UTF-8; limites da conta são confirmados pelo WhatsApp."},"style":{"type":"object","properties":{"font":{"oneOf":[{"type":"integer","enum":[0,1,2,6,7,8,9,10]},{"type":"string","enum":["SYSTEM","SYSTEM_TEXT","FB_SCRIPT","SYSTEM_BOLD","MORNINGBREEZE_REGULAR","CALISTOGA_REGULAR","EXO2_EXTRABOLD","COURIERPRIME_BOLD"]}]},"backgroundColor":{"oneOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}(?:[0-9A-Fa-f]{2})?$"},{"type":"integer","minimum":0,"maximum":4294967295}],"description":"#RRGGBB, #AARRGGBB ou uint32 ARGB.","example":"#0099FF"},"textColor":{"oneOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}(?:[0-9A-Fa-f]{2})?$"},{"type":"integer","minimum":0,"maximum":4294967295}],"description":"#RRGGBB, #AARRGGBB ou uint32 ARGB.","example":"#FFFFFF"}},"additionalProperties":false}},"additionalProperties":false,"required":["recipients","text"]},"example":{"recipients":["5511999999999@s.whatsapp.net"],"text":"Novidades da MVO!","style":{"font":0,"backgroundColor":"#0099FF","textColor":"#FFFFFF"}}}}},"x-mvo-operation":"status.publish-text"}},"/v1/instances/cliente-01/operations/status.publish-video":{"post":{"operationId":"client_operation_status_publish_video","summary":"Publicar status de vídeo ou GIF","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa status.publish-video. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Publicar status de vídeo ou GIF. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar status de vídeo ou GIF. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."},"url":{"type":"string","format":"uri","maxLength":8192,"example":"https://example.com/status.jpg","description":"HTTPS público; redes privadas, credenciais, caminhos locais e redirecionamentos privados são bloqueados."},"base64":{"type":"string","minLength":4,"maxLength":44739248,"description":"Conteúdo da mídia em base64 puro, limitado a 32 MiB."},"mimetype":{"type":"string","maxLength":128},"accessibilityLabel":{"type":"string","maxLength":65536},"caption":{"type":"string","maxLength":65536},"seconds":{"type":"integer","minimum":0,"maximum":4294967295},"gifPlayback":{"type":"boolean","default":false},"width":{"type":"integer","minimum":0,"maximum":4294967295},"height":{"type":"integer","minimum":0,"maximum":4294967295},"jpegThumbnailBase64":{"type":"string","maxLength":1398104,"description":"Thumbnail JPEG em base64, até 1 MiB."}},"additionalProperties":false,"required":["recipients"],"oneOf":[{"required":["url"],"not":{"required":["base64"]}},{"required":["base64"],"not":{"required":["url"]}}]},"example":{"recipients":["5511999999999@s.whatsapp.net"],"url":"https://example.com/status.mp4","mimetype":"video/mp4"}}}},"x-mvo-operation":"status.publish-video"}},"/v1/instances/cliente-01/operations/status.publish-voice":{"post":{"operationId":"client_operation_status_publish_voice","summary":"Publicar status de voz","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa status.publish-voice. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Publicar status de voz. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Publicar status de voz. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"recipients":{"type":"array","items":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"minItems":1,"maxItems":1024,"uniqueItems":true,"description":"Audiência explícita. A API não inventa uma agenda nem expande automaticamente a configuração de privacidade."},"statusSetting":{"type":"string","enum":["contacts","allowlist","denylist","close_friends"],"description":"Metadado de privacidade do envio; a audiência efetiva continua sendo recipients."},"url":{"type":"string","format":"uri","maxLength":8192,"example":"https://example.com/status.jpg","description":"HTTPS público; redes privadas, credenciais, caminhos locais e redirecionamentos privados são bloqueados."},"base64":{"type":"string","minLength":4,"maxLength":44739248,"description":"Conteúdo da mídia em base64 puro, limitado a 32 MiB."},"mimetype":{"type":"string","maxLength":128},"accessibilityLabel":{"type":"string","maxLength":65536},"seconds":{"type":"integer","minimum":0,"maximum":4294967295},"waveformBase64":{"type":"string","maxLength":1398104,"description":"Waveform em base64, até 1 MiB."},"normalizeVoice":{"type":"boolean","default":true},"backgroundColor":{"oneOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}(?:[0-9A-Fa-f]{2})?$"},{"type":"integer","minimum":0,"maximum":4294967295}],"description":"#RRGGBB, #AARRGGBB ou uint32 ARGB."}},"additionalProperties":false,"required":["recipients"],"oneOf":[{"required":["url"],"not":{"required":["base64"]}},{"required":["base64"],"not":{"required":["url"]}}]},"example":{"recipients":["5511999999999@s.whatsapp.net"],"url":"https://example.com/status.ogg","mimetype":"audio/ogg; codecs=opus"}}}},"x-mvo-operation":"status.publish-voice"}},"/v1/instances/cliente-01/operations/status.react":{"put":{"operationId":"client_operation_status_react","summary":"Definir ou remover reação a um status recebido","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa status.react. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Definir ou remover reação a um status recebido. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}],"requestBody":{"required":true,"description":"Definir ou remover reação a um status recebido. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"emoji":{"type":"string","maxLength":32,"description":"Emoji Unicode; string vazia remove a reação."},"_params":{"type":"object","required":["message_id"],"properties":{"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["author","emoji","_params"]},"example":{"author":"5511999999999@s.whatsapp.net","emoji":"❤️","_params":{"message_id":"MVO_STATUS_EXAMPLE"}}}}},"x-mvo-operation":"status.react"}},"/v1/instances/cliente-01/operations/status.read":{"post":{"operationId":"client_operation_status_read","summary":"Marcar status recebido como visto","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa status.read. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Marcar status recebido como visto. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}],"requestBody":{"required":true,"description":"Marcar status recebido como visto. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"_params":{"type":"object","required":["message_id"],"properties":{"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["author","_params"]},"example":{"author":"5511999999999@s.whatsapp.net","_params":{"message_id":"MVO_STATUS_EXAMPLE"}}}}},"x-mvo-operation":"status.read"}},"/v1/instances/cliente-01/operations/status.received":{"get":{"operationId":"client_operation_status_received","summary":"Listar status recebidos","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta status.received. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Listar status recebidos. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Timestamp Unix exclusivo, em segundos."},"description":"Timestamp Unix exclusivo, em segundos."},{"name":"includeExpired","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"includeRevoked","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"x-mvo-operation":"status.received"}},"/v1/instances/cliente-01/operations/status.reply":{"post":{"operationId":"client_operation_status_reply","summary":"Responder a um status recebido","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa status.reply. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Responder a um status recebido. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"author","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}],"requestBody":{"required":true,"description":"Responder a um status recebido. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."},"text":{"type":"string","minLength":1,"maxLength":65536},"_params":{"type":"object","required":["message_id"],"properties":{"message_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"}},"additionalProperties":false}},"additionalProperties":false,"required":["author","text","_params"]},"example":{"author":"5511999999999@s.whatsapp.net","text":"Gostei do seu status!","_params":{"message_id":"MVO_STATUS_EXAMPLE"}}}}},"x-mvo-operation":"status.reply"}},"/v1/instances/cliente-01/operations/status.unmute":{"delete":{"operationId":"client_operation_status_unmute","summary":"Reativar status de um autor","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa status.unmute. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Reativar status de um autor. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Reativar status de um autor. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["author"],"properties":{"author":{"type":"string","pattern":"^(?:\\+?[0-9][0-9 ()-]{4,30}|[0-9]{1,20}@(?:s\\.whatsapp\\.net|lid))$","maxLength":128,"example":"5511999999999@s.whatsapp.net","description":"Telefone com DDI ou JID PN/LID real, sem dispositivo. Não aceita usernames, grupos ou status@broadcast."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"author":"5511999999999@s.whatsapp.net"}}}}},"x-mvo-operation":"status.unmute"}},"/v1/instances/cliente-01/operations/status.viewers":{"get":{"operationId":"client_operation_status_viewers","summary":"Listar visualizações observadas do status próprio","tags":["Status"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta status.viewers. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Listar visualizações observadas do status próprio. Status se refere às publicações temporárias de 24 horas, não ao recado do perfil.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"message_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"ID real da mensagem recebida/enviada.","example":"MVO_STATUS_EXAMPLE"},"description":"ID real da mensagem recebida/enviada."}],"x-mvo-operation":"status.viewers"}},"/v1/instances/cliente-01/operations/voip.accept":{"post":{"operationId":"client_operation_voip_accept","summary":"voip.accept","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa voip.accept. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. callId pode vir do parâmetro call_id da rota. Sem outros campos. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"callId pode vir do parâmetro call_id da rota. Sem outros campos.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"call_id":"CALL_ID"}}}}},"x-mvo-operation":"voip.accept"}},"/v1/instances/cliente-01/operations/voip.audio":{"post":{"operationId":"client_operation_voip_audio","summary":"voip.audio","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa voip.audio. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Enfileira um arquivo de áudio. Não recebe caminho local nem fileName. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Enfileira um arquivo de áudio. Não recebe caminho local nem fileName.","content":{"application/json":{"schema":{"type":"object","properties":{"audioBase64":{"type":"string","format":"byte","minLength":1,"description":"Arquivo de áudio inteiro em base64, decodificado pelo FFmpeg."},"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["audioBase64","_params"]},"example":{"audioBase64":"UklGRiYAAABXQVZFZm10IBAAAAABAAEAgD4AAAB9AAACABAAZGF0YQIAAAAAAA==","_params":{"call_id":"CALL_ID"}}}}},"x-mvo-operation":"voip.audio"}},"/v1/instances/cliente-01/operations/voip.buffer":{"get":{"operationId":"client_operation_voip_buffer","summary":"voip.buffer","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta voip.buffer. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. callId pode vir do parâmetro call_id da rota. Sem outros campos.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"call_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."},"description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}],"x-mvo-operation":"voip.buffer"}},"/v1/instances/cliente-01/operations/voip.end":{"post":{"operationId":"client_operation_voip_end","summary":"voip.end","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa voip.end. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Encerra a chamada identificada. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Encerra a chamada identificada.","content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","enum":["user_ended","declined","timeout","busy","cancelled","failed","do_not_disturb","unknown"],"default":"user_ended","description":"Motivo opcional."},"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"reason":"user_ended","_params":{"call_id":"CALL_ID"}}}}},"x-mvo-operation":"voip.end"}},"/v1/instances/cliente-01/operations/voip.get":{"get":{"operationId":"client_operation_voip_get","summary":"voip.get","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta voip.get. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. callId pode vir do parâmetro call_id da rota. Sem outros campos.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."},{"name":"call_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."},"description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}],"x-mvo-operation":"voip.get"}},"/v1/instances/cliente-01/operations/voip.inbound-audio":{"post":{"operationId":"client_operation_voip_inbound_audio","summary":"voip.inbound-audio","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa voip.inbound-audio. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. callId pode vir do parâmetro call_id da rota. Sem outros campos. POST consome os quadros recebidos e remove esses dados do buffer; esta operação não é uma leitura repetível.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"callId pode vir do parâmetro call_id da rota. Sem outros campos.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"call_id":"CALL_ID"}}}}},"x-mvo-operation":"voip.inbound-audio"}},"/v1/instances/cliente-01/operations/voip.inbound-video":{"post":{"operationId":"client_operation_voip_inbound_video","summary":"voip.inbound-video","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa voip.inbound-video. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. callId pode vir do parâmetro call_id da rota. Sem outros campos. POST consome os quadros recebidos e remove esses dados do buffer; esta operação não é uma leitura repetível.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"callId pode vir do parâmetro call_id da rota. Sem outros campos.","content":{"application/json":{"schema":{"type":"object","properties":{"callId":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false,"required":["callId"]},"example":{"callId":"CALL_ID"}}}},"x-mvo-operation":"voip.inbound-video"}},"/v1/instances/cliente-01/operations/voip.list":{"get":{"operationId":"client_operation_voip_list","summary":"voip.list","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta voip.list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Lista chamadas. Sem JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"voip.list"}},"/v1/instances/cliente-01/operations/voip.live-audio":{"post":{"operationId":"client_operation_voip_live_audio","summary":"voip.live-audio","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa voip.live-audio. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Bloco de 160 amostras (10 ms de silêncio) no exemplo. Fila máxima: 8000 amostras. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Bloco de 160 amostras (10 ms de silêncio) no exemplo. Fila máxima: 8000 amostras.","content":{"application/json":{"schema":{"type":"object","properties":{"pcmBase64":{"type":"string","format":"byte","minLength":1,"maxLength":42668,"description":"Amostras PCM float32 little-endian, mono, 16000 Hz; base64."},"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["pcmBase64","_params"]},"example":{"pcmBase64":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==","_params":{"call_id":"CALL_ID"}}}}},"x-mvo-operation":"voip.live-audio"}},"/v1/instances/cliente-01/operations/voip.live-mode":{"put":{"operationId":"client_operation_voip_live_mode","summary":"voip.live-mode","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa voip.live-mode. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Altera enabled na chamada identificada. O valor padrão é false.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Altera enabled na chamada identificada. O valor padrão é false.","content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"enabled":true,"_params":{"call_id":"CALL_ID"}}}}},"x-mvo-operation":"voip.live-mode"}},"/v1/instances/cliente-01/operations/voip.live-ticket":{"post":{"operationId":"client_operation_voip_live_ticket","summary":"voip.live-ticket","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa voip.live-ticket. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. callId pode vir do parâmetro call_id da rota. Sem outros campos. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"callId pode vir do parâmetro call_id da rota. Sem outros campos.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"call_id":"CALL_ID"}}}}},"x-mvo-operation":"voip.live-ticket"}},"/v1/instances/cliente-01/operations/voip.live-video":{"post":{"operationId":"client_operation_voip_live_video","summary":"voip.live-video","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa voip.live-video. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Exemplo mínimo de formato Annex-B; substitua pelo frame H.264 real. Exige chamada com vídeo negociado. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Exemplo mínimo de formato Annex-B; substitua pelo frame H.264 real. Exige chamada com vídeo negociado.","content":{"application/json":{"schema":{"type":"object","properties":{"callId":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."},"data":{"type":"string","format":"byte","minLength":1,"maxLength":2796204,"description":"Frame H.264 Annex-B em base64. Deve iniciar com start code."},"timestamp":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0,"description":"Timestamp em microssegundos, convertido para clock RTP de 90 kHz."}},"additionalProperties":false,"required":["callId","data"]},"example":{"callId":"CALL_ID","data":"AAAAAWUIhA==","timestamp":0}}}},"x-mvo-operation":"voip.live-video"}},"/v1/instances/cliente-01/operations/voip.mute":{"put":{"operationId":"client_operation_voip_mute","summary":"voip.mute","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa voip.mute. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Altera muted na chamada identificada. O valor padrão é false.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Altera muted na chamada identificada. O valor padrão é false.","content":{"application/json":{"schema":{"type":"object","properties":{"muted":{"type":"boolean","default":false},"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"muted":true,"_params":{"call_id":"CALL_ID"}}}}},"x-mvo-operation":"voip.mute"}},"/v1/instances/cliente-01/operations/voip.reject":{"post":{"operationId":"client_operation_voip_reject","summary":"voip.reject","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa voip.reject. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Identifique a chamada; motivo personalizado de rejeição ainda retorna 501. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Identifique a chamada; motivo personalizado de rejeição ainda retorna 501.","content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","enum":["declined"],"default":"declined","description":"Motivo opcional."},"_params":{"type":"object","required":["call_id"],"properties":{"call_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$","maxLength":128,"example":"CALL_ID","description":"ID real da chamada, devolvido por voip.start ou recebido nos eventos."}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"reason":"declined","_params":{"call_id":"CALL_ID"}}}}},"x-mvo-operation":"voip.reject"}},"/v1/instances/cliente-01/operations/voip.start":{"post":{"operationId":"client_operation_voip_start","summary":"voip.start","tags":["voip"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa voip.start. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Inicia chamada; requer dependências nativas e sessão conectada. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Inicia chamada; requer dependências nativas e sessão conectada.","content":{"application/json":{"schema":{"type":"object","properties":{"numero":{"type":"string","pattern":"^\\+?[1-9][0-9]{7,14}$","description":"Número com DDI e DDD."},"number":{"type":"string","description":"Alias de numero."},"isVideo":{"type":"boolean","default":false},"mediaType":{"type":"string","enum":["audio","video"],"description":"Alias do tipo de mídia."}},"additionalProperties":false,"anyOf":[{"required":["numero"]},{"required":["number"]}]},"example":{"numero":"5511999999999","isVideo":false}}}},"x-mvo-operation":"voip.start"}},"/v1/instances/cliente-01/operations/webhooks.add":{"post":{"operationId":"client_operation_webhooks_add","summary":"webhooks.add","tags":["Webhooks"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa webhooks.add. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Adiciona destinos legados. Para segredo HMAC use PUT /v1/instances/{instance_id}/webhooks. ","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Adiciona destinos legados. Para segredo HMAC use PUT /v1/instances/{instance_id}/webhooks.","content":{"application/json":{"schema":{"type":"object","properties":{"webhooks":{"type":"array","minItems":1,"maxItems":16,"items":{"type":"object","properties":{"url":{"type":"string","format":"uri","pattern":"^https://","description":"URL HTTPS pública."},"enabled":{"type":"boolean","default":false}},"additionalProperties":false,"required":["url"]}}},"additionalProperties":false,"required":["webhooks"]},"example":{"webhooks":[{"url":"https://seu-sistema.example/whatsapp","enabled":true}]}}}},"x-mvo-operation":"webhooks.add"}},"/v1/instances/cliente-01/operations/webhooks.delete":{"delete":{"operationId":"client_operation_webhooks_delete","summary":"webhooks.delete","tags":["Webhooks"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa webhooks.delete. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Exclui o webhook identificado no caminho. Sem JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Exclui o webhook identificado no caminho. Sem JSON.","content":{"application/json":{"schema":{"type":"object","properties":{"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[a-f0-9]{32}$","description":"ID retornado ao cadastrar o webhook.","example":"00000000000000000000000000000001"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"_params":{"id":"00000000000000000000000000000001"}}}}},"x-mvo-operation":"webhooks.delete"}},"/v1/instances/cliente-01/operations/webhooks.list":{"get":{"operationId":"client_operation_webhooks_list","summary":"webhooks.list","tags":["Webhooks"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Consulta webhooks.list. Os seletores e filtros vão na query string; não envie corpo JSON. Use Prefer: respond-async para receber o job_id imediatamente. Lista webhooks da instância, sem segredos. Sem JSON.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"x-mvo-operation":"webhooks.list"}},"/v1/instances/cliente-01/operations/webhooks.update":{"patch":{"operationId":"client_operation_webhooks_update","summary":"webhooks.update","tags":["Webhooks"],"security":[{"InstanceBearer":[]}],"responses":{"200":{"description":"Resultado da operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"202":{"description":"Comando enfileirado; consulte status_url ou jobs/{job_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandAccepted"}}}},"400":{"description":"Tipo de conexão ou número inválido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Token ausente, inválido ou pertencente a outra instância.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Operação recusada por permissão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Instância, recurso, job ou operação não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Sessão desconectada, conflito de idempotência ou resultado incerto.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Campos inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Fila cheia ou limite do serviço.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Capacidade indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"O WhatsApp não confirmou a operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Supervisor ou worker indisponível.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"description":"Executa webhooks.update. Parâmetros da rota compatível vão no objeto _params; filtros permanecem na query string. Use Prefer: respond-async para receber o job_id imediatamente. Altera url e/ou enabled do webhook identificado no caminho.  O método POST anterior continua aceito por compatibilidade.","x-mvo-compatibility-methods":["POST"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Chave única do comando. Mesmo conteúdo retorna o mesmo job; conteúdo diferente retorna 409."},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"Receber imediatamente HTTP 202 com job_id."},{"name":"async","in":"query","required":false,"schema":{"type":"string","enum":["0","1"],"default":"0"},"description":"1 ativa processamento assíncrono."}],"requestBody":{"required":true,"description":"Altera url e/ou enabled do webhook identificado no caminho.","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","pattern":"^https://","description":"URL HTTPS pública."},"enabled":{"type":"boolean","default":false},"_params":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[a-f0-9]{32}$","description":"ID retornado ao cadastrar o webhook.","example":"00000000000000000000000000000001"}},"additionalProperties":false}},"additionalProperties":false,"required":["_params"]},"example":{"url":"https://seu-sistema.example/whatsapp","enabled":true,"_params":{"id":"00000000000000000000000000000001"}}}}},"x-mvo-operation":"webhooks.update"}}},"components":{"securitySchemes":{"InstanceBearer":{"type":"http","scheme":"bearer","description":"Token exclusivo desta instância. Informe apenas o token, sem o prefixo Bearer. O token administrativo não deve ser entregue ao cliente."}},"schemas":{"InstanceId":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,63}$","example":"cliente-demo","description":"Id público. Nomes reservados do sistema e ponto final não são aceitos."},"Instance":{"type":"object","required":["id","name","state","desired_state"],"properties":{"id":{"$ref":"#/components/schemas/InstanceId"},"instance_key":{"$ref":"#/components/schemas/InstanceId"},"name":{"type":"string"},"state":{"type":"string","example":"connected"},"desired_state":{"type":"string","enum":["running","stopped"]},"registered":{"type":"boolean","example":false},"account_jid":{"type":"string","nullable":true},"web_version":{"type":"string","nullable":true},"worker_pid":{"type":"integer","nullable":true},"heartbeat_at":{"type":"integer","nullable":true},"created_at":{"type":"integer"},"updated_at":{"type":"integer"}}},"InstanceResponse":{"type":"object","required":["error","instance"],"properties":{"error":{"type":"boolean","example":false},"instance":{"$ref":"#/components/schemas/Instance"}}},"ConnectRequest":{"type":"object","properties":{"tipo":{"type":"string","enum":["qrcode","codigo"],"default":"qrcode","description":"Modo de conexão; qrcode por padrão."},"mode":{"type":"string","enum":["qrcode","codigo"],"description":"Alias de tipo."},"numero":{"type":"string","pattern":"^[1-9][0-9]{7,14}$","example":"5511999999999","description":"Obrigatório no modo codigo; inclua DDI e DDD."}},"additionalProperties":false,"anyOf":[{"properties":{"tipo":{"enum":["qrcode"]},"mode":{"enum":["qrcode"]}}},{"required":["numero"],"properties":{"tipo":{"enum":["codigo"]},"mode":{"enum":["codigo"]}},"anyOf":[{"required":["tipo"]},{"required":["mode"]}]}]},"ConnectResponse":{"type":"object","required":["error","status"],"properties":{"error":{"type":"boolean","example":false},"tipo":{"type":"string","enum":["qrcode","codigo"]},"status":{"type":"string","enum":["waiting_qrcode","qrcode","waiting_code","code_generated","connected"]},"qrcode":{"type":"string","nullable":true,"description":"Data URI image/svg+xml;base64, ou null enquanto aguarda."},"code":{"type":"string","nullable":true},"numero":{"type":"string","nullable":true},"message":{"type":"string"},"qr_version":{"type":"integer"},"updated_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"refresh_after_ms":{"type":"integer","example":5000},"passkey":{"type":"object","additionalProperties":true},"dados":{"type":"object","additionalProperties":true}}},"SendMessageRequest":{"oneOf":[{"$ref":"#/components/schemas/MessageRequest_text"},{"$ref":"#/components/schemas/MessageRequest_reply"},{"$ref":"#/components/schemas/MessageRequest_forward"},{"$ref":"#/components/schemas/MessageRequest_media"},{"$ref":"#/components/schemas/MessageRequest_voice"},{"$ref":"#/components/schemas/MessageRequest_link"},{"$ref":"#/components/schemas/MessageRequest_poll"},{"$ref":"#/components/schemas/MessageRequest_location"},{"$ref":"#/components/schemas/MessageRequest_contact"},{"$ref":"#/components/schemas/MessageRequest_form"},{"$ref":"#/components/schemas/MessageRequest_flow"},{"$ref":"#/components/schemas/MessageRequest_flow_navigate"},{"$ref":"#/components/schemas/MessageRequest_flow_exchange"},{"$ref":"#/components/schemas/MessageRequest_buttons"},{"$ref":"#/components/schemas/MessageRequest_list"},{"$ref":"#/components/schemas/MessageRequest_charge"},{"$ref":"#/components/schemas/MessageRequest_payment"},{"$ref":"#/components/schemas/MessageRequest_event"},{"$ref":"#/components/schemas/MessageRequest_reaction"},{"$ref":"#/components/schemas/MessageRequest_edit"},{"$ref":"#/components/schemas/MessageRequest_delete"}],"description":"Selecione o exemplo do tipo desejado. Cada payload usa os mesmos campos da operação message.* correspondente."},"CommandAccepted":{"type":"object","required":["error","status","job_id","instance_key","status_url"],"properties":{"error":{"type":"boolean","example":false},"status":{"type":"string","enum":["pending","running","completed","failed"]},"job_id":{"type":"string","pattern":"^[a-f0-9]{32}$"},"instance_key":{"$ref":"#/components/schemas/InstanceId"},"status_url":{"type":"string"}}},"JobResponse":{"type":"object","required":["error","job_id","status"],"properties":{"error":{"type":"boolean","example":false},"job_id":{"type":"string"},"status":{"type":"string","enum":["pending","running","completed","failed"]},"result":{"description":"Resultado original quando completed."},"failure":{"type":"object","nullable":true,"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}},"Event":{"type":"object","required":["id","event","data","created_at"],"properties":{"id":{"type":"integer"},"event":{"type":"string"},"data":{"type":"object","additionalProperties":true},"created_at":{"type":"integer","description":"Unix timestamp em segundos."}},"example":{"id":1,"event":"message","data":{"id":"MESSAGE_ID","chat":"5511999999999@s.whatsapp.net","fromMe":false,"type":"text","text":"Olá, gostaria de atendimento.","timestamp":1770000000,"account_jid":"5511888888888@s.whatsapp.net"},"created_at":1770000000}},"EventsResponse":{"type":"object","required":["error","events","next_cursor"],"properties":{"error":{"type":"boolean","example":false},"events":{"type":"array","items":{"$ref":"#/components/schemas/Event"}},"next_cursor":{"type":"integer","minimum":0}}},"WebhooksRequest":{"type":"object","required":["webhooks"],"properties":{"webhooks":{"type":"array","maxItems":16,"items":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^https://"},"enabled":{"type":"boolean","default":true},"secret":{"type":"string","maxLength":256,"writeOnly":true,"description":"Segredo HMAC. Não é um token de API."}}}}}},"Webhook":{"type":"object","required":["id","url","enabled"],"properties":{"id":{"type":"string"},"url":{"type":"string","format":"uri"},"enabled":{"type":"boolean","example":false}}},"WebhooksResponse":{"type":"object","required":["error","webhooks"],"properties":{"error":{"type":"boolean","example":false},"webhooks":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}}}},"PasskeyResponse":{"type":"object","properties":{"error":{"type":"boolean","example":false},"passkey":{"type":"object","additionalProperties":true}}},"OperationResponse":{"description":"Resultado específico da operação; preserva o envelope compatível."},"ErrorResponse":{"type":"object","required":["error","code","message"],"properties":{"error":{"type":"boolean","enum":[true]},"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true}},"example":{"error":true,"code":"session_not_connected","message":"Instância não conectada."}},"MessageRequest_text":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["text"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto enviado ao destinatário."},"texto":{"type":"string","minLength":1,"description":"Alias de text; text tem preferência."}},"additionalProperties":false,"anyOf":[{"required":["text"]},{"required":["texto"]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto enviado ao destinatário."},"texto":{"type":"string","minLength":1,"description":"Alias de text; text tem preferência."}},"additionalProperties":false,"anyOf":[{"required":["text"]},{"required":["texto"]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."}},"additionalProperties":false},"MessageRequest_reply":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["reply"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1}},"additionalProperties":false,"required":["numero","text"]},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["messageData","mensagem"]},{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto da resposta."},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["numero","text","mensagem"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto da resposta."},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["numero","text","mensagem"]}]}},"additionalProperties":false},"MessageRequest_forward":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["forward"]},"payload":{"anyOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["numero","mensagem"]},{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"}},"additionalProperties":false,"required":["numero"]},"mensagem":{"anyOf":[{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"retorno":{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}},"additionalProperties":false,"required":["retorno"]},{"type":"object","properties":{"msgData":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"message":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"proto":{"type":"object","properties":{"conversation":{"type":"string","minLength":1,"description":"Texto da mensagem original.","example":"Olá! Preciso de ajuda."},"extendedTextMessage":{"type":"object","properties":{"text":{"type":"string"}},"additionalProperties":true},"imageMessage":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"directPath":{"type":"string"},"mediaKey":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileEncSha256":{"anyOf":[{"type":"string","format":"byte"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":255}}]},"fileLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"mimetype":{"type":"string","minLength":1},"caption":{"type":"string"},"fileName":{"type":"string","minLength":1}},"additionalProperties":true}},"additionalProperties":true,"description":"Copie message/proto original do evento. Aceita todos os tipos conhecidos pelo schema; nomes desconhecidos são rejeitados.","example":{"conversation":"Olá! Preciso de ajuda."}},"messageTimestamp":{"anyOf":[{"type":"integer","minimum":0},{"type":"string","minLength":1,"pattern":"^[0-9]+$"}]},"pushName":{"type":"string"},"participant":{"type":"string","minLength":1}},"additionalProperties":false,"anyOf":[{"required":["message"]},{"required":["proto"]}]}},"additionalProperties":false,"required":["msgData"]}],"description":"Mensagem original. Aceita objeto direto, retorno, msgData e retorno.msgData do envelope legado."}},"additionalProperties":false,"required":["messageData","mensagem"]}]}},"additionalProperties":false},"MessageRequest_media":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["media"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"type":{"type":"string","minLength":1,"enum":["image","video","audio","document","sticker","gif","ptv","ptt"]},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"caption":{"type":"string","description":"Legenda da mídia."},"mimeType":{"type":"string","minLength":1,"description":"MIME do arquivo, quando necessário.","example":"image/png"},"nameFile":{"type":"string","minLength":1,"description":"Nome de arquivo sem diretórios. Alias de fileName.","maxLength":255},"fileName":{"type":"string","minLength":1,"description":"Nome de arquivo sem barras ou diretórios.","maxLength":255},"seconds":{"type":"integer","minimum":0,"description":"Duração em segundos, quando aplicável."},"viewOnce":{"type":"boolean","description":"Visualização única, quando suportada pelo tipo."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}],"required":["numero","type"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"type":{"type":"string","minLength":1,"enum":["image","video","audio","document","sticker","gif","ptv","ptt"]},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"caption":{"type":"string","description":"Legenda da mídia."},"mimeType":{"type":"string","minLength":1,"description":"MIME do arquivo, quando necessário.","example":"image/png"},"nameFile":{"type":"string","minLength":1,"description":"Nome de arquivo sem diretórios. Alias de fileName.","maxLength":255},"fileName":{"type":"string","minLength":1,"description":"Nome de arquivo sem barras ou diretórios.","maxLength":255},"seconds":{"type":"integer","minimum":0,"description":"Duração em segundos, quando aplicável."},"viewOnce":{"type":"boolean","description":"Visualização única, quando suportada pelo tipo."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}],"required":["numero","type"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."}},"additionalProperties":false},"MessageRequest_voice":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["voice"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"caption":{"type":"string","description":"Legenda da mídia."},"mimeType":{"type":"string","minLength":1,"description":"MIME do arquivo, quando necessário.","example":"image/png"},"nameFile":{"type":"string","minLength":1,"description":"Nome de arquivo sem diretórios. Alias de fileName.","maxLength":255},"fileName":{"type":"string","minLength":1,"description":"Nome de arquivo sem barras ou diretórios.","maxLength":255},"seconds":{"type":"integer","minimum":0,"description":"Duração em segundos, quando aplicável."},"viewOnce":{"type":"boolean","description":"Visualização única, quando suportada pelo tipo."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"caption":{"type":"string","description":"Legenda da mídia."},"mimeType":{"type":"string","minLength":1,"description":"MIME do arquivo, quando necessário.","example":"image/png"},"nameFile":{"type":"string","minLength":1,"description":"Nome de arquivo sem diretórios. Alias de fileName.","maxLength":255},"fileName":{"type":"string","minLength":1,"description":"Nome de arquivo sem barras ou diretórios.","maxLength":255},"seconds":{"type":"integer","minimum":0,"description":"Duração em segundos, quando aplicável."},"viewOnce":{"type":"boolean","description":"Visualização única, quando suportada pelo tipo."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."}},"additionalProperties":false},"MessageRequest_link":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["link"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto da mensagem com link."},"sourceUrl":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192},"url":{"type":"string","minLength":1,"description":"Alias de sourceUrl.","format":"uri","pattern":"^https://","maxLength":8192},"title":{"type":"string","description":"Título do preview."},"body":{"type":"string","description":"Descrição do preview."},"thumbnailUrl":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192},"mediaType":{"type":"string","minLength":1,"description":"Tipo do thumbnail externo.","enum":["image","video"],"default":"image"}},"additionalProperties":false,"anyOf":[{"required":["sourceUrl"]},{"required":["url"]}],"required":["numero","text"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Texto da mensagem com link."},"sourceUrl":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192},"url":{"type":"string","minLength":1,"description":"Alias de sourceUrl.","format":"uri","pattern":"^https://","maxLength":8192},"title":{"type":"string","description":"Título do preview."},"body":{"type":"string","description":"Descrição do preview."},"thumbnailUrl":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192},"mediaType":{"type":"string","minLength":1,"description":"Tipo do thumbnail externo.","enum":["image","video"],"default":"image"}},"additionalProperties":false,"anyOf":[{"required":["sourceUrl"]},{"required":["url"]}],"required":["numero","text"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."}},"additionalProperties":false},"MessageRequest_poll":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["poll"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"pergunta":{"type":"string","minLength":1,"description":"Pergunta da enquete."},"name":{"type":"string","minLength":1,"description":"Alias de pergunta."},"opcoes":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"opcao":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"description":"Alias de opcao."}},"additionalProperties":false,"anyOf":[{"required":["opcao"]},{"required":["name"]}]}]},"minItems":1,"maxItems":12},"options":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"opcao":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"description":"Alias de opcao."}},"additionalProperties":false,"anyOf":[{"required":["opcao"]},{"required":["name"]}]}]},"minItems":1,"maxItems":12,"description":"Alias de opcoes."},"selectableCount":{"type":"integer","minimum":0,"maximum":12,"default":1,"description":"0 permite múltiplas seleções; não pode exceder a quantidade de opções."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pergunta"]},{"required":["name"]}]},{"anyOf":[{"required":["opcoes"]},{"required":["options"]}]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"pergunta":{"type":"string","minLength":1,"description":"Pergunta da enquete."},"name":{"type":"string","minLength":1,"description":"Alias de pergunta."},"opcoes":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"opcao":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"description":"Alias de opcao."}},"additionalProperties":false,"anyOf":[{"required":["opcao"]},{"required":["name"]}]}]},"minItems":1,"maxItems":12},"options":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"opcao":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"description":"Alias de opcao."}},"additionalProperties":false,"anyOf":[{"required":["opcao"]},{"required":["name"]}]}]},"minItems":1,"maxItems":12,"description":"Alias de opcoes."},"selectableCount":{"type":"integer","minimum":0,"maximum":12,"default":1,"description":"0 permite múltiplas seleções; não pode exceder a quantidade de opções."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pergunta"]},{"required":["name"]}]},{"anyOf":[{"required":["opcoes"]},{"required":["options"]}]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."}},"additionalProperties":false},"MessageRequest_location":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["location"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"coordenadas":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333}},"additionalProperties":false,"required":["latitude","longitude"]},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"name":{"type":"string","description":"Nome do local."},"address":{"type":"string","description":"Endereço do local."}},"additionalProperties":false,"anyOf":[{"required":["coordenadas"]},{"required":["latitude","longitude"]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"coordenadas":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333}},"additionalProperties":false,"required":["latitude","longitude"]},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"name":{"type":"string","description":"Nome do local."},"address":{"type":"string","description":"Endereço do local."}},"additionalProperties":false,"anyOf":[{"required":["coordenadas"]},{"required":["latitude","longitude"]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."}},"additionalProperties":false},"MessageRequest_contact":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["contact"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"vcard":{"type":"object","properties":{"fullName":{"type":"string","minLength":1,"description":"Nome completo do contato."},"phoneNumber":{"type":"string","minLength":1,"description":"Telefone do contato, com DDI e DDD.","example":"5511999999999"},"organization":{"type":"string","description":"Organização do contato."}},"additionalProperties":false,"required":["fullName","phoneNumber"]}},"additionalProperties":false,"required":["numero","vcard"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"vcard":{"type":"object","properties":{"fullName":{"type":"string","minLength":1,"description":"Nome completo do contato."},"phoneNumber":{"type":"string","minLength":1,"description":"Telefone do contato, com DDI e DDD.","example":"5511999999999"},"organization":{"type":"string","description":"Organização do contato."}},"additionalProperties":false,"required":["fullName","phoneNumber"]}},"additionalProperties":false,"required":["numero","vcard"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."}},"additionalProperties":false},"MessageRequest_form":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["form"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false}},"platform":{"type":"string","enum":["portable"],"default":"portable","description":"Escolhas compatíveis com o caminho validado no Web e Android. Campos input não são aceitos."}},"required":["numero","cta","steps"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"oneOf":[{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false},{"type":"object","required":["id","label","kind","fields"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Título da etapa, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["input"]},"fields":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","label","type","required"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID do campo retornado, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Rótulo do campo, até 1024 bytes UTF-8."},"type":{"type":"string","enum":["text"]},"required":{"type":"boolean","description":"Indica se o preenchimento é obrigatório."},"default":{"type":"string","maxLength":128,"description":"Valor inicial opcional. Limite real de 128 unidades UTF-16, como no Android: um emoji ocupa duas unidades."}},"additionalProperties":false}},"button":{"type":"string","minLength":1,"maxLength":30,"description":"Botão de envio da etapa. Se omitido, usa cta; até 30 caracteres Unicode."}},"additionalProperties":false}]}},"platform":{"type":"string","enum":["android"],"description":"Habilita InputFields validado no Android. Não há suporte Web confirmado para essas etapas."}},"required":["numero","cta","steps","platform"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]}]}},"required":["messageData"],"additionalProperties":false},{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false}},"platform":{"type":"string","enum":["portable"],"default":"portable","description":"Escolhas compatíveis com o caminho validado no Web e Android. Campos input não são aceitos."}},"required":["numero","cta","steps"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal. Alias de text; não combine valores diferentes."},"text":{"type":"string","minLength":1,"maxLength":65536,"description":"Texto principal, até 65536 bytes UTF-8."},"titulo":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional. Alias de title."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Título opcional."},"footer":{"type":"string","minLength":1,"maxLength":1024,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"maxLength":30,"description":"Rótulo do botão que abre o formulário, até 30 caracteres Unicode."},"steps":{"type":"array","minItems":1,"maxItems":3,"items":{"oneOf":[{"type":"object","required":["id","label","selection","options"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, até 128 bytes UTF-8; único no formulário. Identifica o campo retornado."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Pergunta exibida, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["choice"],"default":"choice"},"selection":{"type":"string","enum":["single","multiple"],"description":"Uma opção ou várias opções na etapa."},"options":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da opção, até 128 bytes UTF-8; único dentro da etapa."},"title":{"type":"string","minLength":1,"maxLength":1024,"description":"Texto exibido para a opção, até 1024 bytes UTF-8."}},"additionalProperties":false}},"allow_custom_answer":{"type":"boolean","default":false,"description":"Permite ao cliente informar uma resposta personalizada."}},"additionalProperties":false},{"type":"object","required":["id","label","kind","fields"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID da etapa, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Título da etapa, até 1024 bytes UTF-8."},"kind":{"type":"string","enum":["input"]},"fields":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","required":["id","label","type","required"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"ID do campo retornado, único entre etapas e campos; até 128 bytes UTF-8."},"label":{"type":"string","minLength":1,"maxLength":1024,"description":"Rótulo do campo, até 1024 bytes UTF-8."},"type":{"type":"string","enum":["text"]},"required":{"type":"boolean","description":"Indica se o preenchimento é obrigatório."},"default":{"type":"string","maxLength":128,"description":"Valor inicial opcional. Limite real de 128 unidades UTF-16, como no Android: um emoji ocupa duas unidades."}},"additionalProperties":false}},"button":{"type":"string","minLength":1,"maxLength":30,"description":"Botão de envio da etapa. Se omitido, usa cta; até 30 caracteres Unicode."}},"additionalProperties":false}]}},"platform":{"type":"string","enum":["android"],"description":"Habilita InputFields validado no Android. Não há suporte Web confirmado para essas etapas."}},"required":["numero","cta","steps","platform"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]}]}]}],"description":"Aceita messageData ou os mesmos campos diretamente no corpo."}},"additionalProperties":false},"MessageRequest_flow":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["flow"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"oneOf":[{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_id","screen"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["screen"],"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_id","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_json"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_json","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["data_exchange"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["data_exchange"]}},"required":["numero","flow_id","flow_token"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]},{"anyOf":[{"required":["action"]},{"required":["flow_action"]}]}]}]}},"required":["messageData"],"additionalProperties":false},{"oneOf":[{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_id","screen"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["screen"],"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_id","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_json"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_json","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["data_exchange"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["data_exchange"]}},"required":["numero","flow_id","flow_token"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]},{"anyOf":[{"required":["action"]},{"required":["flow_action"]}]}]}]}],"description":"Aceita messageData ou os mesmos campos diretamente no corpo. Use somente uma forma de cada alias."}},"additionalProperties":false},"MessageRequest_flow_navigate":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["flow.navigate"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_id","screen"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["screen"],"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_id","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_json"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_json","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}]}},"required":["messageData"],"additionalProperties":false},{"oneOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_id","screen"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["screen"],"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_id","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"required":["numero","flow_token","flow_json"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["navigate"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["navigate"]},"flow_json":{"oneOf":[{"type":"object","required":["version","screens"],"properties":{"version":{"type":"string","minLength":1,"description":"Versão do JSON do Flow, por exemplo 7.3.","pattern":"^[1-9][0-9]*\\.[0-9]+$","maxLength":16},"screens":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["id","layout"],"properties":{"id":{"type":"string","minLength":1,"description":"ID único da tela, sem diferenciar maiúsculas e minúsculas.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","maxLength":64},"title":{"type":"string"},"terminal":{"type":"boolean"},"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"layout":{"type":"object","required":["type","children"],"properties":{"type":{"type":"string","minLength":1,"description":"Tipo de layout, por exemplo SingleColumnLayout."},"children":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},{"type":"string","minLength":1,"description":"A mesma definição inline serializada como objeto JSON, até 256 KiB.","maxLength":262144}],"description":"Definição inline de um Flow navigate, até 256 KiB de JSON. Enviada no próprio botão. Não exige Flow previamente publicado nem flow_id. Troca de dados com endpoint exige um Flow registrado e não aceita flow_json."},"flow_action_payload":{"type":"object","properties":{"screen":{"type":"string","minLength":1,"description":"ID da tela inicial. Em Flow inline, omitir este campo abre a primeira tela da definição."},"data":{"type":"object","additionalProperties":true,"description":"Dados iniciais da tela. Objetos JSON vazios são preservados como {}.","example":{"cliente_id":42}}},"additionalProperties":false,"description":"Alternativa a screen/data no nível principal. Não combine os dois formatos."}},"required":["numero","flow_token","flow_json","flow_action_payload"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}]}],"description":"Aceita messageData ou os mesmos campos diretamente no corpo. Use somente uma forma de cada alias."}},"additionalProperties":false},"MessageRequest_flow_exchange":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["flow.exchange"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["data_exchange"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["data_exchange"]}},"required":["numero","flow_id","flow_token"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}},"required":["messageData"],"additionalProperties":false},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal. Alias compatível de text."},"text":{"type":"string","minLength":1,"description":"Texto principal. Use texto ou text; valores conflitantes são rejeitados."},"titulo":{"type":"string","minLength":1,"description":"Título opcional. Alias compatível de title."},"title":{"type":"string","minLength":1,"description":"Título opcional. Use titulo ou title."},"footer":{"type":"string","minLength":1,"description":"Rodapé opcional."},"cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow. Alias compatível de flow_cta.","maxLength":30},"flow_cta":{"type":"string","minLength":1,"description":"Rótulo para abrir o Flow, com até 30 caracteres Unicode.","maxLength":30},"flow_id":{"type":"string","minLength":1,"description":"ID numérico do Flow publicado. Opcional quando flow_json é informado; nessa forma a lib gera uma identidade local estável, sem registrar o Flow na Meta.","pattern":"^[0-9]+$","maxLength":64},"flow_token":{"type":"string","minLength":1,"description":"Token de correlação da aplicação, devolvido na conclusão do Flow."},"flow_message_version":{"oneOf":[{"type":"string","enum":["3"]},{"type":"integer","enum":[3]}],"default":"3","description":"Versão de mensagem verificada: 3."},"mode":{"type":"string","minLength":1,"description":"Modo do Flow. Um Flow inline permanece uma definição local; informar published não o registra na Meta.","enum":["published","draft"]},"data_api_version":{"type":"string","minLength":1,"description":"Versão do endpoint de dados do Flow registrado. Único valor suportado: 3.0. Em data_exchange é aplicado automaticamente; navigate com endpoint pode informar este campo para solicitar a consulta e verificação dos metadados remotos. Não aceita Flow inline.","enum":["3.0"],"example":"3.0"},"action":{"type":"string","minLength":1,"description":"Ação do Flow. Alias compatível de flow_action.","enum":["data_exchange"]},"flow_action":{"type":"string","minLength":1,"description":"Ação do Flow. Deve concordar com action e com a rota.","enum":["data_exchange"]}},"required":["numero","flow_id","flow_token"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["cta"]},{"required":["flow_cta"]}]}]}],"description":"Aceita messageData ou os mesmos campos diretamente no corpo. Use somente uma forma de cada alias."}},"additionalProperties":false},"MessageRequest_buttons":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["buttons"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal."},"titulo":{"type":"string","description":"Título opcional."},"footer":{"type":"string","description":"Rodapé opcional."},"botoes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["quick_reply"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"id":{"type":"string","minLength":1,"description":"ID único do botão."}},"additionalProperties":false,"required":["type","texto","id"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_url"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["type","texto","url"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_call"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"phone_number":{"type":"string","minLength":1,"description":"Número discado pelo botão.","pattern":"^\\+?[0-9 ()-]{5,30}$"}},"additionalProperties":false,"required":["type","texto","phone_number"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_copy","cta_opt","cta_otp"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"copy_code":{"type":"string","minLength":1,"description":"Texto ou código copiado pelo botão."}},"additionalProperties":false,"required":["type","texto","copy_code"]}]},"minItems":1,"maxItems":10}},"additionalProperties":false,"required":["numero","texto","botoes"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto principal."},"titulo":{"type":"string","description":"Título opcional."},"footer":{"type":"string","description":"Rodapé opcional."},"botoes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["quick_reply"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"id":{"type":"string","minLength":1,"description":"ID único do botão."}},"additionalProperties":false,"required":["type","texto","id"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_url"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"url":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["type","texto","url"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_call"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"phone_number":{"type":"string","minLength":1,"description":"Número discado pelo botão.","pattern":"^\\+?[0-9 ()-]{5,30}$"}},"additionalProperties":false,"required":["type","texto","phone_number"]},{"type":"object","properties":{"type":{"type":"string","minLength":1,"enum":["cta_copy","cta_opt","cta_otp"]},"texto":{"type":"string","minLength":1,"description":"Rótulo exibido."},"copy_code":{"type":"string","minLength":1,"description":"Texto ou código copiado pelo botão."}},"additionalProperties":false,"required":["type","texto","copy_code"]}]},"minItems":1,"maxItems":10}},"additionalProperties":false,"required":["numero","texto","botoes"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."}},"additionalProperties":false},"MessageRequest_list":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["list"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"titulo":{"type":"string","description":"Título da lista."},"title":{"type":"string","description":"Alias de titulo."},"texto":{"type":"string","minLength":1,"description":"Texto principal."},"text":{"type":"string","minLength":1,"description":"Alias de texto."},"textoBotao":{"type":"string","minLength":1,"description":"Rótulo do botão que abre a lista."},"buttonText":{"type":"string","minLength":1,"description":"Alias de textoBotao."},"footer":{"type":"string","description":"Rodapé."},"secoes":{"type":"array","items":{"type":"object","properties":{"titulo":{"type":"string","description":"Título da seção."},"title":{"type":"string","description":"Alias de titulo."},"opcoes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100,"description":"Alias de opcoes."}},"additionalProperties":false,"anyOf":[{"required":["opcoes"]},{"required":["rows"]}]},"minItems":1,"maxItems":100},"sections":{"type":"array","items":{"type":"object","properties":{"titulo":{"type":"string","description":"Título da seção."},"title":{"type":"string","description":"Alias de titulo."},"opcoes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100,"description":"Alias de opcoes."}},"additionalProperties":false,"anyOf":[{"required":["opcoes"]},{"required":["rows"]}]},"minItems":1,"maxItems":100,"description":"Alias de secoes."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["textoBotao"]},{"required":["buttonText"]}]},{"anyOf":[{"required":["secoes"]},{"required":["sections"]}]}],"required":["numero"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"titulo":{"type":"string","description":"Título da lista."},"title":{"type":"string","description":"Alias de titulo."},"texto":{"type":"string","minLength":1,"description":"Texto principal."},"text":{"type":"string","minLength":1,"description":"Alias de texto."},"textoBotao":{"type":"string","minLength":1,"description":"Rótulo do botão que abre a lista."},"buttonText":{"type":"string","minLength":1,"description":"Alias de textoBotao."},"footer":{"type":"string","description":"Rodapé."},"secoes":{"type":"array","items":{"type":"object","properties":{"titulo":{"type":"string","description":"Título da seção."},"title":{"type":"string","description":"Alias de titulo."},"opcoes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100,"description":"Alias de opcoes."}},"additionalProperties":false,"anyOf":[{"required":["opcoes"]},{"required":["rows"]}]},"minItems":1,"maxItems":100},"sections":{"type":"array","items":{"type":"object","properties":{"titulo":{"type":"string","description":"Título da seção."},"title":{"type":"string","description":"Alias de titulo."},"opcoes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID único da opção."},"rowId":{"type":"string","minLength":1,"description":"Alias de id."},"titulo":{"type":"string","minLength":1,"description":"Título da opção."},"title":{"type":"string","minLength":1,"description":"Alias de titulo."},"texto":{"type":"string","description":"Descrição opcional."},"description":{"type":"string","description":"Alias de texto."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["id"]},{"required":["rowId"]}]},{"anyOf":[{"required":["titulo"]},{"required":["title"]}]}]},"minItems":1,"maxItems":100,"description":"Alias de opcoes."}},"additionalProperties":false,"anyOf":[{"required":["opcoes"]},{"required":["rows"]}]},"minItems":1,"maxItems":100,"description":"Alias de secoes."}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["texto"]},{"required":["text"]}]},{"anyOf":[{"required":["textoBotao"]},{"required":["buttonText"]}]},{"anyOf":[{"required":["secoes"]},{"required":["sections"]}]}],"required":["numero"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."}},"additionalProperties":false},"MessageRequest_charge":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["charge"]},"payload":{"anyOf":[{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"body":{"type":"object","properties":{"texto":{"type":"string","minLength":1,"description":"Texto da cobrança."},"footer":{"type":"string","description":"Rodapé."},"header":{"type":"object","properties":{"title":{"type":"string","description":"Título opcional da cobrança."},"hasMediaAttachment":{"type":"boolean","default":false},"type":{"type":"string","minLength":1,"enum":["image","video","document"]},"imageMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]}},"additionalProperties":false,"anyOf":[{"properties":{"hasMediaAttachment":{"type":"boolean","enum":[false]}}},{"required":["hasMediaAttachment","type","imageMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["image"]}}},{"required":["hasMediaAttachment","type","videoMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["video"]}}},{"required":["hasMediaAttachment","type","documentMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["document"]}}}]},"items":{"type":"array","items":{"type":"object","properties":{"retailer_id":{"type":"string","minLength":1,"description":"Referência do item na sua aplicação."},"name":{"type":"string","minLength":1,"description":"Nome do item."},"amount":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":100000000000,"description":"Valor inteiro em centavos (2990 = R$ 29,90)."},"offset":{"type":"integer","minimum":100,"maximum":100,"default":100}},"additionalProperties":false,"required":["value"]},"quantity":{"type":"integer","minimum":1,"maximum":1000000}},"additionalProperties":false,"required":["retailer_id","name","amount","quantity"]},"minItems":1,"maxItems":100},"pixEnabled":{"type":"boolean","default":false},"pixData":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Código PIX copia e cola completo."},"merchant_name":{"type":"string","minLength":1,"description":"Nome do recebedor."},"key":{"type":"string","minLength":1,"description":"Chave PIX do recebedor."},"key_type":{"type":"string","minLength":1,"enum":["CNPJ","CPF","EMAIL","PHONE","EVP"]}},"additionalProperties":false,"required":["code","merchant_name","key","key_type"]},"boletoEnabled":{"type":"boolean","default":false},"boletoData":{"type":"object","properties":{"digitable_line":{"type":"string","minLength":1,"description":"Linha digitável do boleto."}},"additionalProperties":false,"required":["digitable_line"]},"UrlEnabled":{"type":"boolean","default":false},"urlData":{"type":"object","properties":{"uri":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["uri"]}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"pixEnabled":{"type":"boolean","enum":[false]}}},{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"boletoEnabled":{"type":"boolean","enum":[false]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"UrlEnabled":{"type":"boolean","enum":[false]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]}],"required":["texto","items"]}},"additionalProperties":false,"required":["numero","body"]},{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto da cobrança."},"footer":{"type":"string","description":"Rodapé."},"header":{"type":"object","properties":{"title":{"type":"string","description":"Título opcional da cobrança."},"hasMediaAttachment":{"type":"boolean","default":false},"type":{"type":"string","minLength":1,"enum":["image","video","document"]},"imageMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]}},"additionalProperties":false,"anyOf":[{"properties":{"hasMediaAttachment":{"type":"boolean","enum":[false]}}},{"required":["hasMediaAttachment","type","imageMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["image"]}}},{"required":["hasMediaAttachment","type","videoMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["video"]}}},{"required":["hasMediaAttachment","type","documentMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["document"]}}}]},"items":{"type":"array","items":{"type":"object","properties":{"retailer_id":{"type":"string","minLength":1,"description":"Referência do item na sua aplicação."},"name":{"type":"string","minLength":1,"description":"Nome do item."},"amount":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":100000000000,"description":"Valor inteiro em centavos (2990 = R$ 29,90)."},"offset":{"type":"integer","minimum":100,"maximum":100,"default":100}},"additionalProperties":false,"required":["value"]},"quantity":{"type":"integer","minimum":1,"maximum":1000000}},"additionalProperties":false,"required":["retailer_id","name","amount","quantity"]},"minItems":1,"maxItems":100},"pixEnabled":{"type":"boolean","default":false},"pixData":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Código PIX copia e cola completo."},"merchant_name":{"type":"string","minLength":1,"description":"Nome do recebedor."},"key":{"type":"string","minLength":1,"description":"Chave PIX do recebedor."},"key_type":{"type":"string","minLength":1,"enum":["CNPJ","CPF","EMAIL","PHONE","EVP"]}},"additionalProperties":false,"required":["code","merchant_name","key","key_type"]},"boletoEnabled":{"type":"boolean","default":false},"boletoData":{"type":"object","properties":{"digitable_line":{"type":"string","minLength":1,"description":"Linha digitável do boleto."}},"additionalProperties":false,"required":["digitable_line"]},"UrlEnabled":{"type":"boolean","default":false},"urlData":{"type":"object","properties":{"uri":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["uri"]}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"pixEnabled":{"type":"boolean","enum":[false]}}},{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"boletoEnabled":{"type":"boolean","enum":[false]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"UrlEnabled":{"type":"boolean","enum":[false]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]}],"required":["numero","texto","items"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"texto":{"type":"string","minLength":1,"description":"Texto da cobrança."},"footer":{"type":"string","description":"Rodapé."},"header":{"type":"object","properties":{"title":{"type":"string","description":"Título opcional da cobrança."},"hasMediaAttachment":{"type":"boolean","default":false},"type":{"type":"string","minLength":1,"enum":["image","video","document"]},"imageMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"videoMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]},"documentMessage":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"URL HTTPS pública ou data URI MIME;base64. Não aceita caminhos locais.","example":"https://seu-cdn.example/imagem.png"},"base64":{"type":"string","minLength":1,"description":"Conteúdo binário em Base64 puro. Máximo decodificado de 32 MiB; usado em preferência a url.","format":"byte","maxLength":44739248},"title":{"type":"string","minLength":1,"description":"Nome do arquivo do cabeçalho, sem diretórios."}},"additionalProperties":false,"anyOf":[{"required":["url"]},{"required":["base64"]}]}},"additionalProperties":false,"anyOf":[{"properties":{"hasMediaAttachment":{"type":"boolean","enum":[false]}}},{"required":["hasMediaAttachment","type","imageMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["image"]}}},{"required":["hasMediaAttachment","type","videoMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["video"]}}},{"required":["hasMediaAttachment","type","documentMessage"],"properties":{"hasMediaAttachment":{"type":"boolean","enum":[true]},"type":{"type":"string","enum":["document"]}}}]},"items":{"type":"array","items":{"type":"object","properties":{"retailer_id":{"type":"string","minLength":1,"description":"Referência do item na sua aplicação."},"name":{"type":"string","minLength":1,"description":"Nome do item."},"amount":{"type":"object","properties":{"value":{"type":"integer","minimum":0,"maximum":100000000000,"description":"Valor inteiro em centavos (2990 = R$ 29,90)."},"offset":{"type":"integer","minimum":100,"maximum":100,"default":100}},"additionalProperties":false,"required":["value"]},"quantity":{"type":"integer","minimum":1,"maximum":1000000}},"additionalProperties":false,"required":["retailer_id","name","amount","quantity"]},"minItems":1,"maxItems":100},"pixEnabled":{"type":"boolean","default":false},"pixData":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Código PIX copia e cola completo."},"merchant_name":{"type":"string","minLength":1,"description":"Nome do recebedor."},"key":{"type":"string","minLength":1,"description":"Chave PIX do recebedor."},"key_type":{"type":"string","minLength":1,"enum":["CNPJ","CPF","EMAIL","PHONE","EVP"]}},"additionalProperties":false,"required":["code","merchant_name","key","key_type"]},"boletoEnabled":{"type":"boolean","default":false},"boletoData":{"type":"object","properties":{"digitable_line":{"type":"string","minLength":1,"description":"Linha digitável do boleto."}},"additionalProperties":false,"required":["digitable_line"]},"UrlEnabled":{"type":"boolean","default":false},"urlData":{"type":"object","properties":{"uri":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"required":["uri"]}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"pixEnabled":{"type":"boolean","enum":[false]}}},{"required":["pixEnabled","pixData"],"properties":{"pixEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"boletoEnabled":{"type":"boolean","enum":[false]}}},{"required":["boletoEnabled","boletoData"],"properties":{"boletoEnabled":{"type":"boolean","enum":[true]}}}]},{"anyOf":[{"properties":{"UrlEnabled":{"type":"boolean","enum":[false]}}},{"required":["UrlEnabled","urlData"],"properties":{"UrlEnabled":{"type":"boolean","enum":[true]}}}]}],"required":["numero","texto","items"]}]}},"additionalProperties":false},"MessageRequest_payment":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["payment"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Nota da solicitação."},"valor":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":100000000,"description":"Valor em reais (29.90 = R$ 29,90)."}},"additionalProperties":false,"required":["numero","text","valor"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"data":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Nota da solicitação."},"valor":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":100000000,"description":"Valor em reais (29.90 = R$ 29,90)."}},"additionalProperties":false,"required":["numero","text","valor"]}},"additionalProperties":false,"required":["data"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Nota da solicitação."},"valor":{"type":"number","exclusiveMinimum":true,"minimum":0,"maximum":100000000,"description":"Valor em reais (29.90 = R$ 29,90)."}},"additionalProperties":false,"required":["numero","text","valor"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo. Também aceita envelope data."}},"additionalProperties":false},"MessageRequest_event":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["event"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"evento":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Nome do evento."},"startDate":{"type":"integer","minimum":0,"description":"Início em Unix timestamp, segundos (não milissegundos)."},"endDate":{"type":"integer","minimum":0,"description":"Fim em Unix timestamp, segundos; deve ser >= startDate."},"description":{"type":"string","description":"Descrição."},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"degreesLatitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"degreesLongitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"name":{"type":"string"},"address":{"type":"string"}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["latitude"]},{"required":["degreesLatitude"]}]},{"anyOf":[{"required":["longitude"]},{"required":["degreesLongitude"]}]}]},"call":{"type":"string","minLength":1,"description":"Exige joinLink existente; a API não gera esse link.","enum":["audio","video"]},"joinLink":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"anyOf":[{"not":{"required":["call"]}},{"required":["call","joinLink"]}],"required":["name","startDate"]}},"additionalProperties":false,"required":["numero","evento"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"evento":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Nome do evento."},"startDate":{"type":"integer","minimum":0,"description":"Início em Unix timestamp, segundos (não milissegundos)."},"endDate":{"type":"integer","minimum":0,"description":"Fim em Unix timestamp, segundos; deve ser >= startDate."},"description":{"type":"string","description":"Descrição."},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"degreesLatitude":{"type":"number","minimum":-90,"maximum":90,"example":-23.5505},"degreesLongitude":{"type":"number","minimum":-180,"maximum":180,"example":-46.6333},"name":{"type":"string"},"address":{"type":"string"}},"additionalProperties":false,"allOf":[{"anyOf":[{"required":["latitude"]},{"required":["degreesLatitude"]}]},{"anyOf":[{"required":["longitude"]},{"required":["degreesLongitude"]}]}]},"call":{"type":"string","minLength":1,"description":"Exige joinLink existente; a API não gera esse link.","enum":["audio","video"]},"joinLink":{"type":"string","minLength":1,"description":"URL HTTPS pública, porta 443, sem fragmento ou credenciais. Redes privadas e redirecionamentos para elas são recusados.","format":"uri","pattern":"^https://","maxLength":8192}},"additionalProperties":false,"anyOf":[{"not":{"required":["call"]}},{"required":["call","joinLink"]}],"required":["name","startDate"]}},"additionalProperties":false,"required":["numero","evento"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."}},"additionalProperties":false},"MessageRequest_reaction":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["reaction"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"reacao":{"type":"string","description":"Emoji da reação. Use string vazia para remover a própria reação."},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"idMsg":{"type":"string","minLength":1,"description":"Alias de key.id."},"fromMe":{"type":"boolean","default":false,"description":"Autor da mensagem alvo, quando usar idMsg."},"participant":{"type":"string","minLength":1,"description":"JID do autor da mensagem em grupo, quando usar idMsg."}},"additionalProperties":false,"anyOf":[{"required":["key"]},{"required":["idMsg"]}],"required":["numero","reacao"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"reacao":{"type":"string","description":"Emoji da reação. Use string vazia para remover a própria reação."},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]},"idMsg":{"type":"string","minLength":1,"description":"Alias de key.id."},"fromMe":{"type":"boolean","default":false,"description":"Autor da mensagem alvo, quando usar idMsg."},"participant":{"type":"string","minLength":1,"description":"JID do autor da mensagem em grupo, quando usar idMsg."}},"additionalProperties":false,"anyOf":[{"required":["key"]},{"required":["idMsg"]}],"required":["numero","reacao"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."}},"additionalProperties":false},"MessageRequest_edit":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["edit"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Novo texto da mensagem."},"keyMsg":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","enum":[true],"description":"A edição exige mensagem enviada pela própria sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id","fromMe"]}},"additionalProperties":false,"required":["numero","text","keyMsg"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"text":{"type":"string","minLength":1,"description":"Novo texto da mensagem."},"keyMsg":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","enum":[true],"description":"A edição exige mensagem enviada pela própria sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id","fromMe"]}},"additionalProperties":false,"required":["numero","text","keyMsg"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo."}},"additionalProperties":false},"MessageRequest_delete":{"type":"object","required":["type","payload"],"properties":{"type":{"type":"string","enum":["delete"]},"payload":{"anyOf":[{"type":"object","properties":{"messageData":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]}},"additionalProperties":false,"required":["numero","key"]}},"additionalProperties":false,"required":["messageData"]},{"type":"object","properties":{"data":{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]}},"additionalProperties":false,"required":["numero","key"]}},"additionalProperties":false,"required":["data"]},{"type":"object","properties":{"numero":{"type":"string","minLength":1,"description":"Número com DDI/DDD, JID de conversa ou username do WhatsApp (maik.venancio ou @maik.venancio). Usernames são consultados na sessão antes do envio; se o contato exigir chave, use maik.venancio:1234.","example":"5511999999999"},"key":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"ID real da mensagem recebido em eventos/histórico.","example":"3EB0MVOEXEMPLO001"},"remoteJid":{"type":"string","minLength":1,"description":"Opcional; se informado deve corresponder a numero.","example":"5511999999999@s.whatsapp.net"},"fromMe":{"type":"boolean","default":false,"description":"true para mensagem enviada por esta sessão."},"participant":{"type":"string","minLength":1,"description":"JID do autor, principalmente em grupos.","example":"5511888888888@s.whatsapp.net"}},"additionalProperties":false,"required":["id"]}},"additionalProperties":false,"required":["numero","key"]}],"description":"Aceita o envelope messageData ou os mesmos campos diretamente no corpo. Também aceita envelope data."}},"additionalProperties":false}}},"x-mvo-instance-id":"cliente-01"}