Servicios Disponibles en el Sistema de Elecciones

El Sistema de Elecciones cuenta con un set de servicios REST, desarrollados en el módulo elections-services disponible en el repositorio. Estos servicios quedan accesibles en la URL base http://<IP>:<puerto>/elections-ws.

Para usar los servicios son necesarias configuraciones de seguridad, consistentes en token de autenticación y filtrado IP:

El aplicativo cuenta con dos grupos de servicios. Por un lado se tienen los servicios de tablas, los cuales devuelven información de cada una de las tablas del aplicativo y la data de cada fila.

El otro grupo cuenta con servicios enfocados en las funcionalidades del sistema y brinda información mas

Servicios de tablas:

  1. activity
  2. auditor
  3. candidate
  4. commissioner
  5. elections
  6. email
  7. emailhistory
  8. ipaccess
  9. customization
  10. vote
  11. uservoter
  12. useradmin
  13. parameter
  14. electionemailtemplate
  15. jointelection

Servicios de especificos:

  1. Health Check
  2. Participaciones
  3. Elecciones
  4. Detalle de elecciones
  5. Organizaciones
  6. Correos

Configuración de Seguridad

Existen dos formas de autenticación para el módulo de servicios. Una de ellas es utilizar un servicio externo centralizado y otra es utilizar la autenticación local del sistema de elecciones.

Los parámetros WS_AUTH_METHOD, WS_LACNIC_AUTH_URL, WS_AUTH_TOKEN y WS_AUTHORIZED_IPS son los encargados de controlar y configrar la autenticación.

El parámetro WS_AUTH_METHOD nos permite indicar si se utilizará un servicio centralizado o no. Si el mismo toma el valor LACNIC, se utilizará la autenticación centralizada. En caso de tomar el valor APP, se tomará la autenticación local del propio sistema. Este último valor sirve cuando NO se tiene acceso a un sistema centralizado de autenticación y aún así se quiere controlar quienes tienen acceso a la información proporcionada por los servicios.

El parámetro WS_LACNIC_AUTH_URL contiene la URL donde se aloja el servicio de autenticación centralizada. En caso, se utilice una autenticación local el valor de este no es relevante.

En caso se define utilizar una autorización local, es cuando toman relevancia los parámetros WS_AUTH_TOKEN y WS_AUTHORIZED_IPS. En ellos es donde se parametriza el token a ser incluido en el cabezal del request y la lista direcciones IP autorizadas para utilizar los servicios respectivamente.

El funcionamiento de la autenticación es la siguiente, se obtiene el valor del campo Authorization del cabezal del request y se valida que coincida con el valor del parámetro WS_AUTH_TOKEN, en caso NO coincida se inválida el acceso al servicio.

En caso el valor del token de autorización coincida, se pasa a validar la dirección IP de origen. Para esto, se obtiene la IP del request y se valida que esté contenida en la lista de direcciones IP habilitadas la cual está contenida en el valor del parámetro WS_AUTHORIZED_IPS. En caso la dirección IP no esté en la lista tampoco autoriza el acceso.

En el caso en que se utilice el servicio centralizado de autenticación, el valor de estos parámetros es irrelevante ya que el token y la dirección IP serán autenticadas contra los valores estalecidos en el servicio central.

Para obtener un detalle de estos parámetros y donde se ingresan los mismos en el aplicativo referirse al siguiente documento.

Servicios de Tablas

Los servicios de tablas son los encargados de devolver la información de las tablas de la base de datos. Por cada tabla se definen dos servicios, un listado y un detalle.

El primer servicio, de listado, retorna un resumen de toda la tabla retornando el identificador de la misma y una descripción. El mismo toma como parámetro la página y cantidad de registros. El tamaño máximo de página se toma de lo parámetros del aplicativo "WS_MAX_PAGE_SIZE", en caso no se agreguen o se coloquen parámetros inválidos de paginación, el servicio retorna un mensaje indicando el formato correcto.

El segundo servicio, de detalle, toma el identificador de una fila y devuelve la información de todas las columnas, sin incluir información sensible.

