meta { name: 03 Update type: http seq: 3 } patch { url: {{baseUrl}}/api/v1/plans/{{planSlug}} body: json auth: inherit } body:json { { "name": "Standard B2B (édité)", "description": "Cadence affinée après retour utilisateur.", "steps": [ { "order": 0, "offsetDays": 5, "tone": "amical", "subject": "Petit rappel — facture 1", "body": "Bonjour name,\n\nUn rappel pour la facture 1.\n\nSignatire", "requiresManualValidation": false }, { "order": 1, "offsetDays": 12, "tone": "courtois", "subject": "Relance facture 1", "body": "Bonjour, la facture 1 reste impayée.\n\nSignature", "requiresManualValidation": false } ] } } tests { test("200 OK", function () { expect(res.getStatus()).to.equal(200); }); test("steps replaced (2 steps now)", function () { expect(res.getBody().data.steps).to.have.lengthOf(2); }); } docs { PATCH /api/v1/plans/:slug Édite name, description et/ou steps. Les steps sont **remplacés en bloc** dans une transaction (pas de diff fin id-par-id) — plus simple et prévisible côté UX. Validation des steps : - 1 à 10 étapes - `tone` ∈ `amical | courtois | ferme | mise_en_demeure` - `offsetDays` ∈ [-30, 180] - `subject` 1-200, `body` 1-5000 }