Docs

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

Sign in Start free

Add a section resource

Adds a monitor, Scheduled job, manual component or vendor feed to a section with display and status rules.

POST https://app.upfour.io/v1/status-pages/{pageID}/sections/{sectionID}/resources
POST https://app.upfour.io/v1/status-pages/{pageID}/sections/{sectionID}/resources

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
Display4
is_external Shown for transparency but never counted into the page's own status or availability. Always true for a feed component.
Status rules4
manual_status Only for a component with no monitor, scheduled job or feed. Empty derives the status.
auto_publish false keeps the automatic report for this component as an internal draft. Default true.
Headers

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 Idempotency-Key supported returns 201

Parameters

FieldTypeDescription
pageID required uuid path parameter
sectionID required uuid path parameter

Body

The 5 fields most calls use come first; the rest are grouped below.

application/json required 13 fields

public_namestring
monitor_iduuid · 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).

heartbeat_iduuid · nullable
feed_urlstring

Address of a vendor's status page (Atlassian Statuspage or Instatus); needs feed_component_id.

feed_component_idstring
Display4 fields
widget_typestring

How the component renders: history (daily bars, the default), plain, or response_times (monitors only). Not validated by the service.

explanationstring
positioninteger · nullable

Omitted appends the component at the end.

is_externalboolean

Shown for transparency but never counted into the page's own status or availability. Always true for a feed component.

Status rules4 fields
manual_statusstring

Only for a component with no monitor, scheduled job or feed. Empty derives the status.

""operationaldegradeddownmaintenance
mark_degraded_forstring

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_forstring

any_incident (the default) shows the component as down while an incident is open; any other value shows it as degraded instead.

auto_publishboolean · nullable

false keeps the automatic report for this component as an internal draft. Default true.

Returns

A successful request returns 201 with application/json.

Response fields 1 top-level fields
FieldTypeDescription
data StatusPageResource
StatusPageResource · 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

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.