La invocación de los servicios se realiza mediante GET al endpoint URL_BASE/elections-ws/tables/{ tabla }.

Las tablas inlcuidas son:

  • activity
    • Listado: tables/activities/{pageSize}/{offset}
    • Detalle: tables/activity/{id}
  • auditor
    • Listado: tables/auditors/{pageSize}/{offset}
    • Detalle: tables/auditor/{id}
  • candidate
    • Listado: tables/candidates/{pageSize}/{offset}
    • Detalle: tables/candidate/{id}
  • commissioner
    • Listado: tables/commissioners/{pageSize}/{offset}
    • Detalle: tables/commissioner/{id}
  • elections
    • Listado: tables/elections/{pageSize}/{offset}
    • Detalle: tables/election/{id}
  • email
    • Listado: tables/emails/{pageSize}/{offset}
    • Detalle: tables/email/{id}
  • emailhistory
    • Listado: tables/emailshistory/{pageSize}/{offset}
    • Detalle: tables/emailhistory/{id}
  • ipaccess
    • Listado: tables/ipaccesses/{pageSize}/{offset}
    • Detalle: tables/ipaccess/{id}
  • customization
    • Listado: tables/customizations
    • Detalle: tables/customization/{id}
  • vote
    • Listado: tables/votes/{pageSize}/{offset}
    • Detalle: tables/vote/{id}
  • uservoter
    • Listado: tables/uservoters/{pageSize}/{offset}
    • Detalle: tables/uservoter/{id}
  • useradmin
    • Listado: tables/useradmins/{pageSize}/{offset}
    • Detalle: tables/useradmin/{id}
  • parameter
    • Listado: tables/parameters
    • Detalle: tables/parameter/{id}
  • electionemailtemplate
    • Listado: tables/electionemailtemplates/{pageSize}/{offset}
    • Detalle: tables/electionemailtemplate/{id}
  • jointelection
    • Listado: tables/jointelections/{pageSize}/{offset}
    • Detalle: tables/jointelection/{id}

1. Health Check

El servicio HealthCheck se encarga de obtener diversos indicadores del funcionamiento del sistema. Se invoca con GET al endpoint URL_BASE/elections-ws/hc.

Incluye la siguiente información:

  • Intentos de envío de correo electrónico.
  • Cantidad diferente de IPs que tuvieron un intento fallido de ingreso.
  • Cantidad total de intentos fallidos de ingreso.
  • Cantidad total de correos generados.
  • Cantidad total de correos pendientes de enviar.
  • Cantidad total de correos enviados.

2. Participaciones

El servicio de Participaciones obtiene el detalle de integrantes de una organizaciónen el contexto de las elecciones del sistema (este dato se especifica, opcionalmente, para cada votante en el padrón de una elección). Recibe como parámetro el id de la organización a buscar. Se invoca con GET al endpoint URL_BASE/elections-ws/participations/{ org }.

La información que obtiene, para cada elección del sistema, es:

  • Si la organización buscada pertenece al padrón de la elección, se obtiene el nombre, mail, país, link de votación y si ya votó.
  • Fechas de inicio y fin de la elección.
  • Título de la elección en los tres idiomas.
  • Link de la elección en los tres idiomas
  • Organización buscada.
  • Categoría de la elección.

3. Elecciones

El servicio de elecciones devuelve información sobre todas las elecciones del sistema. Se invoca con GET al endpoint URL_BASE/elections-ws/elections.

La información que obtiene, para cada elección del sistema es:

  • Identificador de la elección.
  • Categoría de la elección.
  • Fechas de creación, inicio y fin.
  • Diferencia de tiempo con horario UTC.
  • Título de la elección en los tres idiomas.
  • Link de la elección en los tres idiomas
  • Descripción de la elección en los tres idiomas
  • Cantidad máxima de candidatos.
  • Información sobre el estado: si tiene padŕon seteado, candidatos, auditories, si esta habilitado el link de votación, el de resultados, el de auditoría y si se solicitó revisión.
  • Si los candidatos están ordenados aleatoriamente.
  • Remitente por defecto.
  • Token de resultado.
  • Si se marcó el check para copiar la información de español al resto de los idiomas.

