apim.tenantdetail.plan.attacherRattache le plan choisi. L'historique garde les plans précédents, avec leurs dates.
Voir l'élément dans l'écran : hub/apim/tenants-detail
Le Hub ferme le plan en cours (il lui pose une date de fin) et ouvre une nouvelle période avec le plan choisi. « Plan attaché » s'affiche, puis la page se recharge. Sans plan choisi, rien n'est envoyé.
POST /api/apim/admin/tenants/{id}/plan avec { "plan_slug": "pro" }
Dans apim.tr_tenant_plan : valid_until = now() sur la ligne ouverte, puis une nouvelle ligne
(valid_from = maintenant, valid_until vide).
{ "status": "plan_attached", "row": 42 } ; 400 plan_slug required ; 400 si le plan n'existe
pas.
Les deux écritures ne sont pas dans une transaction : si l'insertion échoue, le tenant reste sans plan en cours.