{"openapi":"3.1.0","info":{"title":"API premieAí","version":"1.0.0","description":"Automatize campanhas de premiação com as mesmas regras do painel: perfis, segregação de funções (quem envia a lista não aprova), alçada e ledger imutável. Valores sempre em centavos de real. Para testar sem dinheiro de verdade, use uma chave de teste (ppk_test_): a mesma URL atende o sandbox. Documentação: /desenvolvedores."},"servers":[{"url":"https://premieai.com.br"}],"security":[{"chave":[]}],"tags":[{"name":"Conta"},{"name":"Dinheiro"},{"name":"Campanhas"},{"name":"Ganhadores"},{"name":"Equipe"},{"name":"Eventos e webhooks"},{"name":"Sandbox"}],"paths":{"/api/v1/eu":{"get":{"operationId":"quem_sou_eu","summary":"Quem sou eu","description":"Mostra a pessoa conectada, o cofre (empresa e CNPJ), os perfis que esta conexão pode usar, o nível de acesso e as operações disponíveis. Comece por aqui.\n\nNível da chave: **Consultar**. Qualquer pessoa do cofre.","tags":["Conta"],"x-nivel":"leitura","x-perfis":[],"parameters":[],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/cofre":{"get":{"operationId":"ver_cofre","summary":"Ver o cofre","description":"Saldo do cofre: livre (pode ir para campanhas ou saque), em campanhas, reservado para ganhadores; condição comercial padrão da premieAí; saques em andamento.\n\nNível da chave: **Consultar**. Qualquer pessoa do cofre.","tags":["Conta"],"x-nivel":"leitura","x-perfis":[],"parameters":[],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/pendencias":{"get":{"operationId":"minhas_pendencias","summary":"Minhas pendências","description":"O que está esperando ação agora: o que esta pessoa pode resolver (com a operação a usar) e o que depende de outra pessoa ou da premieAí.\n\nNível da chave: **Consultar**. Qualquer pessoa do cofre.","tags":["Conta"],"x-nivel":"leitura","x-perfis":[],"parameters":[],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/extrato":{"get":{"operationId":"ver_extrato","summary":"Ver extrato","description":"Lançamentos do ledger imutável do cofre (mais recentes no fim), com a verificação da cadeia de hashes. Filtra por campanha se pedir.\n\nNível da chave: **Consultar**. Perfis: Administrador, Financeiro, Gestor de campanhas, Aprovador, Auditor.","tags":["Dinheiro"],"x-nivel":"leitura","x-perfis":["administrador","financeiro","gestor","aprovador","auditor"],"parameters":[{"name":"campanhaId","in":"query","required":false,"schema":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas","minLength":1,"maxLength":100},"description":"Id da campanha (ex.: cam_...), como em listar_campanhas"},{"name":"limite","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":50,"description":"Quantos lançamentos, dos mais recentes (padrão 50)"},"description":"Quantos lançamentos, dos mais recentes (padrão 50)"}],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/campanhas":{"get":{"operationId":"listar_campanhas","summary":"Listar campanhas","description":"Campanhas do cofre, da mais nova para a mais antiga, com situação, orçamento, pagos, reservado e o que está pendente.\n\nNível da chave: **Consultar**. Qualquer pessoa do cofre.","tags":["Campanhas"],"x-nivel":"leitura","x-perfis":[],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["rascunho","ativa","encerrada"],"description":"Filtra pela situação"},"description":"Filtra pela situação"}],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}},"post":{"operationId":"criar_campanha","summary":"Criar campanha","description":"Cria uma campanha com os ganhadores e a forma de pagar a premieAí (condição padrão do cliente ou pedido de negociação). O orçamento é a soma dos prêmios. Depois, o Financeiro aprova o orçamento (aprovar_orcamento) e outra pessoa aprova os ganhadores.\n\nNível da chave: **Operar campanhas**. Perfis: Gestor de campanhas.","tags":["Campanhas"],"x-nivel":"operar","x-perfis":["gestor"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nome":{"type":"string","description":"Nome da campanha (ex.: Black Friday 2026)","minLength":3,"maxLength":120},"motivo":{"type":"string","maxLength":500,"description":"Por que estes ganhadores estão sendo premiados"},"ganhadores":{"type":"array","items":{"type":"object","properties":{"nome":{"type":"string","description":"Nome completo","minLength":2,"maxLength":120},"cpf":{"type":"string","description":"CPF do ganhador, com ou sem pontuação. O Pix só sai para chave no CPF dele","minLength":11,"maxLength":14},"valorCentavos":{"type":"integer","description":"Prêmio em centavos (50000 = R$ 500,00)","exclusiveMinimum":0,"maximum":100000000},"contato":{"type":"string","maxLength":120,"description":"Celular com DDD (recebe o aviso no WhatsApp) ou e-mail"}},"required":["nome","cpf","valorCentavos"],"additionalProperties":false},"minItems":1,"maxItems":5000},"condicao":{"type":"object","properties":{"escolha":{"type":"string","enum":["padrao","negociar"],"description":"padrao: aceita a condição padrão do cliente. negociar: pede proposta à premieAí"},"participantes":{"type":"integer","exclusiveMinimum":0,"maximum":1000000,"description":"Quantas pessoas participam (para o mínimo da campanha)"},"mensagens":{"type":"integer","minimum":0,"maximum":100,"description":"Mensagens por participante"},"comentario":{"type":"string","maxLength":2000,"description":"Obrigatório para negociar: o que quer negociar"}},"required":["escolha"],"additionalProperties":false,"description":"Sem isso, aceita a condição padrão"},"mensagens":{"type":"object","properties":{"whatsapp":{"type":"string","maxLength":2000},"sms":{"type":"string","maxLength":2000},"emailAssunto":{"type":"string","maxLength":200},"emailTexto":{"type":"string","maxLength":5000}},"additionalProperties":false,"description":"Textos que os ganhadores recebem. Use {nome}, {valor}, {empresa}, {campanha} e {link} nos textos."}},"required":["nome","ganhadores"],"additionalProperties":false}}}},"responses":{"201":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/campanhas/{campanhaId}":{"get":{"operationId":"ver_campanha","summary":"Ver campanha","description":"Detalhe de uma campanha: situação, condição de pagamento da premieAí, ganhadores (CPF mascarado) com status do resgate, lista aguardando aprovação e extrato da campanha.\n\nNível da chave: **Consultar**. Qualquer pessoa do cofre.","tags":["Campanhas"],"x-nivel":"leitura","x-perfis":[],"parameters":[{"name":"campanhaId","in":"path","required":true,"schema":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas"}}],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/campanhas/{campanhaId}/condicao":{"post":{"operationId":"escolher_condicao","summary":"Escolher como pagar a premieAí","description":"Numa campanha em rascunho: aceita a condição padrão do cliente (taxa de gestão e por resultado) ou pede negociação à premieAí.\n\nNível da chave: **Operar campanhas**. Perfis: Gestor de campanhas, Aprovador, Financeiro.","tags":["Campanhas"],"x-nivel":"operar","x-perfis":["gestor","aprovador","financeiro"],"parameters":[{"name":"campanhaId","in":"path","required":true,"schema":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"escolha":{"type":"string","enum":["padrao","negociar"]},"comentario":{"type":"string","maxLength":2000,"description":"Obrigatório para negociar"},"participantes":{"type":"integer","exclusiveMinimum":0,"maximum":1000000},"mensagens":{"type":"integer","minimum":0,"maximum":100}},"required":["escolha"],"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/campanhas/{campanhaId}/proposta/resposta":{"post":{"operationId":"responder_proposta","summary":"Responder proposta da premieAí","description":"Aceita ou recusa a proposta comercial que a premieAí enviou para uma campanha em negociação.\n\nNível da chave: **Incluir dinheiro**. Perfis: Aprovador, Financeiro.","tags":["Campanhas"],"x-nivel":"dinheiro","x-perfis":["aprovador","financeiro"],"parameters":[{"name":"campanhaId","in":"path","required":true,"schema":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"aceitar":{"type":"boolean"},"motivo":{"type":"string","maxLength":1000,"description":"Por que recusa (ajuda a premieAí a refazer)"}},"required":["aceitar"],"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/campanhas/{campanhaId}/mensagens":{"patch":{"operationId":"editar_mensagens","summary":"Editar mensagens aos ganhadores","description":"Muda os textos que os ganhadores recebem (WhatsApp, SMS, e-mail). Só os campos enviados mudam. Use {nome}, {valor}, {empresa}, {campanha} e {link} nos textos.\n\nNível da chave: **Operar campanhas**. Perfis: Gestor de campanhas.","tags":["Campanhas"],"x-nivel":"operar","x-perfis":["gestor"],"parameters":[{"name":"campanhaId","in":"path","required":true,"schema":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"whatsapp":{"type":"string","maxLength":2000},"sms":{"type":"string","maxLength":2000},"emailAssunto":{"type":"string","maxLength":200},"emailTexto":{"type":"string","maxLength":5000}},"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/campanhas/{campanhaId}/avisos-whatsapp":{"post":{"operationId":"avisar_whatsapp","summary":"Avisar ganhadores pelo WhatsApp","description":"Manda o aviso de prêmio ou o lembrete de prazo pelo WhatsApp para os prêmios em aberto com celular. O mesmo aviso não sai duas vezes para a mesma pessoa (lembrete: um por dia).\n\nNível da chave: **Operar campanhas**. Perfis: Gestor de campanhas.","tags":["Campanhas"],"x-nivel":"operar","x-perfis":["gestor"],"parameters":[{"name":"campanhaId","in":"path","required":true,"schema":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tipo":{"type":"string","enum":["premio","lembrete"]},"participanteIds":{"type":"array","items":{"type":"string","maxLength":100},"maxItems":1000,"description":"Só estes ganhadores (padrão: todos com prêmio em aberto)"}},"required":["tipo"],"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/campanhas/{campanhaId}/encerrar":{"post":{"operationId":"encerrar_campanha","summary":"Encerrar campanha","description":"Encerra uma campanha ativa sem prêmios dentro do prazo de resgate nem lista pendente. A sobra volta para o saldo livre do cofre.\n\nNível da chave: **Operar campanhas**. Perfis: Gestor de campanhas, Financeiro.","tags":["Campanhas"],"x-nivel":"operar","x-perfis":["gestor","financeiro"],"parameters":[{"name":"campanhaId","in":"path","required":true,"schema":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/campanhas/{campanhaId}/ganhadores":{"post":{"operationId":"enviar_ganhadores","summary":"Enviar nova lista de ganhadores","description":"Envia uma nova lista de ganhadores para uma campanha ativa, dentro do orçamento disponível. A lista fica aguardando aprovação de outra pessoa (quem envia não aprova).\n\nNível da chave: **Operar campanhas**. Perfis: Gestor de campanhas.","tags":["Ganhadores"],"x-nivel":"operar","x-perfis":["gestor"],"parameters":[{"name":"campanhaId","in":"path","required":true,"schema":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ganhadores":{"type":"array","items":{"type":"object","properties":{"nome":{"type":"string","description":"Nome completo","minLength":2,"maxLength":120},"cpf":{"type":"string","description":"CPF do ganhador, com ou sem pontuação. O Pix só sai para chave no CPF dele","minLength":11,"maxLength":14},"valorCentavos":{"type":"integer","description":"Prêmio em centavos (50000 = R$ 500,00)","exclusiveMinimum":0,"maximum":100000000},"contato":{"type":"string","maxLength":120,"description":"Celular com DDD (recebe o aviso no WhatsApp) ou e-mail"}},"required":["nome","cpf","valorCentavos"],"additionalProperties":false},"minItems":1,"maxItems":5000}},"required":["ganhadores"],"additionalProperties":false}}}},"responses":{"201":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/campanhas/{campanhaId}/ganhadores/aprovar":{"post":{"operationId":"aprovar_ganhadores","summary":"Aprovar ganhadores","description":"Aprova a lista de ganhadores aguardando aprovação. Quem enviou a lista não aprova; acima da alçada são duas pessoas, uma do Financeiro. Na última aprovação os prêmios ficam reservados, os links de resgate nascem e o aviso sai pelo WhatsApp.\n\nNível da chave: **Incluir dinheiro**. Perfis: Aprovador, Financeiro.","tags":["Ganhadores"],"x-nivel":"dinheiro","x-perfis":["aprovador","financeiro"],"parameters":[{"name":"campanhaId","in":"path","required":true,"schema":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/campanhas/{campanhaId}/orcamento/aprovar":{"post":{"operationId":"aprovar_orcamento","summary":"Aprovar orçamento","description":"Separa o orçamento da campanha do saldo livre (pagando o serviço premieAí com o saldo, se estiver em aberto), ativa a campanha e envia a lista de ganhadores para aprovação.\n\nNível da chave: **Incluir dinheiro**. Perfis: Financeiro.","tags":["Dinheiro"],"x-nivel":"dinheiro","x-perfis":["financeiro"],"parameters":[{"name":"campanhaId","in":"path","required":true,"schema":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/campanhas/{campanhaId}/cobranca-servico":{"post":{"operationId":"pagar_servico_a_parte","summary":"Pagar o serviço premieAí à parte","description":"Gera a cobrança (Pix ou boleto) do serviço premieAí de uma campanha, para pagar sem usar o saldo do cofre.\n\nNível da chave: **Incluir dinheiro**. Perfis: Financeiro.","tags":["Dinheiro"],"x-nivel":"dinheiro","x-perfis":["financeiro"],"parameters":[{"name":"campanhaId","in":"path","required":true,"schema":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"201":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/depositos":{"post":{"operationId":"gerar_deposito","summary":"Gerar Pix de depósito","description":"Gera um Pix (copia e cola) para depositar no cofre. Com campanhaId, o valor é o que falta para a campanha mais o serviço premieAí, e a campanha ativa sozinha quando o Pix cai. Só o CNPJ do cofre pode pagar.\n\nNível da chave: **Incluir dinheiro**. Perfis: Financeiro.","tags":["Dinheiro"],"x-nivel":"dinheiro","x-perfis":["financeiro"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"valorCentavos":{"type":"integer","exclusiveMinimum":0,"maximum":100000000,"minimum":500,"description":"Valor do depósito avulso no cofre (mínimo 500)"},"campanhaId":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas","minLength":1,"maxLength":100}},"additionalProperties":false}}}},"responses":{"201":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/saques":{"post":{"operationId":"solicitar_saque","summary":"Solicitar saque","description":"Pede saque do saldo livre para a conta do mesmo CNPJ do cofre. Outra pessoa do Financeiro precisa aprovar (aprovar_saque).\n\nNível da chave: **Incluir dinheiro**. Perfis: Financeiro.","tags":["Dinheiro"],"x-nivel":"dinheiro","x-perfis":["financeiro"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"valorCentavos":{"type":"integer","exclusiveMinimum":0,"maximum":100000000}},"required":["valorCentavos"],"additionalProperties":false}}}},"responses":{"201":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/saques/{saqueId}/aprovar":{"post":{"operationId":"aprovar_saque","summary":"Aprovar saque","description":"Aprova um saque pedido por outra pessoa do Financeiro. O Pix sai na hora para a conta do CNPJ do cofre.\n\nNível da chave: **Incluir dinheiro**. Perfis: Financeiro.","tags":["Dinheiro"],"x-nivel":"dinheiro","x-perfis":["financeiro"],"parameters":[{"name":"saqueId","in":"path","required":true,"schema":{"type":"string","description":"Id do saque, como em ver_cofre ou minhas_pendencias"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/equipe":{"get":{"operationId":"ver_equipe","summary":"Ver equipe","description":"Pessoas do cofre e seus perfis (Administrador, Financeiro, Gestor de campanhas, Aprovador, Auditor).\n\nNível da chave: **Consultar**. Qualquer pessoa do cofre.","tags":["Equipe"],"x-nivel":"leitura","x-perfis":[],"parameters":[],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}},"post":{"operationId":"convidar_pessoa","summary":"Convidar pessoa ou mudar perfis","description":"Adiciona uma pessoa ao cofre ou troca os perfis dela. Perfis: administrador, financeiro, gestor, aprovador, auditor.\n\nNível da chave: **Incluir dinheiro**. Perfis: Administrador.","tags":["Equipe"],"x-nivel":"dinheiro","x-perfis":["administrador"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"nome":{"type":"string","minLength":2,"maxLength":120},"perfis":{"type":"array","items":{"type":"string","enum":["administrador","financeiro","gestor","aprovador","auditor"]},"minItems":1}},"required":["email","nome","perfis"],"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/eventos":{"get":{"operationId":"listar_eventos","summary":"Listar eventos","description":"Eventos do cofre em ordem, para quem prefere buscar em vez de receber webhooks. Passe depoisDe com o id do último evento que você já processou.\n\nNível da chave: **Consultar**. Perfis: Administrador, Financeiro, Gestor de campanhas, Aprovador, Auditor.","tags":["Eventos e webhooks"],"x-nivel":"leitura","x-perfis":["administrador","financeiro","gestor","aprovador","auditor"],"parameters":[{"name":"depoisDe","in":"query","required":false,"schema":{"type":"string","maxLength":60}},{"name":"tipo","in":"query","required":false,"schema":{"type":"string","maxLength":60}},{"name":"limite","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/webhooks":{"get":{"operationId":"listar_webhooks","summary":"Listar webhooks","description":"Endereços cadastrados para receber eventos, com a situação das entregas.\n\nNível da chave: **Consultar**. Perfis: Administrador, Financeiro, Gestor de campanhas, Aprovador, Auditor.","tags":["Eventos e webhooks"],"x-nivel":"leitura","x-perfis":["administrador","financeiro","gestor","aprovador","auditor"],"parameters":[],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}},"post":{"operationId":"criar_webhook","summary":"Cadastrar webhook","description":"Cadastra uma URL https para receber eventos assinados. Sem `eventos`, recebe todos. O segredo de assinatura (whsec_...) aparece só nesta resposta.\n\nNível da chave: **Operar campanhas**. Perfis: Administrador.","tags":["Eventos e webhooks"],"x-nivel":"operar","x-perfis":["administrador"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":500},"descricao":{"type":"string","maxLength":120},"eventos":{"type":"array","items":{"type":"string","enum":["campanha.criada","campanha.condicao_atualizada","campanha.ativada","campanha.encerrada","ganhadores.enviados","ganhadores.aprovados","premio.pago","premio.estornado","premio.expirado","deposito.recebido","saque.solicitado","saque.confirmado","saque.falhou"]},"maxItems":30}},"required":["url"],"additionalProperties":false}}}},"responses":{"201":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/webhooks/{webhookId}":{"delete":{"operationId":"remover_webhook","summary":"Remover webhook","description":"Para de enviar eventos para esta URL. Entregas pendentes são canceladas.\n\nNível da chave: **Operar campanhas**. Perfis: Administrador.","tags":["Eventos e webhooks"],"x-nivel":"operar","x-perfis":["administrador"],"parameters":[{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/webhooks/{webhookId}/testar":{"post":{"operationId":"testar_webhook","summary":"Testar webhook","description":"Envia um evento webhook.teste assinado e devolve o status HTTP que seu servidor respondeu.\n\nNível da chave: **Operar campanhas**. Perfis: Administrador.","tags":["Eventos e webhooks"],"x-nivel":"operar","x-perfis":["administrador"],"parameters":[{"name":"webhookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/sandbox/depositos":{"post":{"operationId":"sandbox_confirmar_deposito","summary":"Sandbox: o Pix de depósito caiu","description":"Simula o pagamento de um depósito. Com campanhaId, confirma o depósito gerado para a campanha (POST /depositos com campanhaId), e a campanha ativa sozinha se ele cobrir tudo. Sem campanhaId, credita valorCentavos no saldo livre. Dispara deposito.recebido.\n\nNível da chave: **Operar campanhas**. Só com chave de teste (ppk_test_).","tags":["Sandbox"],"x-nivel":"operar","x-perfis":[],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"campanhaId":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas","minLength":1,"maxLength":100},"pagamentoId":{"type":"string","description":"pagamentoId devolvido por POST /depositos (pay_sim_...). Sem ele, um novo é criado"},"valorCentavos":{"type":"integer","exclusiveMinimum":0,"maximum":100000000,"description":"Valor do depósito avulso"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/sandbox/aprovacoes":{"post":{"operationId":"sandbox_aprovar","summary":"Sandbox: outra pessoa aprova","description":"Pessoas fictícias do cofre de teste aprovam no seu lugar o que você não pode aprovar: a lista de ganhadores de uma campanha (uma ou duas aprovações, conforme a alçada) ou um saque que você pediu. Assim você testa o fluxo de dupla aprovação com uma chave só.\n\nNível da chave: **Operar campanhas**. Só com chave de teste (ppk_test_).","tags":["Sandbox"],"x-nivel":"operar","x-perfis":[],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"campanhaId":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas","minLength":1,"maxLength":100},"saqueId":{"type":"string","minLength":1,"maxLength":100}},"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/sandbox/resgates":{"post":{"operationId":"sandbox_resgatar","summary":"Sandbox: o ganhador resgata","description":"Simula o ganhador abrindo o link e pedindo o Pix na chave do próprio CPF. resultado escolhe o desfecho: pago (premio.pago na hora), falhou (o Pix volta e o prêmio continua em aberto) ou pendente (conclua depois com sandbox_concluir_pix). O link /r/teste_... também abre no navegador.\n\nNível da chave: **Operar campanhas**. Só com chave de teste (ppk_test_).","tags":["Sandbox"],"x-nivel":"operar","x-perfis":[],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"campanhaId":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas","minLength":1,"maxLength":100},"participanteId":{"type":"string","description":"participanteId do ganhador, como em ver_campanha","minLength":1,"maxLength":100},"resultado":{"type":"string","enum":["pago","falhou","pendente"],"default":"pago","description":"Desfecho do Pix simulado"}},"required":["campanhaId","participanteId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/sandbox/transferencias/{transferId}":{"post":{"operationId":"sandbox_concluir_pix","summary":"Sandbox: o banco conclui um Pix pendente","description":"Conclui um Pix que ficou pendente (resgate ou saque), como o aviso do banco: pago ou falhou.\n\nNível da chave: **Operar campanhas**. Só com chave de teste (ppk_test_).","tags":["Sandbox"],"x-nivel":"operar","x-perfis":[],"parameters":[{"name":"transferId","in":"path","required":true,"schema":{"type":"string","description":"transferId devolvido pelo resgate ou saque"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"resultado":{"type":"string","enum":["pago","falhou"]}},"required":["resultado"],"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/sandbox/vencimentos":{"post":{"operationId":"sandbox_vencer_prazo","summary":"Sandbox: o prazo de resgate vence","description":"Faz o prazo de resgate (90 dias) vencer agora para os prêmios em aberto da campanha, ou só para os participanteIds informados. O valor volta para o saldo livre e sai o evento premio.expirado.\n\nNível da chave: **Operar campanhas**. Só com chave de teste (ppk_test_).","tags":["Sandbox"],"x-nivel":"operar","x-perfis":[],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"campanhaId":{"type":"string","description":"Id da campanha (ex.: cam_...), como em listar_campanhas","minLength":1,"maxLength":100},"participanteIds":{"type":"array","items":{"type":"string","maxLength":100},"maxItems":1000}},"required":["campanhaId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/api/v1/sandbox/zerar":{"post":{"operationId":"sandbox_zerar","summary":"Sandbox: começar do zero","description":"Troca o seu cofre de teste por um novo, com R$ 10.000,00 de saldo e nenhuma campanha. Os webhooks cadastrados continuam.\n\nNível da chave: **Operar campanhas**. Só com chave de teste (ppk_test_).","tags":["Sandbox"],"x-nivel":"operar","x-perfis":[],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Valor único por operação (ex.: UUID). Repetir a mesma chave com o mesmo corpo devolve a mesma resposta por 24 horas, sem executar de novo."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Sucesso","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Entrada inválida ou Idempotency-Key ausente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave ausente, inválida, expirada ou revogada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Nível da chave ou perfil sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Mesma Idempotency-Key ainda em andamento","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Regra do negócio impediu (ex.: quem enviou a lista não aprova, saldo insuficiente)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}}},"webhooks":{"campanha.criada":{"post":{"summary":"campanha.criada","description":"Uma campanha foi criada (rascunho).\n\nAssinado no cabeçalho PremiaPay-Signature (t=<unix>,v1=<HMAC-SHA256 de \"t.corpo\" com o segredo whsec_>). Responda 2xx em até 10 segundos.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evento"}}}},"responses":{"200":{"description":"Recebido"}}}},"campanha.condicao_atualizada":{"post":{"summary":"campanha.condicao_atualizada","description":"Mudou a situação de como a campanha paga a premieAí (aceita, em negociação, proposta enviada, recusada).\n\nAssinado no cabeçalho PremiaPay-Signature (t=<unix>,v1=<HMAC-SHA256 de \"t.corpo\" com o segredo whsec_>). Responda 2xx em até 10 segundos.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evento"}}}},"responses":{"200":{"description":"Recebido"}}}},"campanha.ativada":{"post":{"summary":"campanha.ativada","description":"O Financeiro aprovou o orçamento e o dinheiro foi separado para a campanha.\n\nAssinado no cabeçalho PremiaPay-Signature (t=<unix>,v1=<HMAC-SHA256 de \"t.corpo\" com o segredo whsec_>). Responda 2xx em até 10 segundos.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evento"}}}},"responses":{"200":{"description":"Recebido"}}}},"campanha.encerrada":{"post":{"summary":"campanha.encerrada","description":"A campanha foi encerrada; a sobra voltou para o saldo livre.\n\nAssinado no cabeçalho PremiaPay-Signature (t=<unix>,v1=<HMAC-SHA256 de \"t.corpo\" com o segredo whsec_>). Responda 2xx em até 10 segundos.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evento"}}}},"responses":{"200":{"description":"Recebido"}}}},"ganhadores.enviados":{"post":{"summary":"ganhadores.enviados","description":"Uma lista de ganhadores foi enviada e aguarda aprovação.\n\nAssinado no cabeçalho PremiaPay-Signature (t=<unix>,v1=<HMAC-SHA256 de \"t.corpo\" com o segredo whsec_>). Responda 2xx em até 10 segundos.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evento"}}}},"responses":{"200":{"description":"Recebido"}}}},"ganhadores.aprovados":{"post":{"summary":"ganhadores.aprovados","description":"A lista foi aprovada; os prêmios estão reservados e os links de resgate existem.\n\nAssinado no cabeçalho PremiaPay-Signature (t=<unix>,v1=<HMAC-SHA256 de \"t.corpo\" com o segredo whsec_>). Responda 2xx em até 10 segundos.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evento"}}}},"responses":{"200":{"description":"Recebido"}}}},"premio.pago":{"post":{"summary":"premio.pago","description":"O Pix do prêmio foi confirmado pelo banco.\n\nAssinado no cabeçalho PremiaPay-Signature (t=<unix>,v1=<HMAC-SHA256 de \"t.corpo\" com o segredo whsec_>). Responda 2xx em até 10 segundos.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evento"}}}},"responses":{"200":{"description":"Recebido"}}}},"premio.estornado":{"post":{"summary":"premio.estornado","description":"O Pix do prêmio voltou; o prêmio está reservado de novo.\n\nAssinado no cabeçalho PremiaPay-Signature (t=<unix>,v1=<HMAC-SHA256 de \"t.corpo\" com o segredo whsec_>). Responda 2xx em até 10 segundos.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evento"}}}},"responses":{"200":{"description":"Recebido"}}}},"premio.expirado":{"post":{"summary":"premio.expirado","description":"O prazo de resgate acabou e o valor voltou para o saldo livre.\n\nAssinado no cabeçalho PremiaPay-Signature (t=<unix>,v1=<HMAC-SHA256 de \"t.corpo\" com o segredo whsec_>). Responda 2xx em até 10 segundos.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evento"}}}},"responses":{"200":{"description":"Recebido"}}}},"deposito.recebido":{"post":{"summary":"deposito.recebido","description":"Um depósito caiu no cofre.\n\nAssinado no cabeçalho PremiaPay-Signature (t=<unix>,v1=<HMAC-SHA256 de \"t.corpo\" com o segredo whsec_>). Responda 2xx em até 10 segundos.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evento"}}}},"responses":{"200":{"description":"Recebido"}}}},"saque.solicitado":{"post":{"summary":"saque.solicitado","description":"O Financeiro pediu um saque para a conta do CNPJ.\n\nAssinado no cabeçalho PremiaPay-Signature (t=<unix>,v1=<HMAC-SHA256 de \"t.corpo\" com o segredo whsec_>). Responda 2xx em até 10 segundos.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evento"}}}},"responses":{"200":{"description":"Recebido"}}}},"saque.confirmado":{"post":{"summary":"saque.confirmado","description":"O saque foi pago.\n\nAssinado no cabeçalho PremiaPay-Signature (t=<unix>,v1=<HMAC-SHA256 de \"t.corpo\" com o segredo whsec_>). Responda 2xx em até 10 segundos.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evento"}}}},"responses":{"200":{"description":"Recebido"}}}},"saque.falhou":{"post":{"summary":"saque.falhou","description":"O saque não foi concluído e o valor voltou para o saldo livre.\n\nAssinado no cabeçalho PremiaPay-Signature (t=<unix>,v1=<HMAC-SHA256 de \"t.corpo\" com o segredo whsec_>). Responda 2xx em até 10 segundos.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evento"}}}},"responses":{"200":{"description":"Recebido"}}}}},"components":{"securitySchemes":{"chave":{"type":"http","scheme":"bearer","description":"Chave de API (ppk_...) criada em Minha conta > Chaves de API. Chave de teste (ppk_test_...) roda no sandbox."}},"schemas":{"Erro":{"type":"object","required":["erro","requestId"],"properties":{"erro":{"type":"object","required":["codigo","mensagem"],"properties":{"codigo":{"type":"string"},"mensagem":{"type":"string","description":"Frase pronta para mostrar"}}},"requestId":{"type":"string"}}},"Evento":{"type":"object","required":["id","tipo","criadoEm","versao","cofreId","dados"],"properties":{"id":{"type":"string","description":"evt_... Use para descartar repetições"},"tipo":{"type":"string","enum":["campanha.criada","campanha.condicao_atualizada","campanha.ativada","campanha.encerrada","ganhadores.enviados","ganhadores.aprovados","premio.pago","premio.estornado","premio.expirado","deposito.recebido","saque.solicitado","saque.confirmado","saque.falhou","webhook.teste"]},"criadoEm":{"type":"string","format":"date-time"},"versao":{"type":"string","const":"2026-11-01"},"cofreId":{"type":"string"},"dados":{"type":"object"}}}}}}