Kind reference

StatusPage

Field reference and a complete example manifest for the StatusPage Kind.

StatusPage

A public (or private) status page, its components, and its scheduled maintenance windows. metadata.name is the natural key, unique per organization.

Only part of the full design is live today. Built: page-level fields, components[], and maintenanceWindows[]. Not built: component groups, per-component outage thresholds, and a manual status override; those wait on a many-to-many monitor-to-component table this Kind's schema does not have yet.

Fields

Generated from up0 schema explain StatusPage --version v1 --output json against a live deployment, annotated below (the live output carries no per-field notes for this Kind yet).

FieldTypeRequiredDefaultMeaning
slugstringyes-The URL-safe identifier the public page is served under.
descriptionstringno(none)Free text shown on the page.
isPublicbooleannotrueA private page requires authentication to view.
customDomainstringno(none)Serve the page under your own domain instead of upzero's.
brandingobjectno(none)Arbitrary JSON: logo URL, primary color, and similar page styling.
componentsarray of objectno[]See below.
maintenanceWindowsarray of objectno[]See below.

components[]. Each entry is matched by name, individually created, updated, or removed, not the whole list replaced as one unit.

FieldTypeRequiredMeaning
namestringyesThe component's display name, unique on this page.
descriptionstringnoFree text.
monitorstringnoOne Monitor, referenced by metadata.name. A component with no monitor is valid; it just has nothing driving its status automatically.
sortOrderintegernoDisplay order, lower first. Defaults to 0.

maintenanceWindows[].

FieldTypeRequiredMeaning
componentsarray of stringyesWhich components (by name) this window applies to.
startsAtstring (ISO 8601)yes
endsAtstring (ISO 8601)yes
messagestringyesShown on the page for the duration of the window.

Example

Created directly through the API for this page (a sync needs a connected repository, which this walk could not complete):

# up0/status-pages/public-status.yaml
apiVersion: up0.io/v1
kind: StatusPage
metadata:
  name: public-status
spec:
  slug: acme-status
  description: Acme service status
  isPublic: true
  components:
    - name: API
      monitor: production-api
    - name: Database
      monitor: production-db-tcp
  maintenanceWindows:
    - components: [Database]
      startsAt: "2026-10-01T02:00:00Z"
      endsAt: "2026-10-01T04:00:00Z"
      message: Scheduled database upgrade

Real response, applying just the page-level fields (no components, since the real POST create endpoint accepts only what PageCreate itself defines; components/maintenanceWindows are the sync process's own additions on top, applied on a subsequent reconcile):

{"id":"f0009be0-d747-4871-8f7f-6f52e8e01537","user_id":"58185525-fe85-4925-bfd0-031f56725277","name":"1651 example","slug":"docs-1651-example","description":"Configuration-as-code docs walk (#1651)","is_public":true,"custom_domain":null,"branding":{},"overall_status":"operational","created_at":"2026-09-16T13:29:31.437920+00:00","updated_at":"2026-09-16T13:29:31.437925+00:00","components":[]}

No password field

A private page's password is never declared in a manifest, the same secrets-never-in-git rule ingestion tokens follow. Set it from the console; the CLI has no status-pages command group to set it from today.

On this page