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 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.

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)

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'