Ir a la documentación
SparkGlimSparkGlim Desarrolladores
Buscar en toda la documentación

Prueba un tema en tu idioma o una ruta API exacta.

    Referencia API

    Iniciar voto público

    Valida campaña pública, candidato permitido, cantidad y protección antes del pago centralizado.

    POSThttps://api.sparkglim.net/api/public/vote

    Modelo 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

    NombreTipoValidación
    campaign_idObligatorio

    Campaña existente dentro de la cuenta y del alcance más limitado de la credencial.

    stringValidación: UUID.
    participant_idObligatorio

    Candidato elegido en esta campaña; el servidor verifica aprobación y reglas.

    stringValidación: UUID.
    vote_countObligatorio

    Número de votos para el candidato; el servidor determina el precio válido y registra votos completados.

    integerValidación: 1–100.
    phone_numberObligatorio

    Teléfono del participante; métodos y reglas pueden exigir número internacional válido.

    stringValidación: Valor no vacío.
    emailOpcional

    Correo de contacto usado por el flujo configurado; por sí solo no concede acceso.

    stringValidación: Correo electrónico.
    payment_channelOpcional

    Preferencia opcional; solo se usan métodos habilitados para país vendedor, moneda y comercio reales.

    enumValidación: Solo el método configurado.
    network_codeOpcional

    Red móvil configurada cuando el método de pago la requiere.

    stringValidación: Red configurada.
    is_appOpcional

    Contexto existente para elegir configuración web o app; sin permisos extra.

    booleanValidación: Contexto del cliente.
    web_abuse_contextObligatorio

    Datos existentes de protección del navegador requeridos antes del pago público; no sustituyen autorización del servidor.

    objectValidación: Objeto estricto; JSON de device_details <=12000 caracteres.
    web_abuse_context.device_idObligatorio

    Señal existente de protección del navegador admitida por esquema actual.

    stringValidación: 12–160.
    web_abuse_context.device_fingerprintObligatorio

    Señal existente de protección del navegador admitida por esquema actual.

    stringValidación: 12–160.
    web_abuse_context.browser_signatureOpcional

    Señal existente de protección del navegador admitida por esquema actual.

    string|nullValidación: 12–160.
    web_abuse_context.hardware_signatureOpcional

    Señal existente de protección del navegador admitida por esquema actual.

    string|nullValidación: 12–160.
    web_abuse_context.device_detailsOpcional

    Señal existente de protección del navegador admitida por esquema actual.

    objectValidación: Objeto JSON.
    web_abuse_context.client_pattern_detectedOpcional

    Señal existente de protección del navegador admitida por esquema actual.

    booleanValidación: Protección de dispositivo existente.
    client_attempt_idOpcional

    Identificador estable usado para recuperar un intento y rechazar reintentos incompatibles.

    stringValidación: Identidad de operación normalizada y estable.
    return_pathOpcional

    Destino relativo de retorno al sitio actual verificado tras el pago centralizado.

    stringValidació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
    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

    Respuesta correcta · HTTP 200
    json
    {
      "success": true,
      "data": {
        "id": "11111111-1111-4111-8111-111111111111",
        "status": "pending"
      }
    }
    Respuesta de error · HTTP 400
    json
    {
      "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.ts
    • server/src/api/routes/public.ts