Table des matières

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.

Serveur: / Télécharger la spec: JSON YAML

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'