Docs

Type a word or a question. Esc closes the search.

Sign in Start free

Replace status page structure

Replaces the complete status-page structure with the supplied sections and resources.

PUT https://app.upfour.io/v1/status-pages/{pageID}/structure
PUT https://app.upfour.io/v1/status-pages/{pageID}/structure

A real request. Sending it changes data in your up4 account.

Authorization
AuthorizationA pls_ key. It stays in this browser tab. Needs status_page.write.
Path
Body

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key when the field is empty.

Request
Responsenot sent yet
Fill in a key and press Send request (⌘↵).
The answer appears here.
scope status_page.write stable returns 200

Parameters

FieldTypeDescription
pageID required uuid path parameter

Body

application/json required 1 field

All other fields18 fields
sectionsStructureSectionInput[]

The whole structure: sections not listed are deleted, and omitting the field removes all of them.

In the app: Structure
Nested fields 17 fields
FieldTypeDescription
auto_group_id optional uuid · nullable Required for monitor_group and job_group, rejected for the other sources.
auto_source optional string one ofnoneall_monitorsall_jobsmonitor_groupjob_group none (stored resources), all_monitors, all_jobs, monitor_group or job_group. An automatic section cannot also hold resources.
auto_widget_type optional string How the components of an automatic section render; history by default.
name optional string
resources optional StructureResourceInput[]
Each item · 12 fields
FieldTypeDescription
auto_publish optional boolean · nullable false keeps the automatic report for this component as an internal draft. Default true.
explanation optional string
feed_component_id optional string
feed_url optional string Address of a vendor's status page (Atlassian Statuspage or Instatus); needs feed_component_id.
heartbeat_id optional uuid · nullable
is_external optional boolean Shown for transparency but never counted into the page's own status or availability. Always true for a feed component.
manual_status optional string one of""operationaldegradeddownmaintenance Only for a component with no monitor, scheduled job or feed. Empty derives the status.
mark_degraded_for optional string any_incident shows an open incident as degraded instead of down; any non-empty value also shows a slow but up monitor as degraded. Default no_incident.
mark_down_for optional string any_incident (the default) shows the component as down while an incident is open; any other value shows it as degraded instead.
monitor_id optional uuid · nullable At most one of monitor_id and heartbeat_id; with neither the component is manual (manual_status) or follows a vendor feed (feed_url).
public_name optional string
widget_type optional string How the component renders: history (daily bars, the default), plain, or response_times (monitors only). Not validated by the service.

Returns

A successful request returns 200 with application/json.

Response fields 2 top-level fields
FieldTypeDescription
data StatusPageSection[] · nullable
Each item · 54 fields
FieldTypeDescription
auto_source string one ofnoneall_monitorsall_jobsmonitor_groupjob_group
auto_widget_type string
created_at string (date-time)
id uuid
name string
position integer
resources StatusPageResource[] · nullable
Each item · 45 fields
FieldTypeDescription
auto_publish boolean
explanation string
heartbeat_id uuid · nullable
id uuid
mark_degraded_for string any_incident shows an open incident as degraded instead of down; any non-empty value also shows a slow but up monitor as degraded. Default no_incident.
mark_down_for string any_incident (the default) shows the component as down while an incident is open; any other value shows it as degraded instead.
monitor_id uuid · nullable
position integer
public_name string
section_id uuid
widget_type string
active_incident_ids uuid[]
feed_component_id string
feed_component_name string
feed_format string one ofstatuspage_v2instatus
feed_url string
freshness_timeout_seconds integer
history PublicStatusHistory
PublicStatusHistory · 12 fields
FieldTypeDescription
covered boolean
days integer
ends_at string (date-time)
segments PublicStatusHistoryDay[] · nullable
Each item · 4 fields
FieldTypeDescription
covered boolean
date string
status string one ofupdegradeddownno_data
uptime_percentage number
starts_at string (date-time)
uptime_by_range map of number
uptime_percentage number
watching_since string (date-time)
is_external boolean
last_checked_at string (date-time)
manual_status string one ofoperationaldegradeddownmaintenance
monitor_state string one ofUPDOWNPAUSED
response_times PublicResponseTimeHistory
PublicResponseTimeHistory · 5 fields
FieldTypeDescription
days PublicResponseTimeDay[] · nullable
Each item · 3 fields
FieldTypeDescription
avg_ms number
date string
p95_ms number
current_avg_ms number
runtime_status string Current status of the component, derived from its monitor, scheduled job, manual status or vendor feed.
source StatusPageResourceSource
StatusPageResourceSource · 3 fields
FieldTypeDescription
checked_at string (date-time) · nullable
name string
url string
status_page_id uuid
auto_group_id uuid
pagination Pagination
Pagination · 5 fields
FieldTypeDescription
cursor string · nullable
has_more boolean
limit integer 1–250
next_cursor string · nullable
prev_cursor string · nullable

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. quota_limit_reached (window total): the Company already holds the most of these it may have. error.details carries purpose and limit; remove one or ask support for a higher limit.

Every call can also return unauthorized (401), rate_limit_exceeded (429) or internal_error (500 / 502). See Responses and errors.