# Crear una membresía

**POST** `/v1/memberships`

Inscribe a un usuario en un programa asociado a un anuncio de tipo `membership`. `membership_id` es tu identificador externo; debe ser único para la combinación tenant-anuncio y distinto del ID de base de datos y de `user_id`.

Los usuarios no administradores solo pueden crear su propia membresía (`user_id` toma por defecto el usuario autenticado). Los administradores pueden indicar cualquier `user_id`.

### Campos de la solicitud

| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `membership.listing_id` | integer | Sí | ID del anuncio de membresía |
| `membership.membership_id` | string | Sí | ID externo del miembro definido por el tenant (máximo 128 caracteres) |
| `membership.user_id` | integer | No | Usuario que se inscribirá (administradores; predeterminado: usuario autenticado) |
| `membership.status` | string | No | Estado inicial: `active` (predeterminado), `expired` o `cancelled`; no hay transición automática |
| `membership.joined_at` | string | No | Marca de tiempo ISO-8601 de inscripción (ahora de forma predeterminada) |
| `membership.start_date` | string | No | Fecha de inicio (`YYYY-MM-DD`) |
| `membership.end_date` | string | No | Fecha de finalización (`YYYY-MM-DD`) |
| `membership.duration_months` | integer | No | Duración en meses |
| `membership.currency_id` | integer | No | Divisa para el seguimiento de contribuciones |
| `membership.metadata` | object | No | Metadatos arbitrarios de clave-valor |

### Campos de la respuesta

**membership** — Objeto de membresía creado.
