Referencia API
Iniciar voto público
Valida campaña pública, candidato permitido, cantidad y protección antes del pago centralizado.
https://api.sparkglim.net/api/public/voteModelo de acceso
- Modelo de acceso
- Acceso público con validación
- Disponibilidad documentada
- Implementado en código
Disponibilidad verificada en el código, sin garantía de producción.
Abra la URL de pago devuelta. SparkGlim Server controla precios, métodos, verificación y entrega; el retorno del navegador solo navega.
Solicitud
| Nombre | Tipo | Validación |
|---|---|---|
campaign_idObligatorioCampaña existente dentro de la cuenta y del alcance más limitado de la credencial. | string | Validación: UUID. |
participant_idObligatorioCandidato elegido en esta campaña; el servidor verifica aprobación y reglas. | string | Validación: UUID. |
vote_countObligatorioNúmero de votos para el candidato; el servidor determina el precio válido y registra votos completados. | integer | Validación: 1–100. |
phone_numberObligatorioTeléfono del participante; métodos y reglas pueden exigir número internacional válido. | string | Validación: Valor no vacío. |
emailOpcionalCorreo de contacto usado por el flujo configurado; por sí solo no concede acceso. | string | Validación: Correo electrónico. |
payment_channelOpcionalPreferencia opcional; solo se usan métodos habilitados para país vendedor, moneda y comercio reales. | enum | Validación: Solo el método configurado. |
network_codeOpcionalRed móvil configurada cuando el método de pago la requiere. | string | Validación: Red configurada. |
is_appOpcionalContexto existente para elegir configuración web o app; sin permisos extra. | boolean | Validación: Contexto del cliente. |
web_abuse_contextObligatorioDatos existentes de protección del navegador requeridos antes del pago público; no sustituyen autorización del servidor. | object | Validación: Objeto estricto; JSON de device_details <=12000 caracteres. |
web_abuse_context.device_idObligatorioSeñal existente de protección del navegador admitida por esquema actual. | string | Validación: 12–160. |
web_abuse_context.device_fingerprintObligatorioSeñal existente de protección del navegador admitida por esquema actual. | string | Validación: 12–160. |
web_abuse_context.browser_signatureOpcionalSeñal existente de protección del navegador admitida por esquema actual. | string|null | Validación: 12–160. |
web_abuse_context.hardware_signatureOpcionalSeñal existente de protección del navegador admitida por esquema actual. | string|null | Validación: 12–160. |
web_abuse_context.device_detailsOpcionalSeñal existente de protección del navegador admitida por esquema actual. | object | Validación: Objeto JSON. |
web_abuse_context.client_pattern_detectedOpcionalSeñal existente de protección del navegador admitida por esquema actual. | boolean | Validación: Protección de dispositivo existente. |
client_attempt_idOpcionalIdentificador estable usado para recuperar un intento y rechazar reintentos incompatibles. | string | Validación: Identidad de operación normalizada y estable. |
return_pathOpcionalDestino relativo de retorno al sitio actual verificado tras el pago centralizado. | string | Validación: Ruta relativa del mismo origen; sin // ni barra inversa. |
Solicitud
Los ejemplos describen el contrato y no se ejecutan. Use registros de prueba autorizados; nunca pegue secretos reales aquí.
POST /api/public/vote HTTP/1.1
Host: api.sparkglim.net
Content-Type: application/json
{
"campaign_id": "11111111-1111-4111-8111-111111111111",
"participant_id": "33333333-3333-4333-8333-333333333333",
"vote_count": 1,
"phone_number": "+233200000000",
"web_abuse_context": {
"device_id": "<EXISTING_DEVICE_ID>",
"device_fingerprint": "<EXISTING_DEVICE_FINGERPRINT>"
},
"client_attempt_id": "example_stable_attempt_0001"
}Respuesta
{
"success": true,
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"status": "pending"
}
}{
"success": false,
"error": "<ERROR_MESSAGE>"
}Validación, permisos, registros no disponibles y fallos usan el estado HTTP y error del controlador.
Límites y reintentos
Límite predeterminado: 100 solicitudes por IP en 60 segundos. También se aplican controles específicos.
Compatibilidad del código
Las operaciones autorizadas requieren pruebas específicas de la cuenta.
server/src/api/router.tsserver/src/api/routes/public.ts