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 especificos:
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.
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:
tables/activities/{pageSize}/{offset}
tables/activity/{id}
tables/auditors/{pageSize}/{offset}
tables/auditor/{id}
tables/candidates/{pageSize}/{offset}
tables/candidate/{id}
tables/commissioners/{pageSize}/{offset}
tables/commissioner/{id}
tables/elections/{pageSize}/{offset}
tables/election/{id}
tables/emails/{pageSize}/{offset}
tables/email/{id}
tables/emailshistory/{pageSize}/{offset}
tables/emailhistory/{id}
tables/ipaccesses/{pageSize}/{offset}
tables/ipaccess/{id}
tables/customizations
tables/customization/{id}
tables/votes/{pageSize}/{offset}
tables/vote/{id}
tables/uservoters/{pageSize}/{offset}
tables/uservoter/{id}
tables/useradmins/{pageSize}/{offset}
tables/useradmin/{id}
tables/parameters
tables/parameter/{id}
tables/electionemailtemplates/{pageSize}/{offset}
tables/electionemailtemplate/{id}
tables/jointelections/{pageSize}/{offset}
tables/jointelection/{id}
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:
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:
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:
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:
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:
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: