# Status pages API

The Uptizm API has 16 endpoints on this resource, one section each.

## List status pages

`GET /status-pages`

The team's status pages, newest first, cursor-paginated.

- URL: `https://api.uptizm.com/v1/status-pages`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:read`
- Tag: Status pages
- operationId: `status-pages.index`

### Parameters

- `per_page` (query, integer, min 1, max 200): Page size, clamped to 1 and the endpoint's maximum (200 on most lists).
- `cursor` (query, string): The `meta.next_cursor` of the previous page.

### Response 200

Content type: `application/json`.

- `data` (array of StatusPageResource, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `slug` (string, required)
  - `domain_mode` (string, one of `"path"`, `"subdomain"`, `"custom"`, required): How the page is addressed, as a string: `path` or `subdomain`.
  - `custom_domain` (string or null, required)
  - `brand_color` (string, required)
  - `logo_url` (string or null, required): A signed URL for the logo image.
  - `dark_logo_url` (string or null, required): A signed URL for the dark logo image; null means there is no dark logo.
  - `logo_text` (string or null, required)
  - `default_theme` (string, one of `"system"`, `"light"`, `"dark"`, required): The theme the page shows by default.
  - `logo_alignment` (string, one of `"left"`, `"center"`, required)
  - `description` (string or null, required)
  - `locale` (string or null, required): The language the public page publishes in, null for the deployment default.
  - `public_url` (string or null, required): The URL the page is actually served at, resolved from the route itself.
  - `is_public` (boolean, required)
  - `subscriptions_enabled` (boolean, required)
  - `monitors` (array of string)
  - `preview_image_url` (string or null): The URL of the page preview image.
  - `preview_rendered_at` (string or null, required)
  - `preview_render_status` (string or null, one of `"rendering"`, `"completed"`, `"failed"`, `null`, required): Null means never rendered.
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)
- `links` (object, required)
  - `first` (string or null, required)
  - `last` (string or null, required)
  - `prev` (string or null, required)
  - `next` (string or null, required)
- `meta` (object, required)
  - `path` (string or null, required): Base path for paginator generated URLs.
  - `per_page` (integer, min 0, required): Number of items shown per page.
  - `next_cursor` (string or null, required): The "cursor" that points to the next set of items.
  - `prev_cursor` (string or null, required): The "cursor" that points to the previous set of items.

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Create a status page

`POST /status-pages`

Creates a public status page. The plan caps the count; an unclaimed anonymous workspace can create none.

- URL: `https://api.uptizm.com/v1/status-pages`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:write`
- Tag: Status pages
- operationId: `status-pages.store`

### Parameters

- `Idempotency-Key` (header, string): Any unique string per logical request.

### Request body

Content type: `application/json`.

- `name` (string, max length 200, required)
- `slug` (string, max length 100, required)
- `domain_mode` (string, one of `"path"`, `"subdomain"`): How the page is addressed: `path` (the default) or `subdomain`.
- `custom_domain` (string or null, max length 255)
- `brand_color` (string or null, max length 7): Strictly #rrggbb: the client never sends an alpha channel.
- `logo_text` (string or null, max length 8)
- `description` (string or null, max length 500)
- `locale` (string or null, one of `"en"`, `"tr"`, `null`): The language this page publishes in: its own copy, its banner label and its incident titles.
- `default_theme` (StatusPageTheme: string, one of `"system"`, `"light"`, `"dark"`): Colour scheme a public status page opens in before the visitor chooses one.
- `logo_alignment` (LogoAlignment: string, one of `"left"`, `"center"`): Where the brand logo sits in a public status page's header.
- `is_public` (boolean)
- `subscriptions_enabled` (boolean)

### Response 201

Content type: `application/json`.

- `data` (StatusPageResource, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `slug` (string, required)
  - `domain_mode` (string, one of `"path"`, `"subdomain"`, `"custom"`, required): How the page is addressed, as a string: `path` or `subdomain`.
  - `custom_domain` (string or null, required)
  - `brand_color` (string, required)
  - `logo_url` (string or null, required): A signed URL for the logo image.
  - `dark_logo_url` (string or null, required): A signed URL for the dark logo image; null means there is no dark logo.
  - `logo_text` (string or null, required)
  - `default_theme` (string, one of `"system"`, `"light"`, `"dark"`, required): The theme the page shows by default.
  - `logo_alignment` (string, one of `"left"`, `"center"`, required)
  - `description` (string or null, required)
  - `locale` (string or null, required): The language the public page publishes in, null for the deployment default.
  - `public_url` (string or null, required): The URL the page is actually served at, resolved from the route itself.
  - `is_public` (boolean, required)
  - `subscriptions_enabled` (boolean, required)
  - `monitors` (array of string)
  - `preview_image_url` (string or null): The URL of the page preview image.
  - `preview_rendered_at` (string or null, required)
  - `preview_render_status` (string or null, one of `"rendering"`, `"completed"`, `"failed"`, `null`, required): Null means never rendered.
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 422: Validation error
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Get a status page

`GET /status-pages/{statusPage}`

One status page with its components (attached monitors).

- URL: `https://api.uptizm.com/v1/status-pages/{statusPage}`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:read`
- Tag: Status pages
- operationId: `status-pages.show`

### Parameters

- `statusPage` (path, string, required): The status page ID

### Response 200

Content type: `application/json`.

- `data` (StatusPageResource and object, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `slug` (string, required)
  - `domain_mode` (string, one of `"path"`, `"subdomain"`, `"custom"`, required): How the page is addressed, as a string: `path` or `subdomain`.
  - `custom_domain` (string or null, required)
  - `brand_color` (string, required)
  - `logo_url` (string or null, required): A signed URL for the logo image.
  - `dark_logo_url` (string or null, required): A signed URL for the dark logo image; null means there is no dark logo.
  - `logo_text` (string or null, required)
  - `default_theme` (string, one of `"system"`, `"light"`, `"dark"`, required): The theme the page shows by default.
  - `logo_alignment` (string, one of `"left"`, `"center"`, required)
  - `description` (string or null, required)
  - `locale` (string or null, required): The language the public page publishes in, null for the deployment default.
  - `public_url` (string or null, required): The URL the page is actually served at, resolved from the route itself.
  - `is_public` (boolean, required)
  - `subscriptions_enabled` (boolean, required)
  - `monitors` (array of string, required)
  - `preview_image_url` (string or null): The URL of the page preview image.
  - `preview_rendered_at` (string or null, required)
  - `preview_render_status` (string or null, one of `"rendering"`, `"completed"`, `"failed"`, `null`, required): Null means never rendered.
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Update a status page

`PUT /status-pages/{statusPage}`

Updates the page's settings.

- URL: `https://api.uptizm.com/v1/status-pages/{statusPage}`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:write`
- Tag: Status pages
- operationId: `status-pages.update`

### Parameters

- `statusPage` (path, string, required): The status page ID

### Request body

Content type: `application/json`.

- `name` (string, max length 200)
- `slug` (string, max length 100)
- `domain_mode` (string, one of `"path"`, `"subdomain"`)
- `custom_domain` (string or null, max length 255)
- `brand_color` (string or null, max length 7)
- `logo_text` (string or null, max length 8)
- `description` (string or null, max length 500)
- `locale` (string or null, one of `"en"`, `"tr"`, `null`)
- `default_theme` (StatusPageTheme: string, one of `"system"`, `"light"`, `"dark"`): Colour scheme a public status page opens in before the visitor chooses one.
- `logo_alignment` (LogoAlignment: string, one of `"left"`, `"center"`): Where the brand logo sits in a public status page's header.
- `is_public` (boolean)
- `subscriptions_enabled` (boolean)

### Response 200

Content type: `application/json`.

- `data` (StatusPageResource and object, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `slug` (string, required)
  - `domain_mode` (string, one of `"path"`, `"subdomain"`, `"custom"`, required): How the page is addressed, as a string: `path` or `subdomain`.
  - `custom_domain` (string or null, required)
  - `brand_color` (string, required)
  - `logo_url` (string or null, required): A signed URL for the logo image.
  - `dark_logo_url` (string or null, required): A signed URL for the dark logo image; null means there is no dark logo.
  - `logo_text` (string or null, required)
  - `default_theme` (string, one of `"system"`, `"light"`, `"dark"`, required): The theme the page shows by default.
  - `logo_alignment` (string, one of `"left"`, `"center"`, required)
  - `description` (string or null, required)
  - `locale` (string or null, required): The language the public page publishes in, null for the deployment default.
  - `public_url` (string or null, required): The URL the page is actually served at, resolved from the route itself.
  - `is_public` (boolean, required)
  - `subscriptions_enabled` (boolean, required)
  - `monitors` (array of string, required)
  - `preview_image_url` (string or null): The URL of the page preview image.
  - `preview_rendered_at` (string or null, required)
  - `preview_render_status` (string or null, one of `"rendering"`, `"completed"`, `"failed"`, `null`, required): Null means never rendered.
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 422: Validation error
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Delete a status page

`DELETE /status-pages/{statusPage}`

Deletes the page.

- URL: `https://api.uptizm.com/v1/status-pages/{statusPage}`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:write`
- Tag: Status pages
- operationId: `status-pages.destroy`

### Parameters

- `statusPage` (path, string, required): The status page ID

### Response 204

No body.

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Reorder a page's monitors

`PATCH /status-pages/{statusPage}/monitors/reorder`

Sets `display_order` for the monitors attached to the page.

- URL: `https://api.uptizm.com/v1/status-pages/{statusPage}/monitors/reorder`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:write`
- Tag: Status pages
- operationId: `v1.status-pages.monitors.reorder`

### Parameters

- `statusPage` (path, string, required): The status page ID

### Request body

Content type: `application/json`.

- `order` (array of object, required)
  - `id` (string, required)
  - `display_order` (integer, min 0, required)

### Response 204

No body.

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 422: Validation error
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Attach a monitor to a page

`POST /status-pages/{statusPage}/monitors`

Adds one of the team's monitors to the page, or updates its display fields when it is already attached.

- URL: `https://api.uptizm.com/v1/status-pages/{statusPage}/monitors`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:write`
- Tag: Status pages
- operationId: `v1.status-pages.monitors.attach`

### Parameters

- `statusPage` (path, string, required): The status page ID
- `Idempotency-Key` (header, string): Any unique string per logical request.

### Request body

Content type: `application/json`.

- `monitor_id` (string, required)
- `display_order` (integer, min 0)
- `custom_label` (string or null, max length 255)

### Response 200

Content type: `application/json`.

- `data` (StatusPageResource and object, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `slug` (string, required)
  - `domain_mode` (string, one of `"path"`, `"subdomain"`, `"custom"`, required): How the page is addressed, as a string: `path` or `subdomain`.
  - `custom_domain` (string or null, required)
  - `brand_color` (string, required)
  - `logo_url` (string or null, required): A signed URL for the logo image.
  - `dark_logo_url` (string or null, required): A signed URL for the dark logo image; null means there is no dark logo.
  - `logo_text` (string or null, required)
  - `default_theme` (string, one of `"system"`, `"light"`, `"dark"`, required): The theme the page shows by default.
  - `logo_alignment` (string, one of `"left"`, `"center"`, required)
  - `description` (string or null, required)
  - `locale` (string or null, required): The language the public page publishes in, null for the deployment default.
  - `public_url` (string or null, required): The URL the page is actually served at, resolved from the route itself.
  - `is_public` (boolean, required)
  - `subscriptions_enabled` (boolean, required)
  - `monitors` (array of string, required)
  - `preview_image_url` (string or null): The URL of the page preview image.
  - `preview_rendered_at` (string or null, required)
  - `preview_render_status` (string or null, one of `"rendering"`, `"completed"`, `"failed"`, `null`, required): Null means never rendered.
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 422: Validation error
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Detach a monitor from a page

`DELETE /status-pages/{statusPage}/monitors/{monitor}`

Removes a monitor from the page.

- URL: `https://api.uptizm.com/v1/status-pages/{statusPage}/monitors/{monitor}`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:write`
- Tag: Status pages
- operationId: `v1.status-pages.monitors.detach`

### Parameters

- `statusPage` (path, string, required): The status page ID
- `monitor` (path, string, required): The monitor ID

### Response 204

No body.

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Upload a page logo

`POST /status-pages/{statusPage}/logo`

Replaces the page's logo with the uploaded image (multipart).

- URL: `https://api.uptizm.com/v1/status-pages/{statusPage}/logo`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:write`
- Tag: Status pages
- operationId: `v1.status-pages.logo.store`

### Parameters

- `statusPage` (path, string, required): The status page ID
- `Idempotency-Key` (header, string): Any unique string per logical request.

### Request body

Content type: `multipart/form-data`.

- `logo` (string, binary, required): Maximum file size: 512 kilobytes.

### Response 200

Content type: `application/json`.

- `data` (StatusPageResource and object, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `slug` (string, required)
  - `domain_mode` (string, one of `"path"`, `"subdomain"`, `"custom"`, required): How the page is addressed, as a string: `path` or `subdomain`.
  - `custom_domain` (string or null, required)
  - `brand_color` (string, required)
  - `logo_url` (string or null, required): A signed URL for the logo image.
  - `dark_logo_url` (string or null, required): A signed URL for the dark logo image; null means there is no dark logo.
  - `logo_text` (string or null, required)
  - `default_theme` (string, one of `"system"`, `"light"`, `"dark"`, required): The theme the page shows by default.
  - `logo_alignment` (string, one of `"left"`, `"center"`, required)
  - `description` (string or null, required)
  - `locale` (string or null, required): The language the public page publishes in, null for the deployment default.
  - `public_url` (string or null, required): The URL the page is actually served at, resolved from the route itself.
  - `is_public` (boolean, required)
  - `subscriptions_enabled` (boolean, required)
  - `monitors` (array of string, required)
  - `preview_image_url` (string or null): The URL of the page preview image.
  - `preview_rendered_at` (string or null, required)
  - `preview_render_status` (string or null, one of `"rendering"`, `"completed"`, `"failed"`, `null`, required): Null means never rendered.
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 422: Validation error
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Remove the page logo

`DELETE /status-pages/{statusPage}/logo`

Removes the logo; the page falls back to its initials.

- URL: `https://api.uptizm.com/v1/status-pages/{statusPage}/logo`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:write`
- Tag: Status pages
- operationId: `v1.status-pages.logo.destroy`

### Parameters

- `statusPage` (path, string, required): The status page ID

### Response 200

Content type: `application/json`.

- `data` (StatusPageResource and object, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `slug` (string, required)
  - `domain_mode` (string, one of `"path"`, `"subdomain"`, `"custom"`, required): How the page is addressed, as a string: `path` or `subdomain`.
  - `custom_domain` (string or null, required)
  - `brand_color` (string, required)
  - `logo_url` (string or null, required): A signed URL for the logo image.
  - `dark_logo_url` (string or null, required): A signed URL for the dark logo image; null means there is no dark logo.
  - `logo_text` (string or null, required)
  - `default_theme` (string, one of `"system"`, `"light"`, `"dark"`, required): The theme the page shows by default.
  - `logo_alignment` (string, one of `"left"`, `"center"`, required)
  - `description` (string or null, required)
  - `locale` (string or null, required): The language the public page publishes in, null for the deployment default.
  - `public_url` (string or null, required): The URL the page is actually served at, resolved from the route itself.
  - `is_public` (boolean, required)
  - `subscriptions_enabled` (boolean, required)
  - `monitors` (array of string, required)
  - `preview_image_url` (string or null): The URL of the page preview image.
  - `preview_rendered_at` (string or null, required)
  - `preview_render_status` (string or null, one of `"rendering"`, `"completed"`, `"failed"`, `null`, required): Null means never rendered.
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Upload a dark-mode logo

`POST /status-pages/{statusPage}/dark-logo`

Replaces the page's dark-mode logo with the uploaded image (multipart).

- URL: `https://api.uptizm.com/v1/status-pages/{statusPage}/dark-logo`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:write`
- Tag: Status pages
- operationId: `v1.status-pages.dark-logo.store`

### Parameters

- `statusPage` (path, string, required): The status page ID
- `Idempotency-Key` (header, string): Any unique string per logical request.

### Request body

Content type: `multipart/form-data`.

- `logo` (string, binary, required): Maximum file size: 512 kilobytes.

### Response 200

Content type: `application/json`.

- `data` (StatusPageResource and object, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `slug` (string, required)
  - `domain_mode` (string, one of `"path"`, `"subdomain"`, `"custom"`, required): How the page is addressed, as a string: `path` or `subdomain`.
  - `custom_domain` (string or null, required)
  - `brand_color` (string, required)
  - `logo_url` (string or null, required): A signed URL for the logo image.
  - `dark_logo_url` (string or null, required): A signed URL for the dark logo image; null means there is no dark logo.
  - `logo_text` (string or null, required)
  - `default_theme` (string, one of `"system"`, `"light"`, `"dark"`, required): The theme the page shows by default.
  - `logo_alignment` (string, one of `"left"`, `"center"`, required)
  - `description` (string or null, required)
  - `locale` (string or null, required): The language the public page publishes in, null for the deployment default.
  - `public_url` (string or null, required): The URL the page is actually served at, resolved from the route itself.
  - `is_public` (boolean, required)
  - `subscriptions_enabled` (boolean, required)
  - `monitors` (array of string, required)
  - `preview_image_url` (string or null): The URL of the page preview image.
  - `preview_rendered_at` (string or null, required)
  - `preview_render_status` (string or null, one of `"rendering"`, `"completed"`, `"failed"`, `null`, required): Null means never rendered.
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 422: Validation error
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Remove the dark-mode logo

`DELETE /status-pages/{statusPage}/dark-logo`

Removes the dark-mode logo and leaves the light one.

- URL: `https://api.uptizm.com/v1/status-pages/{statusPage}/dark-logo`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:write`
- Tag: Status pages
- operationId: `v1.status-pages.dark-logo.destroy`

### Parameters

- `statusPage` (path, string, required): The status page ID

### Response 200

Content type: `application/json`.

- `data` (StatusPageResource and object, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `slug` (string, required)
  - `domain_mode` (string, one of `"path"`, `"subdomain"`, `"custom"`, required): How the page is addressed, as a string: `path` or `subdomain`.
  - `custom_domain` (string or null, required)
  - `brand_color` (string, required)
  - `logo_url` (string or null, required): A signed URL for the logo image.
  - `dark_logo_url` (string or null, required): A signed URL for the dark logo image; null means there is no dark logo.
  - `logo_text` (string or null, required)
  - `default_theme` (string, one of `"system"`, `"light"`, `"dark"`, required): The theme the page shows by default.
  - `logo_alignment` (string, one of `"left"`, `"center"`, required)
  - `description` (string or null, required)
  - `locale` (string or null, required): The language the public page publishes in, null for the deployment default.
  - `public_url` (string or null, required): The URL the page is actually served at, resolved from the route itself.
  - `is_public` (boolean, required)
  - `subscriptions_enabled` (boolean, required)
  - `monitors` (array of string, required)
  - `preview_image_url` (string or null): The URL of the page preview image.
  - `preview_rendered_at` (string or null, required)
  - `preview_render_status` (string or null, one of `"rendering"`, `"completed"`, `"failed"`, `null`, required): Null means never rendered.
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Re-render the page preview

`POST /status-pages/{statusPage}/preview`

Queues a new render of the page's preview image.

- URL: `https://api.uptizm.com/v1/status-pages/{statusPage}/preview`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:write`
- Tag: Status pages
- operationId: `v1.status-pages.preview`

### Parameters

- `statusPage` (path, string, required): The status page ID
- `Idempotency-Key` (header, string): Any unique string per logical request.

### Response 202

No body.

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## List page subscribers

`GET /status-pages/{statusPage}/subscribers`

The page's subscribers, newest first.

- URL: `https://api.uptizm.com/v1/status-pages/{statusPage}/subscribers`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:read`
- Tag: Status pages
- operationId: `v1.status-pages.subscribers.index`

### Parameters

- `statusPage` (path, string, required): The status page ID

### Response 200

Content type: `application/json`.

- `data` (array of StatusPageSubscriberResource, required)
  - `id` (string, required)
  - `email` (string, required)
  - `subscribed_at` (string or null, required)
  - `confirmed` (boolean, required)
  - `newsletter_opt_in` (boolean, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Add a page subscriber

`POST /status-pages/{statusPage}/subscribers`

Adds a subscriber by email. They receive a confirmation mail and get updates only after confirming.

- URL: `https://api.uptizm.com/v1/status-pages/{statusPage}/subscribers`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:write`
- Tag: Status pages
- operationId: `v1.status-pages.subscribers.store`

### Parameters

- `statusPage` (path, string, required): The status page ID
- `Idempotency-Key` (header, string): Any unique string per logical request.

### Request body

Content type: `application/json`.

- `email` (string, email, max length 254, required)

### Response 200

Content type: `application/json`.

- `data` (StatusPageSubscriberResource, required)
  - `id` (string, required)
  - `email` (string, required)
  - `subscribed_at` (string or null, required)
  - `confirmed` (boolean, required)
  - `newsletter_opt_in` (boolean, required)

### Response 201

Content type: `application/json`.

- `data` (StatusPageSubscriberResource, required)
  - `id` (string, required)
  - `email` (string, required)
  - `subscribed_at` (string or null, required)
  - `confirmed` (boolean, required)
  - `newsletter_opt_in` (boolean, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 422: Validation error
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Remove a page subscriber

`DELETE /status-pages/{statusPage}/subscribers/{subscriber}`

Removes a subscriber from the page.

- URL: `https://api.uptizm.com/v1/status-pages/{statusPage}/subscribers/{subscriber}`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `status_pages:write`
- Tag: Status pages
- operationId: `v1.status-pages.subscribers.destroy`

### Parameters

- `statusPage` (path, string, required): The status page ID
- `subscriber` (path, string, required): The subscriber ID

### Response 204

No body.

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md
