> For the complete documentation index, see [llms.txt](https://docs.statuspal.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.statuspal.io/next/platform/api-reference/models.md).

# Models

## The StatusPage object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"StatusPage":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"subdomain":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string"},"website_url":{"type":"string","format":"uri"},"current_status":{"readOnly":true,"type":"string","enum":["operational","degraded","unavailable"],"description":"Highest-severity status derived from active notices and services"},"require_authentication":{"type":"boolean","default":false},"notification_settings":{"$ref":"#/components/schemas/NotificationSettings"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}}},"NotificationSettings":{"type":"object","properties":{"email_enabled":{"type":"boolean","default":true},"slack_enabled":{"type":"boolean","default":false},"rss_feed_enabled":{"type":"boolean","default":true}}}}}}
```

## The StatusPageCreate object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"StatusPageCreate":{"type":"object","required":["subdomain","name","timezone","website_url"],"properties":{"subdomain":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]*[a-z0-9]$"},"name":{"type":"string"},"timezone":{"type":"string"},"website_url":{"type":"string","format":"uri"},"require_authentication":{"type":"boolean","default":false},"notification_settings":{"$ref":"#/components/schemas/NotificationSettings"},"services":{"type":"array","description":"Optional list of services to create alongside the status page. Each entry\nuses the `ServiceCreate` shape (`name`, optional `slug`, optional\n`description`). If `slug` is omitted it is derived from `name` (collisions\nauto-suffixed as `-1`, `-2`, ...). Entries with a blank `name` are skipped\nand exact-duplicate entries deduped.\n\nNote: `container_statuses` is not honored in this nested form because\ncontainers may not exist yet within the same request. To set per-container\nstatuses, create the status page first and then call `POST /services` (or\nupdate statuses via a notice update).\n","items":{"$ref":"#/components/schemas/ServiceCreate"}},"containers":{"type":"array","description":"Optional list of containers (regions). Each entry uses the `ContainerCreate`\nshape (`name`, optional `slug`). If omitted or empty, a single container\nnamed \"Default\" is auto-created so every service has somewhere to live.\nAfter creation, the cross-product of services × containers is materialized\nas ContainerService rows (status `ok`). Entries with a blank `name` are\nskipped and exact-duplicate entries deduped.\n","items":{"$ref":"#/components/schemas/ContainerCreate"}}}},"NotificationSettings":{"type":"object","properties":{"email_enabled":{"type":"boolean","default":true},"slack_enabled":{"type":"boolean","default":false},"rss_feed_enabled":{"type":"boolean","default":true}}},"ServiceCreate":{"type":"object","required":["name"],"properties":{"name":{"type":"string","maxLength":255},"slug":{"type":"string","description":"Optional URL-safe identifier. If omitted, it is auto-generated from `name`.\nIf a non-unique value is provided, a numeric suffix is appended (e.g. `api-1`).\n"},"description":{"type":"string","nullable":true},"container_statuses":{"type":"array","items":{"$ref":"#/components/schemas/ContainerStatusEntry"},"description":"Optional per-container initial statuses. Each entry sets the status for the\nnamed container; any container on the status page that is not listed defaults\nto `ok`. Unknown `container_slug` values or out-of-range `status` values\nreturn 422.\n"}}},"ContainerStatusEntry":{"type":"object","required":["container_slug","status"],"properties":{"container_slug":{"type":"string"},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}},"ContainerCreate":{"type":"object","required":["name"],"properties":{"name":{"type":"string","maxLength":255},"slug":{"type":"string","description":"Optional URL-safe identifier. If omitted, it is auto-generated from `name`.\nIf a non-unique value is provided, a numeric suffix is appended (e.g. `eu-1`).\n"}},"description":"Service membership is managed automatically — when a container is created, every\nexisting service on the status page is assigned to it (full N×M grid). There is\nno API to assign or remove services individually; per-container service status is\nupdated via notice updates.\n"}}}}
```

## The StatusPageUpdate object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"StatusPageUpdate":{"type":"object","properties":{"name":{"type":"string"},"timezone":{"type":"string"},"website_url":{"type":"string","format":"uri"},"require_authentication":{"type":"boolean"},"notification_settings":{"$ref":"#/components/schemas/NotificationSettings"}}},"NotificationSettings":{"type":"object","properties":{"email_enabled":{"type":"boolean","default":true},"slack_enabled":{"type":"boolean","default":false},"rss_feed_enabled":{"type":"boolean","default":true}}}}}}
```

## The NotificationSettings object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"NotificationSettings":{"type":"object","properties":{"email_enabled":{"type":"boolean","default":true},"slack_enabled":{"type":"boolean","default":false},"rss_feed_enabled":{"type":"boolean","default":true}}}}}}
```

## The Service object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"Service":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"slug":{"type":"string","description":"URL-safe identifier. May be supplied on create/update; if omitted, it is\nauto-generated from `name`. Uniqueness is enforced per status page.\n"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"],"description":"Overall worst-case status for this service, computed across all containers.\nRead-only; to change per-container status use `container_statuses` on create\nor a notice update.\n","readOnly":true},"order":{"type":"integer"},"container_statuses":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/ContainerStatusEntry"},"description":"Per-container live status for this service, one entry per container on the status page."},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}}},"ContainerStatusEntry":{"type":"object","required":["container_slug","status"],"properties":{"container_slug":{"type":"string"},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}}}}}
```

## The ServiceCreate object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"ServiceCreate":{"type":"object","required":["name"],"properties":{"name":{"type":"string","maxLength":255},"slug":{"type":"string","description":"Optional URL-safe identifier. If omitted, it is auto-generated from `name`.\nIf a non-unique value is provided, a numeric suffix is appended (e.g. `api-1`).\n"},"description":{"type":"string","nullable":true},"container_statuses":{"type":"array","items":{"$ref":"#/components/schemas/ContainerStatusEntry"},"description":"Optional per-container initial statuses. Each entry sets the status for the\nnamed container; any container on the status page that is not listed defaults\nto `ok`. Unknown `container_slug` values or out-of-range `status` values\nreturn 422.\n"}}},"ContainerStatusEntry":{"type":"object","required":["container_slug","status"],"properties":{"container_slug":{"type":"string"},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}}}}}
```

## The ServiceUpdate object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"ServiceUpdate":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"slug":{"type":"string","description":"Optional. If provided, replaces the URL slug (with uniqueness suffixing if needed)."},"description":{"type":"string","nullable":true},"order":{"type":"integer","description":"Position in the display list (1-indexed). Other services shift accordingly."}}}}}}
```

## The ServiceSummary object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"ServiceSummary":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}}}}}
```

## The ContainerStatusEntry object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"ContainerStatusEntry":{"type":"object","required":["container_slug","status"],"properties":{"container_slug":{"type":"string"},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}}}}}
```

## The Container object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"Container":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"slug":{"type":"string","readOnly":true},"name":{"type":"string"},"services":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/ServiceSummary"},"description":"Services assigned to this container, ordered by display order"},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}}},"ServiceSummary":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}}}}}
```

## The ContainerCreate object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"ContainerCreate":{"type":"object","required":["name"],"properties":{"name":{"type":"string","maxLength":255},"slug":{"type":"string","description":"Optional URL-safe identifier. If omitted, it is auto-generated from `name`.\nIf a non-unique value is provided, a numeric suffix is appended (e.g. `eu-1`).\n"}},"description":"Service membership is managed automatically — when a container is created, every\nexisting service on the status page is assigned to it (full N×M grid). There is\nno API to assign or remove services individually; per-container service status is\nupdated via notice updates.\n"}}}}
```

## The ContainerUpdate object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"ContainerUpdate":{"type":"object","properties":{"name":{"type":"string","maxLength":255}},"description":"Service membership is not editable via this endpoint."}}}}
```

## The Notice object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"Notice":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"notice_type":{"type":"string","enum":["incident","maintenance","info"]},"title":{"type":"string"},"status":{"type":"string","description":"Valid values by `notice_type`:\n- **incident**: `investigating` · `identified` · `monitoring` · `resolved`\n- **maintenance**: `scheduled` · `in_progress` · `verifying` · `completed`\n- **info**: `info`\n"},"severity":{"type":"string","enum":["major","minor"],"nullable":true},"lifecycle":{"type":"string","enum":["pending","active","completed"],"readOnly":true},"published":{"type":"boolean"},"starts_at":{"type":"string","format":"date-time","nullable":true},"ends_at":{"type":"string","format":"date-time","nullable":true},"latest_update":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/NoticeUpdateObject"}]},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}}},"NoticeUpdateObject":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"status":{"type":"string","description":"The notice status at the time of this update"},"body":{"type":"string","description":"HTML content of the update"},"posted_at":{"type":"string","format":"date-time"},"service_statuses":{"type":"array","description":"The service statuses that were set as part of this timeline entry.","items":{"type":"object","properties":{"service_slug":{"type":"string"},"service_name":{"type":"string"},"container_slug":{"type":"string"},"container_name":{"type":"string"},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}}}}}}}}
```

## The NoticeDetail object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"NoticeDetail":{"allOf":[{"$ref":"#/components/schemas/Notice"},{"type":"object","properties":{"updates":{"type":"array","items":{"$ref":"#/components/schemas/NoticeUpdateObject"},"description":"Full timeline, ordered newest-first"}}}]},"Notice":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"notice_type":{"type":"string","enum":["incident","maintenance","info"]},"title":{"type":"string"},"status":{"type":"string","description":"Valid values by `notice_type`:\n- **incident**: `investigating` · `identified` · `monitoring` · `resolved`\n- **maintenance**: `scheduled` · `in_progress` · `verifying` · `completed`\n- **info**: `info`\n"},"severity":{"type":"string","enum":["major","minor"],"nullable":true},"lifecycle":{"type":"string","enum":["pending","active","completed"],"readOnly":true},"published":{"type":"boolean"},"starts_at":{"type":"string","format":"date-time","nullable":true},"ends_at":{"type":"string","format":"date-time","nullable":true},"latest_update":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/NoticeUpdateObject"}]},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}}},"NoticeUpdateObject":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"status":{"type":"string","description":"The notice status at the time of this update"},"body":{"type":"string","description":"HTML content of the update"},"posted_at":{"type":"string","format":"date-time"},"service_statuses":{"type":"array","description":"The service statuses that were set as part of this timeline entry.","items":{"type":"object","properties":{"service_slug":{"type":"string"},"service_name":{"type":"string"},"container_slug":{"type":"string"},"container_name":{"type":"string"},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}}}}}}}}
```

## The NoticeCreate object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"NoticeCreate":{"type":"object","required":["notice_type","title"],"properties":{"notice_type":{"type":"string","enum":["incident","maintenance","info"]},"title":{"type":"string","maxLength":255},"severity":{"type":"string","enum":["major","minor"],"nullable":true},"published":{"type":"boolean","default":false},"starts_at":{"type":"string","format":"date-time","description":"Required for `incident` and `maintenance` types."},"ends_at":{"type":"string","format":"date-time","nullable":true},"initial_update":{"description":"Optional first timeline entry created atomically with the notice.\nRecommended for incidents and maintenance windows.\n","allOf":[{"$ref":"#/components/schemas/NoticeUpdateCreate"}]}}},"NoticeUpdateCreate":{"type":"object","required":["body"],"properties":{"status":{"type":"string","description":"Transitions the notice to this status. Defaults to the current notice status\n(i.e. adds an update without changing status).\n"},"body":{"type":"string","description":"HTML or plain-text content for the update.","maxLength":10000},"posted_at":{"type":"string","format":"date-time","description":"Defaults to current time."},"notify":{"type":"boolean","default":true,"description":"Whether to send email/Slack notifications for this update."},"service_statuses":{"type":"array","items":{"$ref":"#/components/schemas/ServiceStatus"},"description":"Sets the live status of one or more services on the status page. Omit to leave\nall service statuses unchanged.\n"}}},"ServiceStatus":{"type":"object","required":["service_slug","status"],"description":"Sets the status of a service (optionally scoped to a specific container).","properties":{"service_slug":{"type":"string"},"container_slug":{"type":"string","description":"Only needed if you have configured multiple containers and want to target a specific\none (e.g. \"API in EU Region\" vs \"API in US Region\"). Omit to target the default container.\n"},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}}}}}
```

## The NoticePatch object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"NoticePatch":{"type":"object","description":"Edits notice metadata only. Use the Notice Updates resource to change status.","properties":{"title":{"type":"string","maxLength":255},"severity":{"type":"string","enum":["major","minor"],"nullable":true},"published":{"type":"boolean"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The NoticeUpdateObject object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"NoticeUpdateObject":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"status":{"type":"string","description":"The notice status at the time of this update"},"body":{"type":"string","description":"HTML content of the update"},"posted_at":{"type":"string","format":"date-time"},"service_statuses":{"type":"array","description":"The service statuses that were set as part of this timeline entry.","items":{"type":"object","properties":{"service_slug":{"type":"string"},"service_name":{"type":"string"},"container_slug":{"type":"string"},"container_name":{"type":"string"},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}}}}}}}}
```

## The ServiceStatus object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"ServiceStatus":{"type":"object","required":["service_slug","status"],"description":"Sets the status of a service (optionally scoped to a specific container).","properties":{"service_slug":{"type":"string"},"container_slug":{"type":"string","description":"Only needed if you have configured multiple containers and want to target a specific\none (e.g. \"API in EU Region\" vs \"API in US Region\"). Omit to target the default container.\n"},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}}}}}
```

## The NoticeUpdateCreate object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"NoticeUpdateCreate":{"type":"object","required":["body"],"properties":{"status":{"type":"string","description":"Transitions the notice to this status. Defaults to the current notice status\n(i.e. adds an update without changing status).\n"},"body":{"type":"string","description":"HTML or plain-text content for the update.","maxLength":10000},"posted_at":{"type":"string","format":"date-time","description":"Defaults to current time."},"notify":{"type":"boolean","default":true,"description":"Whether to send email/Slack notifications for this update."},"service_statuses":{"type":"array","items":{"$ref":"#/components/schemas/ServiceStatus"},"description":"Sets the live status of one or more services on the status page. Omit to leave\nall service statuses unchanged.\n"}}},"ServiceStatus":{"type":"object","required":["service_slug","status"],"description":"Sets the status of a service (optionally scoped to a specific container).","properties":{"service_slug":{"type":"string"},"container_slug":{"type":"string","description":"Only needed if you have configured multiple containers and want to target a specific\none (e.g. \"API in EU Region\" vs \"API in US Region\"). Omit to target the default container.\n"},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}}}}}
```

## The NoticeUpdateEdit object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"NoticeUpdateEdit":{"type":"object","properties":{"status":{"type":"string"},"body":{"type":"string","maxLength":10000},"posted_at":{"type":"string","format":"date-time"},"notify":{"type":"boolean"},"service_statuses":{"type":"array","items":{"$ref":"#/components/schemas/ServiceStatus"},"description":"Replaces the service statuses recorded for this timeline entry."}}},"ServiceStatus":{"type":"object","required":["service_slug","status"],"description":"Sets the status of a service (optionally scoped to a specific container).","properties":{"service_slug":{"type":"string"},"container_slug":{"type":"string","description":"Only needed if you have configured multiple containers and want to target a specific\none (e.g. \"API in EU Region\" vs \"API in US Region\"). Omit to target the default container.\n"},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}}}}}
```

## The OutgoingWebhook object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"OutgoingWebhook":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"TypeID-prefixed identifier (e.g. `wbk_01h2x...`)"},"name":{"type":"string"},"url":{"type":"string","format":"uri","description":"HTTPS URL that will receive `POST` deliveries."},"events":{"type":"array","items":{"type":"string","enum":["service.status_changed","notice.created","notice.update_posted","notice.updated"]}},"enabled":{"type":"boolean","default":true},"all_status_pages":{"type":"boolean","default":true,"description":"When `true`, the webhook fires for events on every status page in\nthe organization, including pages created later. When `false`, only\nevents on pages listed in `status_page_subdomains` fire.\n"},"status_page_subdomains":{"type":"array","items":{"type":"string"},"description":"Only present when `all_status_pages` is `false`. Subdomains of the\nspecific status pages this webhook is scoped to.\n"},"last_triggered_at":{"type":"string","format":"date-time","nullable":true,"readOnly":true,"description":"Timestamp of the most recent **successful** delivery."},"last_attempted_at":{"type":"string","format":"date-time","nullable":true,"readOnly":true,"description":"Timestamp of the most recent delivery attempt (success or failure)."},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}}}}}}
```

## The OutgoingWebhookWithSecret object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"OutgoingWebhookWithSecret":{"allOf":[{"$ref":"#/components/schemas/OutgoingWebhook"},{"type":"object","required":["secret"],"properties":{"secret":{"type":"string","description":"Plaintext signing secret (`whs_…`). Returned **only** in responses\nto create and regenerate_secret. Store it immediately — it is not\nretrievable later.\n"}}}]},"OutgoingWebhook":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"TypeID-prefixed identifier (e.g. `wbk_01h2x...`)"},"name":{"type":"string"},"url":{"type":"string","format":"uri","description":"HTTPS URL that will receive `POST` deliveries."},"events":{"type":"array","items":{"type":"string","enum":["service.status_changed","notice.created","notice.update_posted","notice.updated"]}},"enabled":{"type":"boolean","default":true},"all_status_pages":{"type":"boolean","default":true,"description":"When `true`, the webhook fires for events on every status page in\nthe organization, including pages created later. When `false`, only\nevents on pages listed in `status_page_subdomains` fire.\n"},"status_page_subdomains":{"type":"array","items":{"type":"string"},"description":"Only present when `all_status_pages` is `false`. Subdomains of the\nspecific status pages this webhook is scoped to.\n"},"last_triggered_at":{"type":"string","format":"date-time","nullable":true,"readOnly":true,"description":"Timestamp of the most recent **successful** delivery."},"last_attempted_at":{"type":"string","format":"date-time","nullable":true,"readOnly":true,"description":"Timestamp of the most recent delivery attempt (success or failure)."},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}}}}}}
```

## The OutgoingWebhookCreate object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"OutgoingWebhookCreate":{"type":"object","required":["name","url","events"],"properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string","enum":["service.status_changed","notice.created","notice.update_posted","notice.updated"]}},"enabled":{"type":"boolean","default":true},"all_status_pages":{"type":"boolean","default":true},"status_page_subdomains":{"type":"array","description":"Required when `all_status_pages` is `false`. Subdomains of the\nstatus pages this webhook should fire for. Unknown subdomains\ncause a `422`.\n","items":{"type":"string"}}}}}}}
```

## The OutgoingWebhookUpdate object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"OutgoingWebhookUpdate":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string","enum":["service.status_changed","notice.created","notice.update_posted","notice.updated"]}},"enabled":{"type":"boolean"},"all_status_pages":{"type":"boolean"},"status_page_subdomains":{"type":"array","items":{"type":"string"}}}}}}}
```

## The WebhookEventStatusPage object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"WebhookEventStatusPage":{"type":"object","description":"The status page on which the event occurred (embedded in every event envelope). The\n`subdomain` is the public identifier — use it to look up the page via the management API.\n","required":["subdomain","name","url"],"properties":{"subdomain":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","format":"uri","description":"Canonical public URL of the status page (custom domain when configured, otherwise the `*.statuspal.io` subdomain)."}}}}}}
```

## The WebhookEnvelope object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"WebhookEnvelope":{"type":"object","description":"Shared envelope for every outbound webhook event. Concrete events extend this via `allOf` and pin `event` / `data` to their specific shapes.","required":["event","occurred_at","status_page","data"],"properties":{"event":{"type":"string","description":"The event name. Always matches the `X-StatusPal-Event` header."},"occurred_at":{"type":"string","format":"date-time","description":"ISO-8601 timestamp of when the event was emitted (not when it was delivered)."},"status_page":{"$ref":"#/components/schemas/WebhookEventStatusPage"},"data":{"type":"object","description":"Event-specific payload — see per-event schemas."}}},"WebhookEventStatusPage":{"type":"object","description":"The status page on which the event occurred (embedded in every event envelope). The\n`subdomain` is the public identifier — use it to look up the page via the management API.\n","required":["subdomain","name","url"],"properties":{"subdomain":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","format":"uri","description":"Canonical public URL of the status page (custom domain when configured, otherwise the `*.statuspal.io` subdomain)."}}}}}}
```

## The ServiceStatusChangedData object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"ServiceStatusChangedData":{"type":"object","required":["service","container","old_status","new_status"],"properties":{"service":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string","description":"Unique slug for the service within its status page."},"name":{"type":"string"}}},"container":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string","description":"Unique slug for the container within its status page."},"name":{"type":"string"}}},"old_status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]},"new_status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}}}}}
```

## The ServiceStatusChangedEvent object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"ServiceStatusChangedEvent":{"description":"Emitted when a `ContainerService.status` transitions to a different value. Naturally rate-limited — same-value updates do not fire this event.","allOf":[{"$ref":"#/components/schemas/WebhookEnvelope"},{"type":"object","required":["event","data"],"properties":{"event":{"type":"string","enum":["service.status_changed"]},"data":{"$ref":"#/components/schemas/ServiceStatusChangedData"}}}]},"WebhookEnvelope":{"type":"object","description":"Shared envelope for every outbound webhook event. Concrete events extend this via `allOf` and pin `event` / `data` to their specific shapes.","required":["event","occurred_at","status_page","data"],"properties":{"event":{"type":"string","description":"The event name. Always matches the `X-StatusPal-Event` header."},"occurred_at":{"type":"string","format":"date-time","description":"ISO-8601 timestamp of when the event was emitted (not when it was delivered)."},"status_page":{"$ref":"#/components/schemas/WebhookEventStatusPage"},"data":{"type":"object","description":"Event-specific payload — see per-event schemas."}}},"WebhookEventStatusPage":{"type":"object","description":"The status page on which the event occurred (embedded in every event envelope). The\n`subdomain` is the public identifier — use it to look up the page via the management API.\n","required":["subdomain","name","url"],"properties":{"subdomain":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","format":"uri","description":"Canonical public URL of the status page (custom domain when configured, otherwise the `*.statuspal.io` subdomain)."}}},"ServiceStatusChangedData":{"type":"object","required":["service","container","old_status","new_status"],"properties":{"service":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string","description":"Unique slug for the service within its status page."},"name":{"type":"string"}}},"container":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string","description":"Unique slug for the container within its status page."},"name":{"type":"string"}}},"old_status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]},"new_status":{"type":"string","enum":["ok","minor","major","critical","maintenance"]}}}}}}
```

## The WebhookNotice object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"WebhookNotice":{"type":"object","description":"Full notice shape, used in `notice.created` events.","required":["id","title","type","status"],"properties":{"id":{"type":"string","description":"TypeID, prefix `ntc_`"},"title":{"type":"string"},"type":{"type":"string","enum":["incident","maintenance","info"]},"status":{"type":"string","description":"One of the allowed statuses for the notice's type. Incidents:\n`investigating`, `identified`, `monitoring`, `resolved`. Planned\nmaintenance: `scheduled`, `in_progress`, `verifying`, `completed`.\nEssential maintenance: `in_progress`, `verifying`, `completed`.\nInfo notices: `info`.\n"},"severity":{"type":"string","enum":["major","minor"],"nullable":true},"published":{"type":"boolean"},"retroactive":{"type":"boolean"},"lifecycle":{"type":"string","enum":["active","pending","completed"],"nullable":true},"starts_at":{"type":"string","format":"date-time","nullable":true},"ends_at":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The NoticeCreatedData object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"NoticeCreatedData":{"type":"object","required":["notice"],"properties":{"notice":{"$ref":"#/components/schemas/WebhookNotice"}}},"WebhookNotice":{"type":"object","description":"Full notice shape, used in `notice.created` events.","required":["id","title","type","status"],"properties":{"id":{"type":"string","description":"TypeID, prefix `ntc_`"},"title":{"type":"string"},"type":{"type":"string","enum":["incident","maintenance","info"]},"status":{"type":"string","description":"One of the allowed statuses for the notice's type. Incidents:\n`investigating`, `identified`, `monitoring`, `resolved`. Planned\nmaintenance: `scheduled`, `in_progress`, `verifying`, `completed`.\nEssential maintenance: `in_progress`, `verifying`, `completed`.\nInfo notices: `info`.\n"},"severity":{"type":"string","enum":["major","minor"],"nullable":true},"published":{"type":"boolean"},"retroactive":{"type":"boolean"},"lifecycle":{"type":"string","enum":["active","pending","completed"],"nullable":true},"starts_at":{"type":"string","format":"date-time","nullable":true},"ends_at":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The NoticeCreatedEvent object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"NoticeCreatedEvent":{"description":"Emitted whenever a new notice is created — including draft, scheduled, and retroactive notices. Filter on `data.notice.published` / `retroactive` / `type` if you only want a subset.","allOf":[{"$ref":"#/components/schemas/WebhookEnvelope"},{"type":"object","required":["event","data"],"properties":{"event":{"type":"string","enum":["notice.created"]},"data":{"$ref":"#/components/schemas/NoticeCreatedData"}}}]},"WebhookEnvelope":{"type":"object","description":"Shared envelope for every outbound webhook event. Concrete events extend this via `allOf` and pin `event` / `data` to their specific shapes.","required":["event","occurred_at","status_page","data"],"properties":{"event":{"type":"string","description":"The event name. Always matches the `X-StatusPal-Event` header."},"occurred_at":{"type":"string","format":"date-time","description":"ISO-8601 timestamp of when the event was emitted (not when it was delivered)."},"status_page":{"$ref":"#/components/schemas/WebhookEventStatusPage"},"data":{"type":"object","description":"Event-specific payload — see per-event schemas."}}},"WebhookEventStatusPage":{"type":"object","description":"The status page on which the event occurred (embedded in every event envelope). The\n`subdomain` is the public identifier — use it to look up the page via the management API.\n","required":["subdomain","name","url"],"properties":{"subdomain":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","format":"uri","description":"Canonical public URL of the status page (custom domain when configured, otherwise the `*.statuspal.io` subdomain)."}}},"NoticeCreatedData":{"type":"object","required":["notice"],"properties":{"notice":{"$ref":"#/components/schemas/WebhookNotice"}}},"WebhookNotice":{"type":"object","description":"Full notice shape, used in `notice.created` events.","required":["id","title","type","status"],"properties":{"id":{"type":"string","description":"TypeID, prefix `ntc_`"},"title":{"type":"string"},"type":{"type":"string","enum":["incident","maintenance","info"]},"status":{"type":"string","description":"One of the allowed statuses for the notice's type. Incidents:\n`investigating`, `identified`, `monitoring`, `resolved`. Planned\nmaintenance: `scheduled`, `in_progress`, `verifying`, `completed`.\nEssential maintenance: `in_progress`, `verifying`, `completed`.\nInfo notices: `info`.\n"},"severity":{"type":"string","enum":["major","minor"],"nullable":true},"published":{"type":"boolean"},"retroactive":{"type":"boolean"},"lifecycle":{"type":"string","enum":["active","pending","completed"],"nullable":true},"starts_at":{"type":"string","format":"date-time","nullable":true},"ends_at":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The WebhookNoticeSummary object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"WebhookNoticeSummary":{"type":"object","description":"Trimmed notice shape used inside `notice.update_posted` events (only the fields needed to identify the parent notice).","required":["id","title","type","status"],"properties":{"id":{"type":"string","description":"TypeID, prefix `ntc_`"},"title":{"type":"string"},"type":{"type":"string","enum":["incident","maintenance","info"]},"status":{"type":"string"}}}}}}
```

## The WebhookNoticeUpdate object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"WebhookNoticeUpdate":{"type":"object","required":["id","body","status"],"properties":{"id":{"type":"string","description":"TypeID, prefix `upd_`"},"body":{"type":"string","description":"HTML body of the update. Receivers should sanitize before rendering. Plaintext is **not** included."},"status":{"type":"string","description":"Same enum semantics as `WebhookNotice.status`, plus `update` (a comment-only update that does not change the parent notice's status)."},"posted_at":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The WebhookNoticeUpdateServiceStatus object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"WebhookNoticeUpdateServiceStatus":{"type":"object","description":"One container-service status change carried by a `notice.update_posted` event.","required":["service","container","status"],"properties":{"service":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"container":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"],"description":"The new status the service was set to as part of this update."}}}}}}
```

## The NoticeUpdatePostedData object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"NoticeUpdatePostedData":{"type":"object","required":["notice","update","service_statuses"],"properties":{"notice":{"$ref":"#/components/schemas/WebhookNoticeSummary"},"update":{"$ref":"#/components/schemas/WebhookNoticeUpdate"},"service_statuses":{"type":"array","description":"Container-service status changes that were carried by this notice update. Empty when\nthe update was status-only / a comment / a maintenance update that left services as\n\"operational\". Receivers wanting old→new status pairs can correlate with parallel\n`service.status_changed` events sharing the same `occurred_at`.\n","items":{"$ref":"#/components/schemas/WebhookNoticeUpdateServiceStatus"}}}},"WebhookNoticeSummary":{"type":"object","description":"Trimmed notice shape used inside `notice.update_posted` events (only the fields needed to identify the parent notice).","required":["id","title","type","status"],"properties":{"id":{"type":"string","description":"TypeID, prefix `ntc_`"},"title":{"type":"string"},"type":{"type":"string","enum":["incident","maintenance","info"]},"status":{"type":"string"}}},"WebhookNoticeUpdate":{"type":"object","required":["id","body","status"],"properties":{"id":{"type":"string","description":"TypeID, prefix `upd_`"},"body":{"type":"string","description":"HTML body of the update. Receivers should sanitize before rendering. Plaintext is **not** included."},"status":{"type":"string","description":"Same enum semantics as `WebhookNotice.status`, plus `update` (a comment-only update that does not change the parent notice's status)."},"posted_at":{"type":"string","format":"date-time","nullable":true}}},"WebhookNoticeUpdateServiceStatus":{"type":"object","description":"One container-service status change carried by a `notice.update_posted` event.","required":["service","container","status"],"properties":{"service":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"container":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"],"description":"The new status the service was set to as part of this update."}}}}}}
```

## The NoticeUpdatePostedEvent object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"NoticeUpdatePostedEvent":{"description":"Emitted when a new timeline entry is posted to an existing notice.","allOf":[{"$ref":"#/components/schemas/WebhookEnvelope"},{"type":"object","required":["event","data"],"properties":{"event":{"type":"string","enum":["notice.update_posted"]},"data":{"$ref":"#/components/schemas/NoticeUpdatePostedData"}}}]},"WebhookEnvelope":{"type":"object","description":"Shared envelope for every outbound webhook event. Concrete events extend this via `allOf` and pin `event` / `data` to their specific shapes.","required":["event","occurred_at","status_page","data"],"properties":{"event":{"type":"string","description":"The event name. Always matches the `X-StatusPal-Event` header."},"occurred_at":{"type":"string","format":"date-time","description":"ISO-8601 timestamp of when the event was emitted (not when it was delivered)."},"status_page":{"$ref":"#/components/schemas/WebhookEventStatusPage"},"data":{"type":"object","description":"Event-specific payload — see per-event schemas."}}},"WebhookEventStatusPage":{"type":"object","description":"The status page on which the event occurred (embedded in every event envelope). The\n`subdomain` is the public identifier — use it to look up the page via the management API.\n","required":["subdomain","name","url"],"properties":{"subdomain":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","format":"uri","description":"Canonical public URL of the status page (custom domain when configured, otherwise the `*.statuspal.io` subdomain)."}}},"NoticeUpdatePostedData":{"type":"object","required":["notice","update","service_statuses"],"properties":{"notice":{"$ref":"#/components/schemas/WebhookNoticeSummary"},"update":{"$ref":"#/components/schemas/WebhookNoticeUpdate"},"service_statuses":{"type":"array","description":"Container-service status changes that were carried by this notice update. Empty when\nthe update was status-only / a comment / a maintenance update that left services as\n\"operational\". Receivers wanting old→new status pairs can correlate with parallel\n`service.status_changed` events sharing the same `occurred_at`.\n","items":{"$ref":"#/components/schemas/WebhookNoticeUpdateServiceStatus"}}}},"WebhookNoticeSummary":{"type":"object","description":"Trimmed notice shape used inside `notice.update_posted` events (only the fields needed to identify the parent notice).","required":["id","title","type","status"],"properties":{"id":{"type":"string","description":"TypeID, prefix `ntc_`"},"title":{"type":"string"},"type":{"type":"string","enum":["incident","maintenance","info"]},"status":{"type":"string"}}},"WebhookNoticeUpdate":{"type":"object","required":["id","body","status"],"properties":{"id":{"type":"string","description":"TypeID, prefix `upd_`"},"body":{"type":"string","description":"HTML body of the update. Receivers should sanitize before rendering. Plaintext is **not** included."},"status":{"type":"string","description":"Same enum semantics as `WebhookNotice.status`, plus `update` (a comment-only update that does not change the parent notice's status)."},"posted_at":{"type":"string","format":"date-time","nullable":true}}},"WebhookNoticeUpdateServiceStatus":{"type":"object","description":"One container-service status change carried by a `notice.update_posted` event.","required":["service","container","status"],"properties":{"service":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"container":{"type":"object","required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"status":{"type":"string","enum":["ok","minor","major","critical","maintenance"],"description":"The new status the service was set to as part of this update."}}}}}}
```

## The NoticeUpdatedData object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"NoticeUpdatedData":{"type":"object","required":["notice","changes"],"properties":{"notice":{"$ref":"#/components/schemas/WebhookNotice"},"changes":{"type":"object","description":"Map of changed field name → `[old_value, new_value]`. Only fields in the server-side\ntracked-fields list appear here. Datetime fields are ISO-8601 strings; other fields\nkeep their native JSON type.\n","additionalProperties":{"type":"array","minItems":2,"maxItems":2,"items":{}}}}},"WebhookNotice":{"type":"object","description":"Full notice shape, used in `notice.created` events.","required":["id","title","type","status"],"properties":{"id":{"type":"string","description":"TypeID, prefix `ntc_`"},"title":{"type":"string"},"type":{"type":"string","enum":["incident","maintenance","info"]},"status":{"type":"string","description":"One of the allowed statuses for the notice's type. Incidents:\n`investigating`, `identified`, `monitoring`, `resolved`. Planned\nmaintenance: `scheduled`, `in_progress`, `verifying`, `completed`.\nEssential maintenance: `in_progress`, `verifying`, `completed`.\nInfo notices: `info`.\n"},"severity":{"type":"string","enum":["major","minor"],"nullable":true},"published":{"type":"boolean"},"retroactive":{"type":"boolean"},"lifecycle":{"type":"string","enum":["active","pending","completed"],"nullable":true},"starts_at":{"type":"string","format":"date-time","nullable":true},"ends_at":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The NoticeUpdatedEvent object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"NoticeUpdatedEvent":{"description":"Emitted when an existing notice's tracked fields change (status, title, severity, etc.) —\neither directly via the management API or as a side-effect of a timeline update flipping\nthe parent notice's status. In the latter case, both `notice.update_posted` and\n`notice.updated` fire.\n","allOf":[{"$ref":"#/components/schemas/WebhookEnvelope"},{"type":"object","required":["event","data"],"properties":{"event":{"type":"string","enum":["notice.updated"]},"data":{"$ref":"#/components/schemas/NoticeUpdatedData"}}}]},"WebhookEnvelope":{"type":"object","description":"Shared envelope for every outbound webhook event. Concrete events extend this via `allOf` and pin `event` / `data` to their specific shapes.","required":["event","occurred_at","status_page","data"],"properties":{"event":{"type":"string","description":"The event name. Always matches the `X-StatusPal-Event` header."},"occurred_at":{"type":"string","format":"date-time","description":"ISO-8601 timestamp of when the event was emitted (not when it was delivered)."},"status_page":{"$ref":"#/components/schemas/WebhookEventStatusPage"},"data":{"type":"object","description":"Event-specific payload — see per-event schemas."}}},"WebhookEventStatusPage":{"type":"object","description":"The status page on which the event occurred (embedded in every event envelope). The\n`subdomain` is the public identifier — use it to look up the page via the management API.\n","required":["subdomain","name","url"],"properties":{"subdomain":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","format":"uri","description":"Canonical public URL of the status page (custom domain when configured, otherwise the `*.statuspal.io` subdomain)."}}},"NoticeUpdatedData":{"type":"object","required":["notice","changes"],"properties":{"notice":{"$ref":"#/components/schemas/WebhookNotice"},"changes":{"type":"object","description":"Map of changed field name → `[old_value, new_value]`. Only fields in the server-side\ntracked-fields list appear here. Datetime fields are ISO-8601 strings; other fields\nkeep their native JSON type.\n","additionalProperties":{"type":"array","minItems":2,"maxItems":2,"items":{}}}}},"WebhookNotice":{"type":"object","description":"Full notice shape, used in `notice.created` events.","required":["id","title","type","status"],"properties":{"id":{"type":"string","description":"TypeID, prefix `ntc_`"},"title":{"type":"string"},"type":{"type":"string","enum":["incident","maintenance","info"]},"status":{"type":"string","description":"One of the allowed statuses for the notice's type. Incidents:\n`investigating`, `identified`, `monitoring`, `resolved`. Planned\nmaintenance: `scheduled`, `in_progress`, `verifying`, `completed`.\nEssential maintenance: `in_progress`, `verifying`, `completed`.\nInfo notices: `info`.\n"},"severity":{"type":"string","enum":["major","minor"],"nullable":true},"published":{"type":"boolean"},"retroactive":{"type":"boolean"},"lifecycle":{"type":"string","enum":["active","pending","completed"],"nullable":true},"starts_at":{"type":"string","format":"date-time","nullable":true},"ends_at":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The PaginationMeta object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"PaginationMeta":{"type":"object","properties":{"current_page":{"type":"integer"},"per_page":{"type":"integer"},"total_count":{"type":"integer"},"total_pages":{"type":"integer"}}}}}}
```

## The Error object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}
```

## The SignupCreate object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"SignupCreate":{"type":"object","required":["email","org_name","first_name","last_name"],"properties":{"email":{"type":"string","format":"email","description":"Admin user's email. Must be a custom-domain address — free providers (gmail.com, yahoo.com, outlook.com, …) are rejected."},"org_name":{"type":"string","description":"Name of the organization to create."},"first_name":{"type":"string"},"last_name":{"type":"string"}}}}}}
```

## The Signup object

```json
{"openapi":"3.1.0","info":{"title":"StatusPal Public API","version":"1"},"components":{"schemas":{"Signup":{"type":"object","properties":{"status":{"type":"string","enum":["pending_activation","active"],"description":"`pending_activation` until an administrator activates the account; the `api_key` only works once the account is active."},"api_key":{"type":"string","description":"Bearer token for the new organization. Returned once — store it securely."},"organization":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}}}}
```