4. Detalle de elecciones

El servicio de detalle de elecciones, en realidad, consta de dos servicios, en ambos se obtiene toda la información relacionada a una o varias elecciones. El primero recibe como parámetros el tamaño y número de paǵina (con la misma validación que los servicios de tablas) y retornara una colección con todas las elecciones del sistema, paginada. El segundo servicio recibe como parámetro el identificador de elección, con lo cual, retorna la información de esa elección.

La invocación se realiza mediante el método GET, a los endpoints URL_BASE/elections-ws/electionsDetail/{pageSize}/{offset} y URL_BASE/elections-ws/electionDetail/{id}.

La información que obtiene es:

  • Identificador de la elección.
  • Categoría de la elección.
  • Fechas de creación, inicio y fin.
  • Diferencia de tiempo con horario UTC.
  • Título de la elección en los tres idiomas.
  • Link de la elección en los tres idiomas
  • Descripción de la elección en los tres idiomas
  • Cantidad máxima de candidatos.
  • Información sobre el estado: si tiene padŕon seteado, candidatos, auditories, si esta habilitado el link de votación, el de resultados, el de auditoría y si se solicitó revisión.
  • Si los candidatos están ordenados aleatoriamente.
  • Remitente por defecto.
  • Si se marcó el check para copiar la información de español al resto de los idiomas.
  • Candidatos:
    • Identificador del candidato.
    • Nombre del candidato.
    • Biografía en los tres idiomas.
    • Imágen del candidato.
    • Link en los tres idiomas.
    • Orden del candidato.
    • Email del candidato.
  • Padrón:
    • Identificador del votante.
    • Nombre del votante.
    • Email del votante.
    • País del votante.
    • Organización del votante.
    • Lenguage del votante.
    • Cantidad de votos.
  • Auditores:
    • Identificador del auditor.
    • Nombre del auditor.
    • Email del auditor.
    • Si brinda conformidad.
    • Si esta habilitado.
  • Comisionados:
    • Identificador del comisionado.
    • Nombre del comisionado.
    • Email del comisionado.
    • Si brinda conformidad.
    • Si esta habilitado.

5. Organizaciones

El servicio de organizaciones es el responsable de obtener la informacion de votantes y elecciones donde ha participado una organización, enviada como parámetro.

Se invoca con GET al endpoint URL_BASE/elections-ws/electionsParticipationsByOrg/{org}/{pageSize}/{offset}.

La información que obtiene, para la organización, es colección donde cada elemento contiene:

  • Elección:
    • Identificador de la elección.
    • Categoría de la elección.
    • Fechas de creación, inicio y fin.
    • Diferencia de tiempo con horario UTC.
    • Título de la elección en los tres idiomas.
    • Link de la elección en los tres idiomas
    • Descripción de la elección en los tres idiomas
    • Cantidad máxima de candidatos.
    • Información sobre el estado: si tiene padŕon seteado, candidatos, auditories, si esta habilitado el link de votación, el de resultados, el de auditoría y si se solicitó revisión.
    • Si los candidatos están ordenados aleatoriamente.
    • Remitente por defecto.
    • Si se marcó el check para copiar la información de español al resto de los idiomas.
  • Votante:
    • Identificador del votante.
    • Nombre del votante.
    • Email del votante.
    • País del votante.
    • Organización del votante.
    • Lenguage del votante.
    • Cantidad de votos.
    • Identificador de la elección.

6. Correo Electrónico

El servicio de correo electrónico obtiene, para el correo electrónico enviado como paráemtro, todas las elecciones donde ha participado la persona y cual fue su rol, votante, candidato, comisionado o auditor.

Se invoca con GET al endpoint URL_BASE/elections-ws/electionsParticipationsByEmail/{email}/{pageSize}/{offset}.

La información que obtiene es una colección donde cada elemento contiene:

  • Identificador de la elección.
  • Fechas de creación, inicio y fin.
  • Título de la elección en los tres idiomas.
  • Rol de la persona en la elección: votante, candidato, auditor o comisionado.