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 dimage) et aux sections contenu, surveillance et journaux de la plateforme. Un jeton daccès personnel (PAT) est requis pour les points daccè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)
cms
Rédaction des pages et des blocs CMS. Réservée aux utilisateurs disposant de ROLE_ADMIN.
GET /api/v1/cms/pages Lister toutes les pages CMS avec leur groupe propriétaire et le nombre de blocs par langue
Lister toutes les pages CMS avec leur groupe propriétaire et le nombre de blocs par langue
Réponses
| Code | Description | |
|---|---|---|
200 |
Toutes les pages CMS, les plus récentes d'abord | CmsPageSummaryList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle ou portée insuffisants |
Exemple de requête
curl '/api/v1/cms/pages' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/cms/block-types Catalogue des types de blocs et des champs acceptés par chacun
Catalogue des types de blocs et des champs acceptés par chacun
Réponses
| Code | Description | |
|---|---|---|
200 |
Définitions de champs vérifiées par les points de terminaison d'écriture | CmsBlockTypeCatalog |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle ou portée insuffisants |
Exemple de requête
curl '/api/v1/cms/block-types' \
-H "Authorization: Bearer $ACCESS_TOKEN"
DELETE /api/v1/cms/blocks/{blockId} Supprimer un bloc
Supprimer un bloc
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
blockId
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
204 |
Bloc supprimé | |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle ou portée insuffisants | |
404 |
Bloc introuvable |
Exemple de requête
curl -X DELETE '/api/v1/cms/blocks/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
PATCH /api/v1/cms/blocks/{blockId} Superposer des champs à un bloc enregistré
Superposer des champs à un bloc enregistré
La charge utile est fusionnée par-dessus celle enregistrée : un corps partiel ne modifie que les champs qu'il nomme.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
blockId
*
|
path |
integer
|
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
type |
any
|
Nom du type de bloc ou identifiant numérique ; par défaut le type enregistré |
payload |
object
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Le bloc enregistré, après hydratation et nettoyage | CmsBlockSummary |
400 |
Corps de requête mal formé | |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle ou portée insuffisants | |
404 |
Bloc introuvable | |
422 |
Type de bloc inutilisable ou champ obligatoire manquant | ValidationErrorResponse |
Exemple de requête
curl -X PATCH '/api/v1/cms/blocks/1' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"type":"Text","payload":"value"}'
GET /api/v1/cms/pages/{id}/blocks Blocs ordonnés d'une page dans une langue
Blocs ordonnés d'une page dans une langue
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
|
locale
|
query |
string
|
Code de langue à deux lettres ; par défaut la langue par défaut configurée |
Réponses
| Code | Description | |
|---|---|---|
200 |
Blocs par ordre de priorité | CmsBlockList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle ou portée insuffisants | |
404 |
Page introuvable | |
422 |
Langue inconnue |
Exemple de requête
curl '/api/v1/cms/pages/1/blocks?locale=en' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/cms/pages/{id}/blocks Ajouter un bloc à une page dans une langue
Ajouter un bloc à une page dans une langue
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
locale |
string
|
|
type |
any
|
Nom du type de bloc ou identifiant numérique issu du catalogue des types de blocs |
payload |
object
|
Réponses
| Code | Description | |
|---|---|---|
201 |
Le bloc enregistré, après hydratation et nettoyage | CmsBlockSummary |
400 |
Corps de requête mal formé | |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle ou portée insuffisants | |
404 |
Page introuvable | |
422 |
Langue inconnue, type de bloc inutilisable ou champ obligatoire manquant | ValidationErrorResponse |
Exemple de requête
curl -X POST '/api/v1/cms/pages/1/blocks' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"locale":"en","type":"Text","payload":"value"}'
POST /api/v1/cms/blocks/{blockId}/move Déplacer un bloc d'une position vers le haut ou vers le bas dans sa page et sa langue
Déplacer un bloc d'une position vers le haut ou vers le bas dans sa page et sa langue
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
blockId
*
|
path |
integer
|
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
direction |
string
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Les blocs de la page dans leur nouvel ordre | CmsBlockList |
400 |
Corps de requête mal formé | |
401 |
Jeton bearer manquant ou invalide | |
403 |
Rôle ou portée insuffisants | |
404 |
Bloc introuvable | |
422 |
Direction autre que up ou down |
Exemple de requête
curl -X POST '/api/v1/cms/blocks/1/move' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"direction":"value"}'
images
Textes alternatifs des images par langue. Réservés aux utilisateurs disposant de ROLE_ADMIN.
PUT /api/v1/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/images/1/alt' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"alt":"value"}'
GET /api/v1/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/images/missing-alt?after_id=1&limit=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/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/images/1/content' \
-H "Authorization: Bearer $ACCESS_TOKEN"
security
Flux des incidents de sécurité. Lecture seule, réservé aux utilisateurs disposant de ROLE_ADMIN.
GET /api/v1/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/security/incidents?limit=1&since=value' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/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/security/incidents/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
seo
Surveillance des moteurs de recherche : état, problèmes et actions. Réservée aux utilisateurs disposant de ROLE_ADMIN.
GET /api/v1/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/seo/status?property=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/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/seo/issues?property=1&filter=value' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/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/seo/actions?limit=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/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/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"}'
logs
Journaux des tâches cron et des envois d'e-mails. Lecture seule, réservés aux utilisateurs disposant de ROLE_ADMIN.
GET /api/v1/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/logs/cron?limit=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/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/logs/sendlog?limit=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/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/logs/cron/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/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/logs/sendlog/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
auth
Se connecter avec e-mail et mot de passe pour obtenir un jeton d'accès personnel
POST /api/v1/auth/login Se connecter et recevoir un jeton d'accès personnel
Se connecter et recevoir un jeton d'accès personnel
Émet un nouveau jeton d'accès personnel pour cet appareil et révoque celui émis lors d'une connexion précédente sous le même nom d'appareil. Envoyez-le comme jeton Bearer à chaque appel et reconnectez-vous en cas de 401.
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
email |
string
(email)
|
|
password |
string
(password)
|
|
deviceName |
string
|
Nom stable de cette installation, affiché au membre dans sa liste de jetons |
Réponses
| Code | Description | |
|---|---|---|
200 |
Connecté | LoginResult |
400 |
Corps mal formé ou nom d'appareil invalide (bad_request, invalid_device_name) | ErrorResponse |
401 |
E-mail ou mot de passe incorrect (invalid_credentials) | ErrorResponse |
403 |
Le compte ne peut pas encore ou plus se connecter (account_blocked, email_not_verified, pending_approval) ; le membre règle cela sur le site | ErrorResponse |
429 |
Trop de tentatives (too_many_attempts, avec Retry-After) ou protection de connexion active (login_restricted) ; se connecter sur le site | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/auth/login' \
-H "Content-Type: application/json" \
-d '{"email":"value","password":"value","deviceName":"value"}'
POST /api/v1/auth/logout Se déconnecter et révoquer le jeton appelant
Se déconnecter et révoquer le jeton appelant
Réponses
| Code | Description | |
|---|---|---|
204 |
Jeton révoqué | |
401 |
Jeton bearer manquant ou invalide |
Exemple de requête
curl -X POST '/api/v1/auth/logout' \
-H "Authorization: Bearer $ACCESS_TOKEN"
community
GET /api/v1/community/blocks Lister les membres bloqués par l'appelant
Lister les membres bloqués par l'appelant
Réponses
| Code | Description | |
|---|---|---|
200 |
Membres bloqués | MemberList |
401 |
Jeton bearer manquant ou invalide |
Exemple de requête
curl '/api/v1/community/blocks' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/community/members Lister les membres de la plateforme
Lister les membres de la plateforme
Les membres que le membre appelant peut voir, hors membres bloqués. Un membre qui s'est retiré de l'annuaire est également absent ici, exactement comme sur le site ; son profil reste accessible par son identifiant.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
limit
|
query |
integer
|
par défaut: 20
|
offset
|
query |
integer
|
par défaut: 0
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Membres | MemberList |
401 |
Jeton bearer manquant ou invalide |
Exemple de requête
curl '/api/v1/community/members?limit=1&offset=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/community/blocks/{id} Bloquer un membre
Bloquer un membre
Bloquer supprime tout suivi dans les deux sens et masque la conversation dans les deux boîtes de réception. L'appel peut être répété sans risque.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
204 |
Bloqué | |
401 |
Jeton bearer manquant ou invalide | |
404 |
Ce membre n'existe pas (not_found) | ErrorResponse |
422 |
Se bloquer soi-même (self_target) | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/community/blocks/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
DELETE /api/v1/community/blocks/{id} Débloquer un membre
Débloquer un membre
L'appel peut être répété sans risque. Le déblocage ne rétablit pas un suivi supprimé par le blocage.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
204 |
Non bloqué | |
401 |
Jeton bearer manquant ou invalide | |
404 |
Ce membre n'existe pas (not_found) | ErrorResponse |
Exemple de requête
curl -X DELETE '/api/v1/community/blocks/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/community/members/{id} Lire le profil d'un membre
Lire le profil d'un membre
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Le profil du membre | MemberProfile |
401 |
Jeton bearer manquant ou invalide | |
403 |
Le membre a bloqué l'appelant (forbidden) | ErrorResponse |
404 |
Ce membre n'existe pas (not_found) | ErrorResponse |
Exemple de requête
curl '/api/v1/community/members/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/community/conversations Lister les conversations du membre appelant
Lister les conversations du membre appelant
Une entrée par personne, la plus récente en premier. Les personnes bloquées dans un sens ou dans l'autre sont exclues.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
limit
|
query |
integer
|
par défaut: 20
|
offset
|
query |
integer
|
par défaut: 0
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Conversations | ConversationList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans le périmètre community:read (insufficient_scope) | ErrorResponse |
Exemple de requête
curl '/api/v1/community/conversations?limit=1&offset=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
PATCH /api/v1/community/messages/{id} Modifier un message dans la fenêtre d'édition
Modifier un message dans la fenêtre d'édition
Un message peut être modifié pendant dix minutes après son envoi. Le site répond 403 ici, cette interface répond 409, car la fenêtre est un conflit d'état et non un échec d'autorisation.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
content |
string
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Le message enregistré | ThreadMessage |
401 |
Jeton bearer manquant ou invalide | |
404 |
Ce message n'existe pas ou a été envoyé par quelqu'un d'autre (not_found) | ErrorResponse |
409 |
La fenêtre de dix minutes est écoulée (edit_window_expired) | ErrorResponse |
422 |
content_required ou content_too_long | ErrorResponse |
Exemple de requête
curl -X PATCH '/api/v1/community/messages/1' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"content":"value"}'
POST /api/v1/community/members/{id}/follow Suivre un membre
Suivre un membre
L'appel peut être répété sans risque : il déclare l'état final souhaité au lieu de basculer.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
204 |
Suivi | |
401 |
Jeton bearer manquant ou invalide | |
404 |
Ce membre n'existe pas (not_found) | ErrorResponse |
409 |
Un blocage dans un sens ou dans l'autre (blocked) | ErrorResponse |
422 |
Se suivre soi-même (self_target) | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/community/members/1/follow' \
-H "Authorization: Bearer $ACCESS_TOKEN"
DELETE /api/v1/community/members/{id}/follow Ne plus suivre un membre
Ne plus suivre un membre
L'appel peut être répété sans risque.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
204 |
Non suivi | |
401 |
Jeton bearer manquant ou invalide | |
404 |
Ce membre n'existe pas (not_found) | ErrorResponse |
Exemple de requête
curl -X DELETE '/api/v1/community/members/1/follow' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/community/groups/{slug}/members Lister les membres d'un groupe
Lister les membres d'un groupe
La même liste, restreinte à un groupe. Un groupe inaccessible à l'appelant renvoie le même 404 qu'un slug inconnu ; atteindre un groupe privé ou masqué exige un jeton portant aussi me:read, car l'appartenance est résolue via ce périmètre.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
slug
*
|
path |
string
|
|
limit
|
query |
integer
|
par défaut: 20
|
offset
|
query |
integer
|
par défaut: 0
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Membres de ce groupe | MemberList |
401 |
Jeton bearer manquant ou invalide | |
404 |
Groupe introuvable ou inaccessible (not_found) | ErrorResponse |
Exemple de requête
curl '/api/v1/community/groups/slug/members?limit=1&offset=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/community/conversations/{userId} Lire un fil de discussion
Lire un fil de discussion
Du plus ancien au plus récent. Cette lecture est sans effet de bord : elle ne marque pas le fil comme lu, contrairement à l'ouverture de la page sur le site. Utilisez POST /api/v1/community/conversations/{userId}/read pour cela.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
userId
*
|
path |
integer
|
|
limit
|
query |
integer
|
par défaut: 20
|
offset
|
query |
integer
|
par défaut: 0
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Le fil de discussion | MessageThread |
401 |
Jeton bearer manquant ou invalide | |
404 |
Ce membre n'existe pas (not_found) | ErrorResponse |
Exemple de requête
curl '/api/v1/community/conversations/1?limit=1&offset=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/community/conversations/{userId} Envoyer un message privé
Envoyer un message privé
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
userId
*
|
path |
integer
|
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
content |
string
|
Réponses
| Code | Description | |
|---|---|---|
201 |
Le message enregistré | ThreadMessage |
401 |
Jeton bearer manquant ou invalide | |
404 |
Ce membre n'existe pas (not_found) | ErrorResponse |
409 |
Un blocage dans un sens ou dans l'autre (blocked) | ErrorResponse |
422 |
content_required, content_too_long ou self_target | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/community/conversations/1' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"content":"value"}'
POST /api/v1/community/conversations/{userId}/read Marquer un fil comme lu
Marquer un fil comme lu
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
userId
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
204 |
Marqué comme lu | |
401 |
Jeton bearer manquant ou invalide | |
404 |
Ce membre n'existe pas (not_found) | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/community/conversations/1/read' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/community/groups/{slug}/town-hall/topics Lister les sujets du Town Hall d'un groupe
Lister les sujets du Town Hall d'un groupe
L'arborescence complète du forum du groupe, en profondeur d'abord, telle que le site la charge. Non paginée. Un groupe sans Town Hall, ou dont le Town Hall est fermé à l'appelant, répond 404 - la même réponse qu'un slug inconnu.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
slug
*
|
path |
string
|
Réponses
| Code | Description | |
|---|---|---|
200 |
L'arborescence des sujets | TopicList |
401 |
Jeton bearer manquant ou invalide | |
404 |
Groupe introuvable, inaccessible, ou Town Hall fermé à l'appelant (not_found) | ErrorResponse |
Exemple de requête
curl '/api/v1/community/groups/slug/town-hall/topics' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/community/groups/{slug}/town-hall/topics Lancer un sujet ou un sous-sujet
Lancer un sujet ou un sous-sujet
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
slug
*
|
path |
string
|
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
title |
string
|
|
parentId |
integer | null
|
Lancer un sous-sujet de ce sujet. |
Réponses
| Code | Description | |
|---|---|---|
201 |
Sujet créé | Topic |
401 |
Jeton bearer manquant ou invalide | |
404 |
Groupe ou sujet parent introuvable, ou Town Hall fermé à l'appelant (not_found) | ErrorResponse |
422 |
empty_title, title_too_long ou too_deep | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/community/groups/slug/town-hall/topics' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"value","parentId":"value"}'
GET /api/v1/community/groups/{slug}/town-hall/gallery Lister la galerie du Town Hall d'un groupe
Lister la galerie du Town Hall d'un groupe
Les photos ajoutées aux événements du groupe, les plus récentes d'abord, chacune avec son événement. Les photos signalées par un membre sont omises, comme sur la page de l'événement.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
slug
*
|
path |
string
|
|
limit
|
query |
integer
|
par défaut: 20
|
offset
|
query |
integer
|
par défaut: 0
|
locale
|
query |
string
|
Langue des titres d'événements |
Réponses
| Code | Description | |
|---|---|---|
200 |
Une page de photos | GalleryList |
401 |
Jeton bearer manquant ou invalide | |
404 |
Groupe introuvable, inaccessible, ou Town Hall fermé à l'appelant (not_found) | ErrorResponse |
Exemple de requête
curl '/api/v1/community/groups/slug/town-hall/gallery?limit=1&offset=1&locale=en' \
-H "Authorization: Bearer $ACCESS_TOKEN"
DELETE /api/v1/community/groups/{slug}/town-hall/topics/{id} Supprimer un sujet
Supprimer un sujet
L'auteur peut supprimer un sujet tant qu'il n'a ni sous-sujets ni réponses ; un admin le supprime avec toute sa sous-arborescence.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
slug
*
|
path |
string
|
|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
204 |
Sujet supprimé | |
401 |
Jeton bearer manquant ou invalide | |
403 |
Suppression non autorisée (forbidden) | ErrorResponse |
404 |
Groupe ou sujet introuvable, ou Town Hall fermé à l'appelant (not_found) | ErrorResponse |
Exemple de requête
curl -X DELETE '/api/v1/community/groups/slug/town-hall/topics/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
PATCH /api/v1/community/groups/{slug}/town-hall/topics/{id} Renommer un sujet (auteur ou admin)
Renommer un sujet (auteur ou admin)
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
slug
*
|
path |
string
|
|
id
*
|
path |
integer
|
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
title |
string
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Sujet renommé | Topic |
401 |
Jeton bearer manquant ou invalide | |
403 |
Ni l'auteur ni un admin (forbidden) | ErrorResponse |
404 |
Groupe ou sujet introuvable, ou Town Hall fermé à l'appelant (not_found) | ErrorResponse |
422 |
empty_title ou title_too_long | ErrorResponse |
Exemple de requête
curl -X PATCH '/api/v1/community/groups/slug/town-hall/topics/1' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"value"}'
GET /api/v1/community/groups/{slug}/town-hall/topics/{id}/replies Lister les réponses à un sujet
Lister les réponses à un sujet
Les plus récentes d'abord, paginées à rebours comme les commentaires d'événement : passer le nextBefore de la page précédente.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
slug
*
|
path |
string
|
|
id
*
|
path |
integer
|
|
before
|
query |
integer
|
Uniquement les réponses plus anciennes que cet identifiant de réponse |
limit
|
query |
integer
|
par défaut: 20
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Une page de réponses | CommentList |
401 |
Jeton bearer manquant ou invalide | |
404 |
Groupe ou sujet introuvable, ou Town Hall fermé à l'appelant (not_found) | ErrorResponse |
Exemple de requête
curl '/api/v1/community/groups/slug/town-hall/topics/1/replies?before=1&limit=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/community/groups/{slug}/town-hall/topics/{id}/replies Répondre à un sujet
Répondre à un sujet
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
slug
*
|
path |
string
|
|
id
*
|
path |
integer
|
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
content |
string
|
Réponses
| Code | Description | |
|---|---|---|
201 |
Réponse créée | CommentCreated |
401 |
Jeton bearer manquant ou invalide | |
404 |
Groupe ou sujet introuvable, ou Town Hall fermé à l'appelant (not_found) | ErrorResponse |
422 |
content_required ou content_too_long | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/community/groups/slug/town-hall/topics/1/replies' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"content":"value"}'
DELETE /api/v1/community/groups/{slug}/town-hall/topics/{id}/replies/{replyId} Supprimer une réponse (la sienne ou en tant qu'admin)
Supprimer une réponse (la sienne ou en tant qu'admin)
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
slug
*
|
path |
string
|
|
id
*
|
path |
integer
|
|
replyId
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
204 |
Réponse supprimée | |
401 |
Jeton bearer manquant ou invalide | |
403 |
Pas ta réponse et pas admin (forbidden) | ErrorResponse |
404 |
Groupe, sujet ou réponse introuvable, réponse à un autre sujet, ou Town Hall fermé à l'appelant (not_found) | ErrorResponse |
Exemple de requête
curl -X DELETE '/api/v1/community/groups/slug/town-hall/topics/1/replies/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
event-actions
Actions des utilisateurs authentifiés sur les événements : participation, commentaires, envoi d'image
PUT /api/v1/events/{id}/rsvp Définir la réponse et les invités pour un événement
Définir la réponse et les invités pour un événement
Idempotent : définit la réponse et le nombre d'invités en un appel et renvoie l'état obtenu.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
going |
boolean
|
|
guests |
integer
|
Invités que le membre amène, de 0 à 5 ; ignoré s'il ne vient pas |
Réponses
| Code | Description | |
|---|---|---|
200 |
État de réponse obtenu | RsvpResult |
401 |
Jeton bearer manquant ou invalide | |
403 |
Non autorisé (not_a_member) | ErrorResponse |
404 |
Événement introuvable | ErrorResponse |
409 |
Événement annulé ou déjà commencé (event_canceled, event_started) | ErrorResponse |
400 |
Le corps n'est pas un objet, ou going n'est pas un booléen (bad_request) | ErrorResponse |
422 |
Nombre d'invités hors limites (validation_failed) | ErrorResponse |
Exemple de requête
curl -X PUT '/api/v1/events/1/rsvp' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"going":"value","guests":"value"}'
POST /api/v1/events/{id}/rsvp Confirmer sa participation à un événement
Confirmer sa participation à un événement
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
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é) | ErrorResponse |
404 |
Événement introuvable | ErrorResponse |
409 |
Événement annulé ou déjà commencé | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/events/1/rsvp' \
-H "Authorization: Bearer $ACCESS_TOKEN"
DELETE /api/v1/events/{id}/rsvp Retirer sa participation à un événement
Retirer sa participation à un événement
Le retrait n'est jamais refusé : un événement annulé, un événement déjà commencé et une adhésion perdue laissent tous le membre quitter la liste des participants.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Participation retirée (ou déjà absente) | RsvpResult |
401 |
Jeton bearer manquant ou invalide | |
404 |
Événement introuvable | ErrorResponse |
Exemple de requête
curl -X DELETE '/api/v1/events/1/rsvp' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/events/{id}/images Lister les photos d'un événement
Lister les photos d'un événement
Les photos de l'événement dans toutes les tailles générées. Les photos signalées par un membre sont omises, comme sur la page de l'événement.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Les photos de l'événement | ImageList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans la portée event-actions:read (insufficient_scope) | ErrorResponse |
404 |
Événement introuvable ou non visible pour l'appelant (not_found) | ErrorResponse |
Exemple de requête
curl '/api/v1/events/1/images' \
-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
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
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 |
file_required, file_rejected ou upload_failed | ErrorResponse |
401 |
Jeton bearer manquant ou invalide | |
403 |
Non autorisé | ErrorResponse |
404 |
Événement introuvable | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/events/1/images' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-F "file=@/path/to/file"
GET /api/v1/events/{id}/comments Lister les commentaires d'un événement
Lister les commentaires d'un événement
Les plus récents d'abord, comme sur la page de l'événement. Passez le nextBefore de la page précédente pour obtenir la suivante.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
|
before
|
query |
integer
|
Uniquement les commentaires antérieurs à cet identifiant de commentaire |
limit
|
query |
integer
|
par défaut: 25
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Une page de commentaires | CommentList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans la portée event-actions:read (insufficient_scope) | ErrorResponse |
404 |
Événement introuvable ou non visible pour l'appelant (not_found) | ErrorResponse |
Exemple de requête
curl '/api/v1/events/1/comments?before=1&limit=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/events/{id}/comments Publier un commentaire sur un événement
Publier un commentaire sur un événement
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
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 |
content_required ou content_too_long | ErrorResponse |
401 |
Jeton bearer manquant ou invalide | |
403 |
Non autorisé | ErrorResponse |
404 |
Événement introuvable | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/events/1/comments' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"content":"value"}'
GET /api/v1/events/{id}/attendees Lister qui vient à un événement
Lister qui vient à un événement
Qui vient, tel que la page de l'événement l'affiche à un membre connecté : les personnes inscrites avec leurs invités, plus le nombre externe tenu par l'organisation.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Les personnes qui viennent | AttendeeList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans la portée event-actions:read (insufficient_scope) | ErrorResponse |
404 |
Événement introuvable ou non visible pour l'appelant (not_found) | ErrorResponse |
Exemple de requête
curl '/api/v1/events/1/attendees' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/events/{id}/occurrences Lister les autres dates d'une rencontre récurrente
Lister les autres dates d'une rencontre récurrente
Les prochains événements visibles de la même série, chacun avec la réponse de l'appelant. Un événement sans série renvoie lui-même.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Prochaines occurrences de la série | EventList |
401 |
Jeton bearer manquant ou invalide | |
404 |
Événement introuvable | ErrorResponse |
Exemple de requête
curl '/api/v1/events/1/occurrences' \
-H "Authorization: Bearer $ACCESS_TOKEN"
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)
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
|
imageId
*
|
path |
integer
|
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 | ErrorResponse |
404 |
Image ou événement introuvable | ErrorResponse |
Exemple de requête
curl -X DELETE '/api/v1/events/1/images/1' \
-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)
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
|
commentId
*
|
path |
integer
|
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 | ErrorResponse |
404 |
Commentaire ou événement introuvable | ErrorResponse |
Exemple de requête
curl -X DELETE '/api/v1/events/1/comments/1' \
-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
|
group
|
query |
string
|
Slug du groupe ; un slug inconnu renvoie une liste vide |
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&group=weiqi-club'
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"
PATCH /api/v1/me Modifier le profil du membre authentifié
Modifier le profil du membre authentifié
Seuls les champs présents dans le corps changent. Le nom suit la règle du site : un nom déjà enregistré au-delà de la limite continue de fonctionner, mais une modification doit la respecter.
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
name |
string
|
|
bio |
string | null
|
|
locale |
string
|
Une des langues activées sur cette plateforme |
public |
boolean
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Le profil enregistré | MeProfile |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans la portée me:write (insufficient_scope) | ErrorResponse |
422 |
Un champ a été refusé (validation_failed) ; errors les nomme : name_required, name_too_long, locale_not_enabled, bio_invalid, public_invalid | ValidationErrorResponse |
Exemple de requête
curl -X PATCH '/api/v1/me' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"value","bio":"value","locale":"value","public":"value"}'
GET /api/v1/me/rsvps Lister les participations à venir de l'utilisateur
Lister les participations à venir de l'utilisateur
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
locale
|
query |
string
|
Code de langue ; prioritaire sur Accept-Language |
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?locale=en' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/me/avatar Remplacer la photo de profil du membre authentifié
Remplacer la photo de profil du membre authentifié
Remplace la photo de profil du membre. L'image précédente reste dans sa propre galerie, comme sur le site.
Corps de la requête
requis
Type de contenu: multipart/form-data
| Nom | Type | Description |
|---|---|---|
file |
string
(binary)
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Le profil avec sa nouvelle photo | MeProfile |
400 |
file_required, file_rejected ou upload_failed | ErrorResponse |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans la portée me:write (insufficient_scope) | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/me/avatar' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-F "file=@/path/to/file"
GET /api/v1/me/groups Lister les groupes du membre authentifié
Lister les groupes du membre authentifié
Chaque groupe auquel le membre appartient ou a demandé à adhérer, y compris ceux qui l'ont bloqué, avec le rôle et le statut de l'adhésion.
Réponses
| Code | Description | |
|---|---|---|
200 |
Les adhésions du membre authentifié | MembershipList |
401 |
Jeton bearer manquant ou invalide |
Exemple de requête
curl '/api/v1/me/groups' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/me/events Lister les prochaines rencontres du membre connecté
Lister les prochaines rencontres du membre connecté
Les prochains événements des groupes du membre, plus les événements visibles auxquels il a répondu ailleurs ; les annulés inclus et signalés.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
from
|
query |
string
(date-time)
|
Borne inférieure ISO-8601 (par défaut : maintenant) |
limit
|
query |
integer
|
par défaut: 20
|
offset
|
query |
integer
|
par défaut: 0
|
locale
|
query |
string
|
Code de langue ; prioritaire sur Accept-Language |
Réponses
| Code | Description | |
|---|---|---|
200 |
Liste paginée des événements | EventList |
401 |
Jeton bearer manquant ou invalide |
Exemple de requête
curl '/api/v1/me/events?from=value&limit=1&offset=1&locale=en' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/me/signal-token Émettre le jeton de signal de notifications pour cet appareil
Émettre le jeton de signal de notifications pour cet appareil
Émet pour l'appareil de l'application appelant un second jeton qui ne peut lire que GET /api/v1/signal, valable 90 jours. Une nouvelle demande le remplace, et la révocation du jeton d'application de l'appareil le révoque aussi.
Réponses
| Code | Description | |
|---|---|---|
201 |
Le jeton de signal | SignalTokenResult |
400 |
Le jeton appelant n'a pas été émis par la connexion API (not_an_app_token) | ErrorResponse |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans la portée me:write (insufficient_scope) | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/me/signal-token' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/me/notifications Lister les notifications du membre authentifié
Lister les notifications du membre authentifié
La cloche de notification du site, sous forme de données. Chaque élément est calculé en direct à partir des mêmes fournisseurs que le site ; rien n'est stocké, il n'y a donc ni état de lecture, ni historique, ni curseur. Les libellés reviennent dans la langue demandée.
Réponses
| Code | Description | |
|---|---|---|
200 |
La cloche | NotificationList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans la portée me:read (insufficient_scope) | ErrorResponse |
Exemple de requête
curl '/api/v1/me/notifications' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/me/push-subscriptions Lister les appareils push enregistrés
Lister les appareils push enregistrés
Renvoie également la clé publique VAPID dont un client a besoin pour sabonner, et si le push est configuré sur cette plateforme.
Réponses
| Code | Description | |
|---|---|---|
200 |
Les appareils enregistrés | PushSubscriptionList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans la portée me:read (insufficient_scope) | ErrorResponse |
Exemple de requête
curl '/api/v1/me/push-subscriptions' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/me/push-subscriptions Enregistrer un appareil push
Enregistrer un appareil push
Enregistre un point de terminaison Web Push pour le jeton appelant, de sorte que révoquer lappareil dans /profile/access-tokens arrête aussi ses notifications. Renvoyer un point de terminaison connu le rattache à lappareil appelant et répond 200.
Corps de la requête
requis
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
endpoint |
string
|
|
p256dh |
string
|
|
auth |
string
|
|
transport |
string
|
Réponses
| Code | Description | |
|---|---|---|
200 |
Un point de terminaison connu a été mis à jour | PushSubscriptionEntry |
201 |
Le point de terminaison a été enregistré | PushSubscriptionEntry |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans la portée me:write (insufficient_scope) | ErrorResponse |
422 |
validation_failed, endpoint_rejected ou too_many_subscriptions | ValidationErrorResponse |
503 |
Aucune clé VAPID nest configurée sur cette plateforme (push_unavailable) | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/me/push-subscriptions' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"endpoint":"value","p256dh":"value","auth":"value","transport":"value"}'
GET /api/v1/me/notification-settings Lire les préférences de notification du membre authentifié
Lire les préférences de notification du membre authentifié
Le même interrupteur principal et les mêmes six bascules que le membre modifie sur /profile/config.
Réponses
| Code | Description | |
|---|---|---|
200 |
Les préférences stockées | MeNotificationSettings |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans la portée me:read (insufficient_scope) | ErrorResponse |
Exemple de requête
curl '/api/v1/me/notification-settings' \
-H "Authorization: Bearer $ACCESS_TOKEN"
PATCH /api/v1/me/notification-settings Modifier les préférences de notification du membre authentifié
Modifier les préférences de notification du membre authentifié
Seules les clés présentes dans le corps de la requête changent. L'écriture passe par le même service que le site, une modification ici apparaît donc sur /profile/config.
Corps de la requête
requis
Type de contenu: application/json
Réponses
| Code | Description | |
|---|---|---|
200 |
Les préférences enregistrées | MeNotificationSettings |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans la portée me:write (insufficient_scope) | ErrorResponse |
422 |
Un champ a été refusé (validation_failed) ; errors les nomme : name_required, name_too_long, locale_not_enabled, bio_invalid, public_invalid | ValidationErrorResponse |
Exemple de requête
curl -X PATCH '/api/v1/me/notification-settings' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'
DELETE /api/v1/me/push-subscriptions/{id} Supprimer un appareil push
Supprimer un appareil push
Supprime un appareil enregistré. Lenregistrement dun autre membre répond 404 plutôt que 403, afin que le point de terminaison ne confirme pas lexistence dun identifiant.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Lidentifiant dabonnement issu du point de terminaison de liste |
Réponses
| Code | Description | |
|---|---|---|
204 |
Supprimé | |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans la portée me:write (insufficient_scope) | ErrorResponse |
404 |
Aucun appareil de ce type pour ce membre | |
503 |
Aucune clé VAPID nest configurée sur cette plateforme (push_unavailable) | ErrorResponse |
Exemple de requête
curl -X DELETE '/api/v1/me/push-subscriptions/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
memberships
Les adhésions du membre appelant : invitations, arrivée et départ
GET /api/v1/memberships/invitations Lister les invitations de groupe en attente
Lister les invitations de groupe en attente
Les invitations adressées au membre appelant, sans celles qu'un blocage masque dans un sens ou dans l'autre.
Réponses
| Code | Description | |
|---|---|---|
200 |
Les invitations en attente | InvitationList |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans la portée memberships:read (insufficient_scope) | ErrorResponse |
Exemple de requête
curl '/api/v1/memberships/invitations' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/memberships/groups/{slug} Rejoindre un groupe répertorié, ou en faire la demande
Rejoindre un groupe répertorié, ou en faire la demande
Seul un groupe répertorié dans l'annuaire peut être rejoint ici. Un groupe caché se rejoint sur son propre domaine et un groupe privé sur invitation : tous deux répondent group_not_joinable. Si le groupe demande une validation, l'adhésion revient en attente.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
slug
*
|
path |
string
|
Corps de la requête
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
platformMailConsent |
boolean
|
Répond à l'entrée sur la plateforme : si la plateforme peut envoyer des annonces et des courriels d'événements |
Réponses
| Code | Description | |
|---|---|---|
200 |
L'adhésion obtenue, validée ou en attente | Membership |
401 |
Jeton bearer manquant ou invalide | |
404 |
Aucun groupe de ce type (not_found) | ErrorResponse |
409 |
group_not_joinable, blocked_in_group ou platform_crossing_required | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/memberships/groups/slug' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"platformMailConsent":"value"}'
DELETE /api/v1/memberships/groups/{slug} Quitter un groupe
Quitter un groupe
Les règles du site s'appliquent : la dernière personne propriétaire ne peut pas partir, un membre bloqué non plus, et le groupe de la plateforme ne peut être quitté que lorsqu'il n'est plus nécessaire à une autre adhésion.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
slug
*
|
path |
string
|
Réponses
| Code | Description | |
|---|---|---|
204 |
Adhésion terminée | |
401 |
Jeton bearer manquant ou invalide | |
404 |
Aucun groupe de ce type, ou aucune adhésion à celui-ci (not_found) | ErrorResponse |
409 |
last_owner, blocked_in_group ou may_not_leave_platform | ErrorResponse |
Exemple de requête
curl -X DELETE '/api/v1/memberships/groups/slug' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/memberships/invitations/{id}/accept Accepter une invitation de groupe
Accepter une invitation de groupe
L'acceptation établit l'adhésion au rôle proposé. Tant que le membre doit encore rejoindre le groupe de la plateforme, la réponse est 409 platform_crossing_required ; renvoyez la requête avec platformMailConsent pour répondre d'abord à cette question.
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Corps de la requête
Type de contenu: application/json
| Nom | Type | Description |
|---|---|---|
platformMailConsent |
boolean
|
Répond à l'entrée sur la plateforme : si la plateforme peut envoyer des annonces et des courriels d'événements |
Réponses
| Code | Description | |
|---|---|---|
200 |
L'adhésion obtenue | Membership |
401 |
Jeton bearer manquant ou invalide | |
404 |
Aucune invitation de ce type pour ce membre (invitation_not_found) | ErrorResponse |
409 |
blocked_in_group, membership_rejected ou platform_crossing_required | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/memberships/invitations/1/accept' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"platformMailConsent":"value"}'
POST /api/v1/memberships/invitations/{id}/decline Refuser une invitation de groupe
Refuser une invitation de groupe
Paramètres
| Nom | Dans | Type | Description |
|---|---|---|---|
id
*
|
path |
integer
|
Réponses
| Code | Description | |
|---|---|---|
204 |
Invitation refusée | |
401 |
Jeton bearer manquant ou invalide | |
404 |
Aucune invitation de ce type pour ce membre (invitation_not_found) | ErrorResponse |
Exemple de requête
curl -X POST '/api/v1/memberships/invitations/1/decline' \
-H "Authorization: Bearer $ACCESS_TOKEN"
signal
Si quelque chose a changé pour le membre, sans dire quoi
GET /api/v1/signal Si quelque chose a changé pour le membre
Si quelque chose a changé pour le membre
Une valeur opaque qui change quand la cloche change, quand un événement auquel le membre a répondu oui est annulé, déplacé dans le temps ou dans un autre lieu, et quand son rappel arrive à échéance. Elle ne révèle rien d'autre : un jeton qui ne peut lire que cette section peut donc être conservé là où l'application ne peut pas le protéger.
Réponses
| Code | Description | |
|---|---|---|
200 |
La valeur actuelle | SignalState |
401 |
Jeton bearer manquant ou invalide | |
403 |
Jeton sans la portée signal:read (insufficient_scope) | ErrorResponse |
Exemple de requête
curl '/api/v1/signal' \
-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'