Appearance
Gathering endpoints
Tous les endpoints sont accessibles avec l'URL de base https://api.blueorangegames.eu.
Les endpoints regroupé ici sont lié à la webapp du gathering Blue Orange, app.blueorange.events & admin.blueorange.events.
GET
/gathering/users
AUTH
Cette route nécessite une clé avec le role gathering-admin-database
Cette route permet de récupérer la liste de tous les utilisateurs inscris du gathering
Elle prend un paramètre optionnel :
- export => boolean qui défini si la réponse doit renvoyer un CSV formaté
axios.get(`https://api.blueorangegames.eu/gathering/users?export=${boolean}`)
GET
/gathering/user
AUTH
Cette route nécessite une clé avec le role gathering-database
Cette route permet de récupérer les données un utilisateur en fonction de son email ou de son ID
Elle prend l'un des deux paramètres d'URL suivant :
- id => ID de l'utilisateur dans la BDD
- email => email de l'utilisateur dans la BDD
axios.get(`https://api.blueorangegames.eu/gathering/user?email=${userEmail}`)
// OU
axios.get(`https://api.blueorangegames.eu/gathering/user?id=${userId}`)
POST
/gathering/register
AUTH
Cette route nécessite une clé avec le role gathering-database
Cette route permet de créer un nouvel utilisateur dans la BDD, ou d'en mettre à jour un si l'email est déjà associé à un utilisateur dans la BDD.
Les paramètres du body doivent être :
- name
- surname
- company
- service
- country
- livestreamPresence (bool)
INFO
Cette route envoie un email de confirmation à l'utilisateur si l'inscription c'est bien déroulé.
axios.post(`https://api.blueorangegames.eu/gathering/register`, {
email: 'elliot.thiebaut@tribuo.fr',
name: 'Elliot',
surname: 'THIEBAUT',
company: 'tribuo',
service: 'IT Department',
country: 'France',
livestreamPresence: true
})
PUT
/gathering/user/firstvisit/:userId
AUTH
Cette route nécessite une clé avec le role gathering-database
Cette route permet de modifier le statut firstVisit d'un untilisateur.
Elle prend en paramètres d'URL :
- status => boolean qui indique le nouveau statut à modifier
axios.put(`https://api.blueorangegames.eu/gathering/user/firstvisit/${userID}?status=${bool}`)
PUT
/gathering/user/video/:userId/:gameId
AUTH
Cette route nécessite une clé avec le role gathering-database
Cette route permet d'ajouter une vidéo à l'array viewedVideo de l'utilisateur en base.
Elle prend deux paramètres dans l'URL :
- userId => l'ID de l'utilisateur à qui il faut rajouter une vidéo
- gameId => l'ID du jeu à rajouter dans
viewedVideo
axios.put(`https://api.blueorangegames.eu/gathering/user/video/${userId}/${gameId}`)
DELETE
/gathering/user/video/:userId/:gameId
AUTH
Cette route nécessite une clé avec le role gathering-database
Cette route permet de supprimer une vidéo à l'array viewedVideo de l'utilisateur en base.
Elle prend deux paramètres dans l'URL :
- userId => l'ID de l'utilisateur à qui il faut rajouter une vidéo
- gameId => l'ID du jeu à rajouter dans
viewedVideo
axios.delete(`https://api.blueorangegames.eu/gathering/user/video/${userId}/${gameId}`)
DELETE
/gathering/user/:id
AUTH
Cette route nécessite une clé avec le role gathering-admin-database
Cette route permet de supprimer un utilisateur de la BDD.
INFO
La suppression d'un utilisateur est un soft delete, les informations sont toujours en base et l'utilisateur peut être réactivé manuellement en éditant la base.
Elle prend deux paramètres dans l'URL :
- id => l'ID de l'utilisateur
axios.delete(`https://api.blueorangegames.eu/gathering/user/${userId}`)
GET
/gathering/games
AUTH
Cette route nécessite une clé avec le role gathering-database
Cette route permet de récupérer la liste de tous les jeux enregistrés en base
axios.get(`https://api.blueorangegames.eu/gathering/games`)
GET
/gathering/game/:id
AUTH
Cette route nécessite une clé avec le role gathering-database
Cette route permet de récupérer un jeu en fonction de son id.
Elle prend un paramètre optionnel :
- export => boolean qui défini si la réponse doit renvoyer un CSV formaté
axios.get(`https://api.blueorangegames.eu/gathering/game/${gameId}`)
POST
/gathering/game
AUTH
Cette route nécessite une clé avec le role gathering-admin-database
Cette route permet de créer un nouveau jeu dans la BDD.
Les paramètres du body doivent être :
- designer (Array of Strings)
- illustrator (Array of Strings)
- videoStops (Array of Objects)
- timestamp (Int)
- questions (Array of Objects)
- question (String)
- answers (Array of Strings)
- name
- category
- description
- imgUrl (String qui amène à une image)
- videoUrl (String qui amène à une playlist HLS)
INFO
L'objet à envoyer est légèrement complexe et doit bien comporter toutes les informations, et au moins un élément dans chaque Array.
INFO
La videoUrl doit amener à une playlist HLS, sinon le player dans le front ne fonctionnera pas.
axios.post(`https://api.blueorangegames.eu/gathering/game`, {
name: 'Super jeux',
category: 'Party Games',
description: 'Lorem Ipsum dolor si emet. Lorem Ipsum dolor si emet. Lorem Ipsum dolor si emet.',
imgUrl: 'https://cdn.blueorangegame.eu/gathering/superjeux.png',
videoUrl: 'https://cdn.blueorangegame.eu/video/superjeux/playlist.m3u8',
country: 'France',
designer: ['Elliot', 'Hervine'],
illustrator: ['Hervine'],
videoStops: [
{
timestamp: 256,
questions: [
{
question: 'Is this a good game ?',
answers: ['Yes', 'No', 'Maybe']
}
]
}
]
})
PUT
/gathering/game/:id
AUTH
Cette route nécessite une clé avec le role gathering-admin-database
Cette route permet de modifier un jeu dans la BDD. Elle est très semblable et respecte les mêmes conditions que la route pour créer un jeu.
Les paramètres du body doivent contenir au moins l'un des paramètres suivants :
- designer (Array of Strings)
- illustrator (Array of Strings)
- videoStops (Array of Objects)
- timestamp (Int)
- questions (Array of Objects)
- question (String)
- answers (Array of Strings)
- name
- category
- description
- imgUrl (String qui amène à une image)
- videoUrl (String qui amène à une playlist HLS)
MODIFIER videoStops
Si jamais on veut modifier l'array videoStops, il faut renvoyer tout l'objet videoStops et pas que la question à modifier.
axios.put(`https://api.blueorangegames.eu/gathering/game/${gameId}`, {
category: 'Party Games',
videoStops: [
{
timestamp: 256,
questions: [
{
question: 'Is this a good game ?',
answers: ['Yes', 'No', 'Maybe']
}
]
}
]
})
POST
/gathering/cover/:gameId
AUTH
Cette route nécessite une clé avec le role gathering-admin-database
Cette route permet d'ajouter une nouvelle image pour le jeu en envoyant directement le fichier image en multipart/form-data. Cela met également à jour le lien dans imgUrl dans la BDD jeux.
DANGER
Cette route upload le fichier envoyé sur le CDN, cela peut engendrer des couts important si mal utilisé.
Le type de formulaire doit être multipart/form-data, et dans le body il faut avoir un paramètre cover avec le fichier.
INFO
La taille maximum d'une image envoyé est de 5MB.
let coverFormData = new FormData();
coverFormData.append('cover', file)
axios.post(`https://api.blueorangegames.eu/gathering/cover/${gameId}`, coverFormData,{
headers: {
'Authorization': `KEY ${key}`,
'Content-Type': 'multipart/form-data'
}
})
POST
/gathering/video/:gameId
AUTH
Cette route nécessite une clé avec le role gathering-admin-database
Cette route permet d'ajouter une nouvelle vidéo pour le jeu en envoyant directement le fichier vidéo en multipart/form-data. Cela met également à jour le lien dans videoUrl dans la BDD jeux. La vidéo sera ensuite envoyée vers le CDN, puis transcodé en différents formats pour construire la playlist HLS.
DANGER
Cette route upload le fichier envoyé sur le CDN et engendre le transcodage du fichier vidéo, cela peut engendrer des couts important si mal utilisé.
Le type de formulaire doit être multipart/form-data, et dans le body il faut avoir un paramètre video avec le fichier.
INFO
La taille maximum d'une image envoyé est de 1GB.
let videoFormData = new FormData();
videoFormData.append('video', file)
axios.post(`https://api.blueorangegames.eu/gathering/video/${gameId}`, videoFormData,{
headers: {
'Authorization': `KEY ${key}`,
'Content-Type': 'multipart/form-data'
}
})
DELETE
/gathering/game/:id
AUTH
Cette route nécessite une clé avec le role gathering-admin-database
Cette route permet de supprimer un jeu de la BDD.
INFO
La suppression d'un jeu est un soft delete, les informations sont toujours en base et le jeu peut être réactivé manuellement en éditant la base.
Elle prend deux paramètres dans l'URL :
- id => l'ID du jeu
axios.delete(`https://api.blueorangegames.eu/gathering/answers`)
GET
/gathering/answers
AUTH
Cette route nécessite une clé avec le role gathering-admin-database
Cette route permet de récupérer la liste de toutes les réponses en base.
Elle prend un paramètre optionnel :
- export => boolean qui défini si la réponse doit renvoyer un CSV formaté
axios.get(`https://api.blueorangegames.eu/gathering/answers?export=${boolean}`)
POST
/gathering/answer/:userId/:gameId
AUTH
Cette route nécessite une clé avec le role gathering-database
Cette route permet d'ajouter une nouvelle réponse à un jeu en base. Si la combinaison gameId / userId existe déjà et donc qu'il y a déjà eu une réponse de cet utilisateur pour ce jeu, les nouvelles réponses seront ajoutées aux anciennes / écrasé s'il y a deux réponses à la même question.
axios.post(`https://api.blueorangegames.eu/gathering/answer/${userId}/${gameId}`, [
{
'question': 'Is this game good ?',
'answer': 'Yes'
},
{
'question': 'Is this game fun ?',
'answer': 'Maybe'
}
])