v1.0.0 OpenAPI 3.1.0
MeetAgain API
Accès programmatique aux événements publics, aux actions liées aux membres (participation, commentaire, envoi d'image) et aux lectures réservées aux administrateurs. Un jeton d'accès personnel (PAT) est requis pour les points d'accès non publics.
Authentification
Personal access token
Authentifie-toi auprès de l'API avec un Personal Access Token - un jeton bearer longue durée lié à ton compte.
Pour tes propres CLIs, scripts ou tâches ops. Génère un jeton bearer longue durée sur ta page de jetons d'accès et révoque-le à tout moment depuis la même page.
En-tête :
Authorization: Bearer mapat_...
Agit comme : toi (l'émetteur du jeton)
admin
Actions d'administration de la plateforme via l'API. Réservées aux utilisateurs disposant de ROLE_ADMIN.
GET /api/v1/admin/logs/cron Lister les entrées récentes du journal des tâches
Lister les entrées récentes du journal des tâches
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
limit
|
query |
integer
|
par défaut: 100
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Liste paginée du journal des tâches planifiées | CronLogList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle insuffisant |
Exemple de requête
curl '/api/v1/admin/logs/cron?limit=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/seo/status État SEO avec les écarts depuis la dernière collecte
État SEO avec les écarts depuis la dernière collecte
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
property
|
query |
integer
|
Identifiant de propriété ; par défaut la première activée |
Réponses
| Code | Description | |
|---|---|---|
200 |
État actuel condensé | SeoStatus |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle ou portée insuffisants | |
404 |
Aucune propriété surveillée |
Exemple de requête
curl '/api/v1/admin/seo/status?property=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/seo/issues Lister les problèmes SEO détectés
Lister les problèmes SEO détectés
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
property
|
query |
integer
|
|
filter
|
query |
string
|
par défaut: open
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Liste des problèmes | SeoIssueList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle ou portée insuffisants | |
404 |
Aucune propriété surveillée |
Exemple de requête
curl '/api/v1/admin/seo/issues?property=1&filter=value' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/seo/actions Lister les actions SEO récemment consignées
Lister les actions SEO récemment consignées
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
limit
|
query |
integer
|
par défaut: 100
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Liste des actions | SeoActionList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle ou portée insuffisants |
Exemple de requête
curl '/api/v1/admin/seo/actions?limit=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/admin/seo/actions Consigner une action SEO pour l'attribuer plus tard
Consigner une action SEO pour l'attribuer plus tard
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
kind |
string
|
|
title |
string
|
|
detail |
string | null
|
|
git_sha |
string | null
|
|
issue_id |
integer | null
|
|
occurred_at |
string | null
(date-time)
|
Réponses
| Code | Description | |
|---|---|---|
201 |
L'action enregistrée | SeoAction |
400 |
Corps de requête mal formé | |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle ou portée insuffisants | |
422 |
Type d'action inconnu ou horodatage illisible |
Exemple de requête
curl -X POST '/api/v1/admin/seo/actions' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"kind":"value","title":"value","detail":"value","git_sha":"value","issue_id":"value","occurred_at":"value"}'
GET /api/v1/admin/logs/sendlog Lister les entrées du journal d'envoi des e-mails
Lister les entrées du journal d'envoi des e-mails
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
limit
|
query |
integer
|
par défaut: 100
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Liste paginée du journal d'envoi | SendlogList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle insuffisant |
Exemple de requête
curl '/api/v1/admin/logs/sendlog?limit=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/logs/cron/{id} Obtenir une entrée du journal des tâches planifiées
Obtenir une entrée du journal des tâches planifiées
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Détail de l'entrée du journal des tâches planifiées | CronLogDetail |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle insuffisant | |
404 |
Entrée du journal des tâches planifiées introuvable |
Exemple de requête
curl '/api/v1/admin/logs/cron/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
PUT /api/v1/admin/images/{id}/alt Enregistrer le texte alternatif d'une image par langue
Enregistrer le texte alternatif d'une image par langue
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
alt |
object
|
Langue => texte alternatif ; une chaîne vide supprime la valeur |
Réponses
| Code | Description | |
|---|---|---|
200 |
Élément actualisé avec les langues requises et manquantes recalculées | MissingAltImageItem |
400 |
Corps de requête mal formé | |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle ou portée insuffisants | |
404 |
Image introuvable | |
422 |
Une langue hors de l'ensemble requis pour cette image |
Exemple de requête
curl -X PUT '/api/v1/admin/images/1/alt' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"alt":"value"}'
GET /api/v1/admin/logs/sendlog/{id} Obtenir une entrée du journal d'envoi
Obtenir une entrée du journal d'envoi
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Détail de l'entrée du journal d'envoi | SendlogDetail |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle insuffisant | |
404 |
Entrée du journal d'envoi introuvable |
Exemple de requête
curl '/api/v1/admin/logs/sendlog/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/images/missing-alt Lister les images sans texte alternatif par langue (keyset)
Lister les images sans texte alternatif par langue (keyset)
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
after_id
|
query |
integer
|
Curseur keyset : ne parcourir que les images dont l'identifiant est supérieur |
limit
|
query |
integer
|
Candidats parcourus par page (les résultats peuvent être moins nombreux)
par défaut: 50
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Page des images auxquelles il manque encore le texte alternatif dans au moins une langue requise | MissingAltImageList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle ou portée insuffisants |
Exemple de requête
curl '/api/v1/admin/images/missing-alt?after_id=1&limit=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/security/incidents Lister les incidents de sécurité récents
Lister les incidents de sécurité récents
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
limit
|
query |
integer
|
par défaut: 100
|
since
|
query |
string
(date-time)
|
Horodatage ISO-8601 servant de borne inférieure sur endedAt |
Réponses
| Code | Description | |
|---|---|---|
200 |
Liste des incidents | IncidentList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle insuffisant |
Exemple de requête
curl '/api/v1/admin/security/incidents?limit=1&since=value' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/images/{id}/content Diffuser un aperçu réduit de l'image d'origine
Diffuser un aperçu réduit de l'image d'origine
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Octets de l'aperçu (généralement image/webp ; le type de média d'origine si la conversion échoue) | |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle ou portée insuffisants | |
404 |
Image ou fichier d'origine introuvable |
Exemple de requête
curl '/api/v1/admin/images/1/content' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/security/incidents/{id} Obtenir un incident de sécurité et ses rapports
Obtenir un incident de sécurité et ses rapports
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Détail de l'incident | IncidentDetail |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle insuffisant | |
404 |
Incident introuvable |
Exemple de requête
curl '/api/v1/admin/security/incidents/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
event-actions
Actions des utilisateurs authentifiés sur les événements : participation, commentaires, envoi d'image
POST /api/v1/events/{id}/rsvp Confirmer sa participation à un événement
Confirmer sa participation à un événement
Réponses
| Code | Description | |
|---|---|---|
200 |
Participation enregistrée (ou déjà présente) | RsvpResult |
401 |
Jeton bearer manquant ou invalide | |
403 |
Non autorisé (appartenance au groupe / compte bloqué) | |
404 |
Événement introuvable | ErrorResponse |
409 |
Événement annulé ou déjà commencé | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/events/{id}/rsvp' \
-H "Authorization: Bearer $ACCESS_TOKEN"
DELETE /api/v1/events/{id}/rsvp Retirer sa participation à un événement
Retirer sa participation à un événement
Réponses
| Code | Description | |
|---|---|---|
200 |
Participation retirée (ou déjà absente) | RsvpResult |
401 |
Jeton bearer manquant ou invalide | |
403 |
Non autorisé | |
404 |
Événement introuvable | ErrorResponse |
409 |
Événement annulé ou déjà commencé | ErrorResponse |
Exemple de requête
curl -X DELETE '/api/v1/events/{id}/rsvp' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/events/{id}/images Envoyer une image vers un événement
Envoyer une image vers un événement
Corps de la requête
requis
Type de contenu: multipart/form-data
| Nom | Type | Description |
|---|---|---|
file |
string
(binary)
|
Réponses
| Code | Description | |
|---|---|---|
201 |
Image envoyée | ImageUploaded |
400 |
Aucun fichier ou format non pris en charge | ErrorResponse |
401 |
Jeton bearer manquant ou invalide | |
403 |
Non autorisé | |
404 |
Événement introuvable |
Exemple de requête
curl -X POST '/api/v1/events/{id}/images' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-F "file=@/path/to/file"
POST /api/v1/events/{id}/comments Publier un commentaire sur un événement
Publier un commentaire sur un événement
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
content |
string
|
Réponses
| Code | Description | |
|---|---|---|
201 |
Commentaire créé | CommentCreated |
400 |
Contenu vide ou trop long | ErrorResponse |
401 |
Jeton bearer manquant ou invalide | |
403 |
Non autorisé | |
404 |
Événement introuvable |
Exemple de requête
curl -X POST '/api/v1/events/{id}/comments' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"content":"value"}'
DELETE /api/v1/events/{id}/images/{imageId} Supprimer une image d'événement (la sienne ou admin)
Supprimer une image d'événement (la sienne ou admin)
Réponses
| Code | Description | |
|---|---|---|
204 |
Image supprimée | |
401 |
Jeton bearer manquant ou invalide | |
403 |
Cette image n'est pas la vôtre et vous n'êtes pas administrateur | |
404 |
Image ou événement introuvable |
Exemple de requête
curl -X DELETE '/api/v1/events/{id}/images/{imageId}' \
-H "Authorization: Bearer $ACCESS_TOKEN"
DELETE /api/v1/events/{id}/comments/{commentId} Supprimer un commentaire (le sien ou admin)
Supprimer un commentaire (le sien ou admin)
Réponses
| Code | Description | |
|---|---|---|
204 |
Commentaire supprimé | |
401 |
Jeton bearer manquant ou invalide | |
403 |
Ce commentaire n'est pas le vôtre et vous n'êtes pas administrateur | |
404 |
Commentaire ou événement introuvable |
Exemple de requête
curl -X DELETE '/api/v1/events/{id}/comments/{commentId}' \
-H "Authorization: Bearer $ACCESS_TOKEN"
events
Listes et détails des événements publics
GET /api/v1/events Lister les événements publics à venir
Lister les événements publics à venir
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
locale
|
query |
string
|
|
from
|
query |
string
(date-time)
|
Borne inférieure ISO-8601 (par défaut : maintenant) |
to
|
query |
string
(date-time)
|
Borne supérieure ISO-8601 |
limit
|
query |
integer
|
par défaut: 20
|
offset
|
query |
integer
|
par défaut: 0
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Liste paginée des événements | EventList |
Exemple de requête
curl '/api/v1/events?locale=en&from=value&to=value&limit=1&offset=1'
GET /api/v1/events/{id} Obtenir un événement par son identifiant
Obtenir un événement par son identifiant
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
|
locale
|
query |
string
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Détail de l'événement | EventDetail |
404 |
Événement introuvable ou non visible dans le contexte actuel | ErrorResponse |
Exemple de requête
curl '/api/v1/events/1?locale=value'
group-admin
Actions d'administration limitées à un groupe. Exigent le rôle Propriétaire ou Organisateur dans le groupe concerné, ou ROLE_ADMIN sur la plateforme.
GET /api/v1/groups/{groupSlug}/admin/members Lister les membres d'un groupe
Lister les membres d'un groupe
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
groupSlug
*
|
path |
string
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Liste des membres | GroupMemberList |
401 |
Jeton bearer manquant ou invalide | |
403 |
L'appelant n'est ni propriétaire ni organisateur de ce groupe | |
404 |
Groupe introuvable | ErrorResponse |
Exemple de requête
curl '/api/v1/groups/groupSlug/admin/members' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/groups/{groupSlug}/admin/settings Lire les paramètres d'un groupe
Lire les paramètres d'un groupe
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
groupSlug
*
|
path |
string
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Paramètres du groupe | GroupSettings |
401 |
Jeton bearer manquant ou invalide | |
403 |
L'appelant n'est ni propriétaire ni organisateur de ce groupe | |
404 |
Groupe introuvable | ErrorResponse |
Exemple de requête
curl '/api/v1/groups/weiqi-club/admin/settings' \
-H "Authorization: Bearer $ACCESS_TOKEN"
groups
Groupes clients (multisite)
GET /api/v1/groups Lister les groupes actifs
Lister les groupes actifs
Réponses
| Code | Description | |
|---|---|---|
200 |
Tableau de résumés de groupes | GroupList |
Exemple de requête
curl '/api/v1/groups'
GET /api/v1/groups/{groupSlug} Obtenir un groupe par son slug
Obtenir un groupe par son slug
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
groupSlug
*
|
path |
string
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Détail du groupe | GroupDetail |
404 |
Groupe introuvable | ErrorResponse |
Exemple de requête
curl '/api/v1/groups/groupSlug'
GET /api/v1/groups/{groupSlug}/cms Lister les pages CMS d'un groupe
Lister les pages CMS d'un groupe
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
groupSlug
*
|
path |
string
|
|
language
|
query |
string
|
Code de langue à deux lettres. S'il est omis, la première langue disponible de chaque élément est utilisée. S'il est fourni mais que la page ne possède pas cette langue, le repli se fait sur « en » (ou la première disponible). |
Réponses
| Code | Description | |
|---|---|---|
200 |
Liste des pages CMS | CmsPageList |
404 |
Groupe introuvable | ErrorResponse |
Exemple de requête
curl '/api/v1/groups/weiqi-club/cms?language=en'
GET /api/v1/groups/{groupSlug}/cms/{cmsSlug} Métadonnées d'une page CMS par groupe et slug
Métadonnées d'une page CMS par groupe et slug
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
groupSlug
*
|
path |
string
|
|
cmsSlug
*
|
path |
string
|
|
language
|
query |
string
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Métadonnées de la page CMS | CmsPage |
404 |
Groupe introuvable, ou page introuvable / non visible dans ce groupe | ErrorResponse |
Exemple de requête
curl '/api/v1/groups/platform/cms/about?language=value'
me
Utilisateur authentifié (lectures limitées à la portée du jeton)
GET /api/v1/me Obtenir le profil de l'utilisateur authentifié
Obtenir le profil de l'utilisateur authentifié
Réponses
| Code | Description | |
|---|---|---|
200 |
Profil utilisateur | MeProfile |
401 |
Jeton bearer manquant ou invalide |
Exemple de requête
curl '/api/v1/me' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/me/rsvps Lister les participations à venir de l'utilisateur
Lister les participations à venir de l'utilisateur
Réponses
| Code | Description | |
|---|---|---|
200 |
Tableau des événements à venir auxquels l'utilisateur participe | MeRsvpList |
401 |
Jeton bearer manquant ou invalide |
Exemple de requête
curl '/api/v1/me/rsvps' \
-H "Authorization: Bearer $ACCESS_TOKEN"
status
Statut
GET /api/status Point d'accès de vérification de l'état
Point d'accès de vérification de l'état
Réponses
| Code | Description | |
|---|---|---|
200 |
Le service fonctionne normalement | HealthStatus |
Exemple de requête
curl '/api/status'