API de gestion des entrées aux événements
Permet de garder les informations relatives aux entrées de tous les événements, et d'ainsi garder un historique sur les événements précédents
Appelle Kalon pour la synchronisation avec les événements existants
Appelle Bilhed pour l'import des billets relatifs à un événement
Une base de données PostgreSQL est utilisée pour stocker les informations relatives aux bureaux de délivrance des badges (les objets Desk
) et sur les événements (les objets Event
)
Le modèle de la base suit le schéma suivant :
La base de données documentaire Elasticsearch permet de faire des recherches sur les champs de documents que l'on définit
Elle sert à contenir les billets des personnes participant aux événements, et de les rechercher rapidement en fonction de leur nom, prénom et entreprise, ou de leur numéro ou code-barre de billet
Le modèle est composé d'un document "person", qui contient les champs relatifs à une personne, c'est-à-dire :
- l'id
- le code-barre
- le nom
- le prénom
- l'entreprise (champ nullable)
- le type de badge (Exposant, Staff, Sponsor, ...)
- le numéro de billet
- la date de validation du billet (Moment où la personne retire son badge à l'entrée de l'événement, champ mis à null si l'enregistrement n'est pas effectué)
- l'événement -> sous-document contenant :
- l'id de l'événement pour lequel le billet est utilisable
- la date de début de cet événement
La description des endpoints HTTP est trouvable dans un swagger
Cette API est aussi un message broker pour des topics WebsSocket :
/topic/checkin
: Le message contient l'id d'une personne à marquer comme validée à l'entrée, et les souscripteurs sont ensuite notifiés du changement/topic/remove
: Le message contient l'id de la personne à retirer, aucun traitement n'est effectué et les souscripteurs sont directement notifiés
Cette API est sécurisée grâce à Keycloak
L'exécution de requêtes HTTP demande à tout utilisateur d'être authentifié, et nécessite :
- le rôle
dorikell
pour effectuer des requêtesGET
ou des requêtesPOST
sur l'endpoint de recherche - le rôle
admin
pour effectuer des requêtesPOST
ouDELETE
sur tous les autres endpoints
Pour l'instant, l'interface WebSocket n'est pas encore sécurisée