Guardar un plan de membresía
Crea o actualiza registros de planes de membresía. La API determina si debe crear o actualizar según el membership_plan_id.
Parámetros
-
membership_plans
arrayobligatorioMatriz de objetos de plan de membresía que se van a guardar. Máximo recomendado: 1000 elementos por solicitud para un rendimiento óptimo. La API agrupa automáticamente los elementos en lotes para procesarlos. Cada elemento debe incluir
facility_id(obligatorio si no se usalinking_identifier) olinking_identifier(obligatorio si no se usafacility_id).
Valor devuelto
Devuelve un mensaje sencillo que confirma la operación de sincronización.
Solicitud
Este ejemplo usa facility_id. En una integración con identificador de vinculación, envía "linking_identifier": "branch_downtown" en su lugar.
curl -X POST https://partner-api.performancehub.co/partner/v1/membership-plans \
-u sk_live_YOUR_PARTNER_SECRET_KEY: \
-H "Content-Type: application/json" \
-d '{
"membership_plans": [
{
"membership_plan_id": "plan_99999",
"facility_id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Student – term access",
"description": "Library and student hub access for one teaching term",
"billing_cycle": "one_time",
"price": 4500,
"currency": "AUD",
"duration_days": 84,
"is_recurring": false,
"is_trial": false,
"visible_to_public": true,
"active_members": 245,
"access_zones": [
{
"name": "Library",
"description": "Reading rooms, study spaces and bookable rooms",
"access_hours": {
"mon": [["08:00", "21:00"]],
"tue": [["08:00", "21:00"]],
"wed": [["08:00", "21:00"]],
"thu": [["08:00", "21:00"]],
"fri": [["08:00", "17:00"]],
"sat": [["09:00", "13:00"]]
}
},
{
"name": "Student Hub",
"description": "Common room, kitchen and lockers",
"access_hours": {
"mon": [["07:00", "22:00"]],
"tue": [["07:00", "22:00"]],
"wed": [["07:00", "22:00"]],
"thu": [["07:00", "22:00"]],
"fri": [["07:00", "22:00"]]
}
}
],
"class_limit": null
}
]
}'
Respuesta
Devuelve un mensaje de éxito con metadatos sobre la operación de sincronización.
{
"message": "Membership plan sync successful.",
"metadata": {
"success": 98,
"skipped": 2,
"skipped_items": [
{
"membership_plan_id": "plan_456",
"facility_id": null,
"reason": "Missing facility_id"
}
]
}
}
Campos de metadatos:
- success: número de planes de membresía procesados correctamente
- skipped: número de planes omitidos (si los hay)
- skipped_items: matriz de planes omitidos con los motivos (si los hay)
- dry-run: indicador booleano si se usa el tipo de clave dryrun (si corresponde)