Update an alert plan
Replaces an alert plan's name, description, repeat count and steps.
PUT https://app.upfour.io/v1/escalation-policies/{policyID}
Parameters
| Field | Type | Description |
|---|---|---|
policyID required | uuid | path parameter |
Body
namestringrequired
Unique within the company.
In the app: Alert plan name
stepsCreateEscalationStepInput[]required
The steps in order, at least one. On update they replace the current steps.
Nested fields 3 fields
| Field | Type | Description |
|---|---|---|
targets optional | string[] | What the step notifies, at least one entry: alert channel IDs, or on-call rotations written as oncall:<schedule ID>. A rotation is resolved when the step fires, to the person on call at that moment (an override wins) and their own alert channels. Channels and rotations must belong to the company; a client plan may also use that client's. In the app: Who should we alert? |
urgency optional | string one ofhighlowsmsvoice | Which channel types the step uses: high every type, sms only SMS, voice only voice, low only email channels. Empty means high. In the app: How urgent is this alert? |
wait_seconds optional | integer | Seconds to wait after the previous step; from the second step on at least 60. In the app: Wait for |
All other fields3 fields
client_iduuid · nullable
descriptionstring
repeat_countinteger
How often the whole plan repeats after the last step, 0 to 8. A value outside that range is stored as 0.
In the app: Reminders after the last step
Returns
A successful request returns 200 with application/json.
Response fields 1 top-level fields
| Field | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
data | EscalationPolicy | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
EscalationPolicy · 18 fields
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Errors
Only the errors this operation can return. Every error uses the same envelope.
| Status | Code | Meaning |
|---|---|---|
| 400 | bad_request | The request is malformed or fails validation. |
| 402 | billing_action_unavailable | The Company's billing state does not allow this action. When: A metered or limited action while the billing state, such as paused or without credit, blocks it; details holds the action and billing_state. Fix: Top up the credit or change the plan, then retry. |
| 404 | not_found | The requested resource does not exist or is outside the caller's scope. |
| 403 | permission_denied | The credentials do not permit this action. |
| 503 | quota_gate_unavailable | The limit check itself failed, so the action was not carried out. When: The quota service could not decide while the request ran. Fix: Retry in a moment; nothing was changed. |
| 403 / 429 | quota_limit_reached | A usage or inventory limit of the Company was reached. When: Counters and concurrency limits answer 429 with Retry-After, inventory and capacity limits answer 403; details holds purpose, limit and window. Fix: On 429 wait Retry-After seconds; on 403 free something up, request a higher limit where details.raise_request is true, or buy an extension. |
Every call can also return unauthorized (401), rate_limit_exceeded (429) or internal_error (500 / 502). See Responses and errors.