Estúdio de campanhas
Crie uma roleta, raspadinha ou caixa surpresa. Demonstração local ou API própria, sem serviço de entrega de prêmios.
- Componente: Roleta / Raspadinha / Caixas surpresa
- Tema: Minimalismo costeiro / Doce pop / Fliperama retrô / Ouro noturno / Papel festivo / Esboço de jardim
Origem do resultado
Sorteios locais são demonstrações editáveis, não entregas seguras. Ofertas no código são públicas. Sem controle de estoque, identidade ou repetição.
Seu servidor controla autenticação, chances, estoque, elegibilidade e idempotência. Nunca insira chaves secretas. A prévia não chama a API.
Guia de integração da API
Este é um contrato de interface, não um serviço de sorteios da Elysia. Implemente POST /api/draw no servidor com os mesmos IDs de campanha e prêmios e informe o endpoint. Baixe e hospede os arquivos em HTTPS para testar sorteios reais; o editor apenas simula.
Requisição · POST application/json
O widget envia apenas version, campaignId e um requestId hexadecimal aleatório de 32 caracteres. Não envia cliente, probabilidades ou chave API. O servidor identifica o participante; requestId não é credencial de acesso.
{
"version": 1,
"campaignId": "summer-boutique",
"requestId": "0123456789abcdef0123456789abcdef"
}
Sucesso · 200 application/json
Retorne requestId sem alterações. prizeId deve existir na lista, inclusive para resultado sem prêmio. Opcionais: receiptId (≤200 caracteres), claim.code (≤300), claim.url (HTTPS, ≤2048). Omita campos não usados, sem null. Sem camada data/result; até 16 KiB. Falha não significa perder o sorteio.
{
"requestId": "0123456789abcdef0123456789abcdef",
"prizeId": "p1",
"receiptId": "draw_2026_001",
"claim": {
"code": "SAMPLE-ONLY",
"url": "https://shop.example/redeem"
}
}
IDs dos prêmios configurados:
p1: 10% de desconto
p2: Frete grátis
p3: Presente surpresa
p4: Fica para a próxima
Prefira hospedar o widget e /api/draw na mesma origem (protocolo, host e porta), com proxy reverso se necessário. Caminhos relativos usam a página do widget, não a loja externa. credentials: same-origin envia apenas cookies da mesma origem. Não há configuração de Authorization ou cabeçalhos personalizados. Outra origem exige CORS para o widget e OPTIONS para POST + Content-Type; não envia cookies entre origens. HTML estático não basta para sorteios autenticados; iframes também podem bloquear cookies de terceiros.
O servidor autentica, valida Origin/CSRF e elegibilidade, limita participações e frequência, usa suas próprias probabilidades e reserva estoque junto com o resultado em uma transação. Persista idempotência por participante + campaignId + requestId, retornando o mesmo resultado nas tentativas. Resgate e validade ficam no servidor. Dados do navegador não provam direito ao prêmio; nunca publique segredos.
Rejeite com status não 2xx adequado (ex.: 401/403/409/429/503). O widget mostra mensagem genérica, não o erro do servidor. Há timeout de 15 segundos; redirecionamentos, JSON inválido, requestId diferente, prêmios desconhecidos e links inseguros são rejeitados. Tentar novamente mantém o ID apenas nesta página; recarregar gera outro, então os limites devem persistir. Sem repetição automática ou prêmio local alternativo.
A prévia continua ativa com API ou hospedagem incompleta. Corrija os campos marcados para exportar; erros de prêmios ou estilo mantêm a última prévia válida.
Exportar e incorporar
HTML / CSS / JavaScript / JSON. Hospede os arquivos em seu site HTTPS e cole a URL. Esta ferramenta não publica nem hospeda campanhas.
Imagens opcionais são carregadas dos sites HTTPS no navegador. O editor não armazena imagens nem chaves API.
Setores iguais são apenas visuais; a demo usa as probabilidades indicadas. No modo API, o servidor decide.