# Créer une adhésion

**POST** `/v1/memberships`

Inscrit un utilisateur à un programme associé à une annonce de type `membership`. `membership_id` est votre identifiant externe : il doit être unique pour le couple tenant-annonce, et distinct de l'ID de base de données et de `user_id`.

Les utilisateurs non administrateurs ne peuvent créer que leur propre adhésion (`user_id` correspond par défaut à l'utilisateur authentifié). Les administrateurs peuvent indiquer n'importe quel `user_id`.

### Champs de la requête

| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| `membership.listing_id` | integer | Oui | ID de l'annonce d'adhésion |
| `membership.membership_id` | string | Oui | ID externe du membre défini par le tenant (128 caractères max.) |
| `membership.user_id` | integer | Non | Utilisateur à inscrire (administrateurs ; valeur par défaut : utilisateur authentifié) |
| `membership.status` | string | Non | Statut initial : `active` (par défaut), `expired` ou `cancelled` ; aucune transition automatique |
| `membership.joined_at` | string | Non | Horodatage d'inscription ISO-8601 (maintenant par défaut) |
| `membership.start_date` | string | Non | Date de début (`YYYY-MM-DD`) |
| `membership.end_date` | string | Non | Date de fin (`YYYY-MM-DD`) |
| `membership.duration_months` | integer | Non | Durée en mois |
| `membership.currency_id` | integer | Non | Devise utilisée pour le suivi des contributions |
| `membership.metadata` | object | Non | Métadonnées clé-valeur libres |

### Champs de la réponse

**membership** — Objet de l'adhésion créée.
