Referência API
Iniciar compra de bilhetes
Valida bilhete, quantidade, comprador e proteção do navegador; devolve pagamento do servidor ou resultado gratuito.
https://api.sparkglim.net/api/public/tickets/purchaseModelo de acesso
- Modelo de acesso
- Acesso público com validação
- Disponibilidade documentada
- Implementado no código
Disponibilidade verificada no código, sem garantia de produção.
Abra o URL de pagamento devolvido. O SparkGlim Server controla preços, métodos, verificação e entrega; o regresso do navegador apenas navega.
Pedido
| Nome | Tipo | Validação |
|---|---|---|
campaign_idObrigatórioCampanha existente na conta e no âmbito mais limitado de qualquer credencial de campanha. | string | Validação: UUID. |
ticket_idObrigatórioTipo de bilhete escolhido da campanha indicada; o servidor verifica estado, capacidade e preço. | string | Validação: UUID. |
quantityObrigatórioNúmero de bilhetes; o servidor impõe inventário e limites por pessoa. | integer | Validação: 1–100. |
phone_numberObrigatórioTelefone do participante; métodos e regras podem exigir número internacional válido. | string | Validação: Telefone válido e não vazio. |
emailOpcionalEmail de contacto usado pelo fluxo configurado; por si só não concede acesso. | string | Validação: Endereço de e-mail. |
discount_codeOpcionalCódigo de desconto ou convite da campanha, revalidado antes da compra. | string | Validação: Valor sem espaços nas extremidades e não vazio. |
invite_codeOpcionalCódigo de desconto ou convite da campanha, revalidado antes da compra. | string | Validação: Valor sem espaços nas extremidades e não vazio. |
luggage_quantityOpcionalQuantidade de bagagem para evento que suporta essa opção configurada. | integer | Validação: >=0. |
attendee_informationOpcionalRespostas aos campos reais da campanha, valores exigidos e opções suportadas. | object | Validação: Valores de texto correspondentes aos campos configurados. |
payment_channelOpcionalPreferência opcional; só se usam métodos ativos para país de venda, moeda e comerciante reais. | enum | Validação: card | mobile_money | apple_pay | bank_transfer | crypto; disponibilidade controlada pelo servidor. |
network_codeOpcionalRede móvel configurada quando o método de pagamento a exige. | string | Validação: Rede configurada. |
is_appOpcionalContexto existente para escolher configuração Web ou App; sem permissões extra. | boolean | Validação: Contexto do cliente. |
web_abuse_contextObrigatórioDados existentes de proteção do navegador exigidos antes do pagamento público; não substituem autorização do servidor. | object | Validação: Objeto estrito; JSON de device_details <=12000 caracteres. |
web_abuse_context.device_idObrigatórioSinal existente de proteção do navegador aceite pelo esquema atual. | string | Validação: 12–160. |
web_abuse_context.device_fingerprintObrigatórioSinal existente de proteção do navegador aceite pelo esquema atual. | string | Validação: 12–160. |
web_abuse_context.browser_signatureOpcionalSinal existente de proteção do navegador aceite pelo esquema atual. | string|null | Validação: 12–160. |
web_abuse_context.hardware_signatureOpcionalSinal existente de proteção do navegador aceite pelo esquema atual. | string|null | Validação: 12–160. |
web_abuse_context.device_detailsOpcionalSinal existente de proteção do navegador aceite pelo esquema atual. | object | Validação: Objeto JSON. |
web_abuse_context.client_pattern_detectedOpcionalSinal existente de proteção do navegador aceite pelo esquema atual. | boolean | Validação: Proteção de dispositivo existente. |
client_attempt_idOpcionalIdentificador estável usado para recuperar uma tentativa e rejeitar repetições incompatíveis. | string | Validação: Identidade de operação normalizada e estável. |
return_pathOpcionalDestino relativo de regresso ao site atual verificado após pagamento central. | string | Validação: Caminho relativo da mesma origem; sem // nem barra invertida. |
Pedido
Os exemplos descrevem o contrato e não são executados. Use registos de teste autorizados; nunca cole segredos reais aqui.
POST /api/public/tickets/purchase HTTP/1.1
Host: api.sparkglim.net
Content-Type: application/json
{
"campaign_id": "11111111-1111-4111-8111-111111111111",
"ticket_id": "22222222-2222-4222-8222-222222222222",
"quantity": 1,
"phone_number": "+233200000000",
"web_abuse_context": {
"device_id": "<EXISTING_DEVICE_ID>",
"device_fingerprint": "<EXISTING_DEVICE_FINGERPRINT>"
},
"client_attempt_id": "example_stable_attempt_0001"
}Resposta
{
"success": true,
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"status": "pending"
}
}{
"success": false,
"error": "<ERROR_MESSAGE>"
}Validação, permissões, registos indisponíveis e falhas usam estado HTTP e erro do controlador.
Limites e novas tentativas
Limite padrão: 100 pedidos por IP em 60 segundos. Aplicam-se também controlos específicos.
Compatibilidade do código
As operações autorizadas exigem testes específicos da conta.
server/src/api/router.tsserver/src/api/routes/public.ts