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

# Components

Create, read and update the components shown on a status page. Components nest one level deep: set a component's `parent` to another component's id to nest it there.

## Get all components in a status page

> Gets a list of all the components linked to a status page. The list is flat: every component carries a \`parent\` (the id it is nested under, or \`null\`) and an \`order\`, so you can rebuild the nesting yourself. Rows come back parent-first, with each parent's nested components directly after it.

```json
{"openapi":"3.1.0","info":{"title":"Spike API","version":"1.0.0"},"tags":[{"name":"Components","description":"Create, read and update the components shown on a status page. Components nest one level deep: set a component's `parent` to another component's id to nest it there."}],"servers":[{"url":"https://statuspage.spike.sh","description":"Status page server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the `x-api-key` header."}},"schemas":{"StatusPageComponent":{"type":"object","description":"A component on a status page. Components can be nested one level deep: a top-level component may have nested components under it, and a nested component cannot itself have anything nested under it.","properties":{"_id":{"type":"string","description":"The component's id. Use it as the `parent` of a nested component."},"name":{"type":"string","description":"The component's name, as it appears on the status page."},"desc":{"type":"string","description":"Free-text description shown under the name."},"status":{"type":"string","enum":["operational","degraded-performance","partial-outage","critical-outage","planned-maintenance"],"description":"The component's own status. Any other value is stored but will not reflect on the status page."},"effectiveStatus":{"type":"string","enum":["operational","degraded-performance","partial-outage","critical-outage","planned-maintenance"],"description":"Read-only, computed. The status the status page actually shows for this component: for a top-level component with nested components it is the worst of its own `status` and its nested components' statuses; for everything else it equals `status`. Ranked, least to most severe: `operational`, `planned-maintenance`, `degraded-performance`, `partial-outage`, `critical-outage`."},"parent":{"type":["string","null"],"description":"The id of the component this one is nested under, or `null` when it is top-level. Send it on create or update to nest a component. The parent must already exist, belong to the same status page, and be top-level itself."},"order":{"type":"number","description":"Sort position among siblings — top-level components share one sequence, and each parent's nested components have their own. Rows are returned parent-first with each parent's nested components directly after it, both sorted by `order`."},"startDate":{"type":["string","null"],"description":"The date from which uptime is tracked for this component."},"statusPage":{"type":"string","description":"The id of the status page this component belongs to."}}},"Error":{"type":"object","properties":{"message":{"type":"string","description":"Error message describing the problem"},"error":{"type":"string","description":"Error type or code"},"success":{"type":"boolean","description":"Present on the endpoints whose handlers include it (for example the API-key filter and the public on-call routes). Always `false` on an error."},"valid_api":{"type":"boolean","description":"Present on `401`s produced by the session/API-key filter. `false` means the supplied `x-api-key` was not recognised."},"statusCode":{"type":"number","description":"Echo of the HTTP status, present on a few permission errors."},"status":{"type":"boolean","description":"Present on the status-page component write endpoints, which answer a rejected write `{status: false, error, message}`. Always `false` on an error."}}}}},"paths":{"/api/status-page/{status_page_id}/component":{"get":{"operationId":"getApiStatusPageByStatusPageIdComponent","summary":"Get all components in a status page","description":"Gets a list of all the components linked to a status page. The list is flat: every component carries a `parent` (the id it is nested under, or `null`) and an `order`, so you can rebuild the nesting yourself. Rows come back parent-first, with each parent's nested components directly after it.","tags":["Components"],"parameters":[{"name":"x-api-key","in":"header","required":true,"schema":{"type":"string"},"description":"Your API key. Find it in your Spike dashboard under Settings > API."},{"name":"status_page_id","in":"path","required":true,"schema":{"type":"string"},"description":"status_page_id parameter"},{"name":"page","in":"query","required":false,"schema":{"type":"number"},"description":"Optional. Omit it to get every component on the status page, which is what you want when you are rebuilding the nesting — a narrowed response can separate a parent from the components nested under it. Pass a page number to read `perPage` at a time; `total` tells you when to stop. A missing, zero, negative or non-numeric value is treated as \"no page asked for\" and returns the whole set."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"components":{"type":"array","items":{"$ref":"#/components/schemas/StatusPageComponent"}},"total":{"type":"number","description":"How many components the status page has in total, whether or not `page` narrowed the response."},"page":{"type":["number","null"],"description":"The page returned, or `null` when the whole set was returned because no usable `page` was asked for."},"perPage":{"type":"number","description":"How many components a page holds. Read it rather than hardcoding it."}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## Get a component

> Get details of a status page component, including its \`parent\` (the component it is nested under, or \`null\`) and its \`order\`.

```json
{"openapi":"3.1.0","info":{"title":"Spike API","version":"1.0.0"},"tags":[{"name":"Components","description":"Create, read and update the components shown on a status page. Components nest one level deep: set a component's `parent` to another component's id to nest it there."}],"servers":[{"url":"https://statuspage.spike.sh","description":"Status page server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the `x-api-key` header."}},"schemas":{"StatusPageComponent":{"type":"object","description":"A component on a status page. Components can be nested one level deep: a top-level component may have nested components under it, and a nested component cannot itself have anything nested under it.","properties":{"_id":{"type":"string","description":"The component's id. Use it as the `parent` of a nested component."},"name":{"type":"string","description":"The component's name, as it appears on the status page."},"desc":{"type":"string","description":"Free-text description shown under the name."},"status":{"type":"string","enum":["operational","degraded-performance","partial-outage","critical-outage","planned-maintenance"],"description":"The component's own status. Any other value is stored but will not reflect on the status page."},"effectiveStatus":{"type":"string","enum":["operational","degraded-performance","partial-outage","critical-outage","planned-maintenance"],"description":"Read-only, computed. The status the status page actually shows for this component: for a top-level component with nested components it is the worst of its own `status` and its nested components' statuses; for everything else it equals `status`. Ranked, least to most severe: `operational`, `planned-maintenance`, `degraded-performance`, `partial-outage`, `critical-outage`."},"parent":{"type":["string","null"],"description":"The id of the component this one is nested under, or `null` when it is top-level. Send it on create or update to nest a component. The parent must already exist, belong to the same status page, and be top-level itself."},"order":{"type":"number","description":"Sort position among siblings — top-level components share one sequence, and each parent's nested components have their own. Rows are returned parent-first with each parent's nested components directly after it, both sorted by `order`."},"startDate":{"type":["string","null"],"description":"The date from which uptime is tracked for this component."},"statusPage":{"type":"string","description":"The id of the status page this component belongs to."}}},"Error":{"type":"object","properties":{"message":{"type":"string","description":"Error message describing the problem"},"error":{"type":"string","description":"Error type or code"},"success":{"type":"boolean","description":"Present on the endpoints whose handlers include it (for example the API-key filter and the public on-call routes). Always `false` on an error."},"valid_api":{"type":"boolean","description":"Present on `401`s produced by the session/API-key filter. `false` means the supplied `x-api-key` was not recognised."},"statusCode":{"type":"number","description":"Echo of the HTTP status, present on a few permission errors."},"status":{"type":"boolean","description":"Present on the status-page component write endpoints, which answer a rejected write `{status: false, error, message}`. Always `false` on an error."}}}}},"paths":{"/api/status-page/{status_page_id}/component/{component_id}":{"get":{"operationId":"getApiStatusPageByStatusPageIdComponentByComponentId","summary":"Get a component","description":"Get details of a status page component, including its `parent` (the component it is nested under, or `null`) and its `order`.","tags":["Components"],"parameters":[{"name":"x-api-key","in":"header","required":true,"schema":{"type":"string"},"description":"Your API key. Find it in your Spike dashboard under Settings > API."},{"name":"status_page_id","in":"path","required":true,"schema":{"type":"string"},"description":"status_page_id parameter"},{"name":"component_id","in":"path","required":true,"schema":{"type":"string"},"description":"component_id parameter"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"spectrum":{"type":"array","description":"The component's 90-day uptime bars.","items":{"type":"object"}},"incidents":{"type":"array","description":"Incidents that affected this component.","items":{"type":"object"}}},"allOf":[{"$ref":"#/components/schemas/StatusPageComponent"}]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## Create a component

> Create a new component for a status page\
> \
> \`\`\`\
> {\
> &#x9;"components": \[\
> &#x9;	{\
> &#x9;		"name": "title of the component",\
> &#x9;		"desc": "Description of hthe component",\
> &#x9;		"status": "degraded-performance",\
> &#x9;		"private": true\
> &#x9;	}\
> &#x9;]\
> }\
> \`\`\`\
> \
> You can create multiple components at once.\
> \
> \### Params:\
> \
> \`name\*\`: Title of the component.\
> \
> \`desc\*\`: Updated description\
> \
> \`status\`: Status of the component valid choices for status are \`operational\`, \`degraded-performance\`, \`partial-outage\`, \`critical-outage\` any other choice will not reflect on the status page\
> \
> \`private\`: You can choose to private or public the status page based on this flag\
> \
> \`parent\`: The id of the component this one nests under. Omit it (or send \`null\`) for a top-level component.\
> \
> \`order\`: Sort position among its siblings.\
> \
> \\\* Required\
> \
> \### Nested components\
> \
> To nest one component under another, create the parent first and then create the child with the parent's \`\_id\` as its \`parent\`. There is no separate endpoint and no nested request body — the \`parent\` field is what makes a component nested.\
> \
> \`\`\`\
> \# 1. create the parent, and read its \_id from the response\
> {"components": \[{"name": "Asia"}]}\
> \
> \# 2. create the components nested under it\
> {\
> &#x9;"components": \[\
> &#x9;	{"name": "India", "parent": "66c1d2e3f4a5b60718293a4c", "order": 0},\
> &#x9;	{"name": "Japan", "parent": "66c1d2e3f4a5b60718293a4c", "order": 1}\
> &#x9;]\
> }\
> \`\`\`\
> \
> Rules, each answered as a \`400\` with \`error: invalid\_parent\`:\
> \
> \* The parent must already exist and belong to the same status page.\
> \* Nesting is one level deep — you cannot nest under a component that is itself nested.\
> \* A component cannot be its own parent.\
> \
> Every row in \`components\` is validated before any of them is saved, so one bad row writes nothing.\
> \
> A parent's status is not something you set: the status page shows the worst of the parent's own \`status\` and the statuses of everything nested under it. Read it back as \`effectiveStatus\` on the list endpoint.

````json
{"openapi":"3.1.0","info":{"title":"Spike API","version":"1.0.0"},"tags":[{"name":"Components","description":"Create, read and update the components shown on a status page. Components nest one level deep: set a component's `parent` to another component's id to nest it there."}],"servers":[{"url":"https://statuspage.spike.sh","description":"Status page server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the `x-api-key` header."}},"schemas":{"StatusPageComponent":{"type":"object","description":"A component on a status page. Components can be nested one level deep: a top-level component may have nested components under it, and a nested component cannot itself have anything nested under it.","properties":{"_id":{"type":"string","description":"The component's id. Use it as the `parent` of a nested component."},"name":{"type":"string","description":"The component's name, as it appears on the status page."},"desc":{"type":"string","description":"Free-text description shown under the name."},"status":{"type":"string","enum":["operational","degraded-performance","partial-outage","critical-outage","planned-maintenance"],"description":"The component's own status. Any other value is stored but will not reflect on the status page."},"effectiveStatus":{"type":"string","enum":["operational","degraded-performance","partial-outage","critical-outage","planned-maintenance"],"description":"Read-only, computed. The status the status page actually shows for this component: for a top-level component with nested components it is the worst of its own `status` and its nested components' statuses; for everything else it equals `status`. Ranked, least to most severe: `operational`, `planned-maintenance`, `degraded-performance`, `partial-outage`, `critical-outage`."},"parent":{"type":["string","null"],"description":"The id of the component this one is nested under, or `null` when it is top-level. Send it on create or update to nest a component. The parent must already exist, belong to the same status page, and be top-level itself."},"order":{"type":"number","description":"Sort position among siblings — top-level components share one sequence, and each parent's nested components have their own. Rows are returned parent-first with each parent's nested components directly after it, both sorted by `order`."},"startDate":{"type":["string","null"],"description":"The date from which uptime is tracked for this component."},"statusPage":{"type":"string","description":"The id of the status page this component belongs to."}}},"Error":{"type":"object","properties":{"message":{"type":"string","description":"Error message describing the problem"},"error":{"type":"string","description":"Error type or code"},"success":{"type":"boolean","description":"Present on the endpoints whose handlers include it (for example the API-key filter and the public on-call routes). Always `false` on an error."},"valid_api":{"type":"boolean","description":"Present on `401`s produced by the session/API-key filter. `false` means the supplied `x-api-key` was not recognised."},"statusCode":{"type":"number","description":"Echo of the HTTP status, present on a few permission errors."},"status":{"type":"boolean","description":"Present on the status-page component write endpoints, which answer a rejected write `{status: false, error, message}`. Always `false` on an error."}}}}},"paths":{"/api/status-page/{status_page_id}/component/create":{"post":{"operationId":"postApiStatusPageByStatusPageIdComponentCreate","summary":"Create a component","description":"Create a new component for a status page\n\n```\n{\n\t\"components\": [\n\t\t{\n\t\t\t\"name\": \"title of the component\",\n\t\t\t\"desc\": \"Description of hthe component\",\n\t\t\t\"status\": \"degraded-performance\",\n\t\t\t\"private\": true\n\t\t}\n\t]\n}\n```\n\nYou can create multiple components at once.\n\n### Params:\n\n`name*`: Title of the component.\n\n`desc*`: Updated description\n\n`status`: Status of the component valid choices for status are `operational`, `degraded-performance`, `partial-outage`, `critical-outage` any other choice will not reflect on the status page\n\n`private`: You can choose to private or public the status page based on this flag\n\n`parent`: The id of the component this one nests under. Omit it (or send `null`) for a top-level component.\n\n`order`: Sort position among its siblings.\n\n\\* Required\n\n### Nested components\n\nTo nest one component under another, create the parent first and then create the child with the parent's `_id` as its `parent`. There is no separate endpoint and no nested request body — the `parent` field is what makes a component nested.\n\n```\n# 1. create the parent, and read its _id from the response\n{\"components\": [{\"name\": \"Asia\"}]}\n\n# 2. create the components nested under it\n{\n\t\"components\": [\n\t\t{\"name\": \"India\", \"parent\": \"66c1d2e3f4a5b60718293a4c\", \"order\": 0},\n\t\t{\"name\": \"Japan\", \"parent\": \"66c1d2e3f4a5b60718293a4c\", \"order\": 1}\n\t]\n}\n```\n\nRules, each answered as a `400` with `error: invalid_parent`:\n\n* The parent must already exist and belong to the same status page.\n* Nesting is one level deep — you cannot nest under a component that is itself nested.\n* A component cannot be its own parent.\n\nEvery row in `components` is validated before any of them is saved, so one bad row writes nothing.\n\nA parent's status is not something you set: the status page shows the worst of the parent's own `status` and the statuses of everything nested under it. Read it back as `effectiveStatus` on the list endpoint.","tags":["Components"],"parameters":[{"name":"x-api-key","in":"header","required":true,"schema":{"type":"string"},"description":"Your API key. Find it in your Spike dashboard under Settings > API."},{"name":"status_page_id","in":"path","required":true,"schema":{"type":"string"},"description":"status_page_id parameter"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["components"],"properties":{"components":{"type":"array","description":"One entry per component to create. Every entry is validated before the first one is saved.","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"The component's name. Required and non-blank."},"desc":{"type":"string","description":"Free-text description shown under the name."},"status":{"type":"string","enum":["operational","degraded-performance","partial-outage","critical-outage","planned-maintenance"],"description":"Defaults to `operational`. Any other value is stored but will not reflect on the status page."},"private":{"type":"boolean","description":"Keep the component off the public page."},"startDate":{"type":"string","description":"When to start tracking uptime from. Defaults to now."},"parent":{"type":["string","null"],"description":"The id of the component this one nests under. Omit it (or send `null`) for a top-level component. The parent must already exist, belong to the same status page, and be top-level itself — nesting is one level deep."},"order":{"type":"number","description":"Sort position among its siblings. Defaults to `0`."}}}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"boolean"},"components":{"type":"array","items":{"$ref":"#/components/schemas/StatusPageComponent"}}}}}}},"400":{"description":"Bad request. `error: bad_request` when a row is unusable (for example a blank name, naming the row that failed), and `error: invalid_parent` when `parent` breaks one of the nesting rules. Nothing is saved in either case.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Update a component

> Update a component. You can update name, description, status. you can also choose to private or public a status page.\
> \
> \`\`\`\
> {\
> &#x9;"name": "title of the component",\
> &#x9;"desc": "Description of hthe component",\
> &#x9;"status": "degraded-performance",\
> &#x9;"private": true\
> }\
> \`\`\`\
> \
> \### Params:\
> \
> \`name\`: Title of the component.\
> \
> \`desc\`: Updated description\
> \
> \`status\`: Status of the component valid choices for status are \`operational\`, \`degraded-performance\`, \`partial-outage\`, \`critical-outage\` any other choice will not reflect on the status page\
> \
> \`private\`: You can choose to private or public the status page based on this flag\
> \
> \`parent\`: Where this component is nested. Send a component id to nest it there, \`null\` to lift it back to the top level, or leave the field out entirely to leave the nesting untouched.\
> \
> \`order\`: Sort position among its siblings.\
> \
> \### Changing where a component is nested\
> \
> \`parent\` has three meanings here, and they are easy to confuse:\
> \
> \* field absent — leave the nesting as it is\
> \* \`null\` — make this a top-level component\
> \* a component id — nest it under that component\
> \
> The same rules as create apply, each answered as a \`400\` with \`error: invalid\_parent\`: the parent must exist, be on the same status page, and be top-level itself. A component that already has things nested under it cannot itself be nested — move or delete those first.

````json
{"openapi":"3.1.0","info":{"title":"Spike API","version":"1.0.0"},"tags":[{"name":"Components","description":"Create, read and update the components shown on a status page. Components nest one level deep: set a component's `parent` to another component's id to nest it there."}],"servers":[{"url":"https://statuspage.spike.sh","description":"Status page server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the `x-api-key` header."}},"schemas":{"StatusPageComponent":{"type":"object","description":"A component on a status page. Components can be nested one level deep: a top-level component may have nested components under it, and a nested component cannot itself have anything nested under it.","properties":{"_id":{"type":"string","description":"The component's id. Use it as the `parent` of a nested component."},"name":{"type":"string","description":"The component's name, as it appears on the status page."},"desc":{"type":"string","description":"Free-text description shown under the name."},"status":{"type":"string","enum":["operational","degraded-performance","partial-outage","critical-outage","planned-maintenance"],"description":"The component's own status. Any other value is stored but will not reflect on the status page."},"effectiveStatus":{"type":"string","enum":["operational","degraded-performance","partial-outage","critical-outage","planned-maintenance"],"description":"Read-only, computed. The status the status page actually shows for this component: for a top-level component with nested components it is the worst of its own `status` and its nested components' statuses; for everything else it equals `status`. Ranked, least to most severe: `operational`, `planned-maintenance`, `degraded-performance`, `partial-outage`, `critical-outage`."},"parent":{"type":["string","null"],"description":"The id of the component this one is nested under, or `null` when it is top-level. Send it on create or update to nest a component. The parent must already exist, belong to the same status page, and be top-level itself."},"order":{"type":"number","description":"Sort position among siblings — top-level components share one sequence, and each parent's nested components have their own. Rows are returned parent-first with each parent's nested components directly after it, both sorted by `order`."},"startDate":{"type":["string","null"],"description":"The date from which uptime is tracked for this component."},"statusPage":{"type":"string","description":"The id of the status page this component belongs to."}}},"Error":{"type":"object","properties":{"message":{"type":"string","description":"Error message describing the problem"},"error":{"type":"string","description":"Error type or code"},"success":{"type":"boolean","description":"Present on the endpoints whose handlers include it (for example the API-key filter and the public on-call routes). Always `false` on an error."},"valid_api":{"type":"boolean","description":"Present on `401`s produced by the session/API-key filter. `false` means the supplied `x-api-key` was not recognised."},"statusCode":{"type":"number","description":"Echo of the HTTP status, present on a few permission errors."},"status":{"type":"boolean","description":"Present on the status-page component write endpoints, which answer a rejected write `{status: false, error, message}`. Always `false` on an error."}}}}},"paths":{"/api/status-page/{status_page_id}/component/{component_id}/update":{"post":{"operationId":"postApiStatusPageByStatusPageIdComponentByComponentIdUpdate","summary":"Update a component","description":"Update a component. You can update name, description, status. you can also choose to private or public a status page.\n\n```\n{\n\t\"name\": \"title of the component\",\n\t\"desc\": \"Description of hthe component\",\n\t\"status\": \"degraded-performance\",\n\t\"private\": true\n}\n```\n\n### Params:\n\n`name`: Title of the component.\n\n`desc`: Updated description\n\n`status`: Status of the component valid choices for status are `operational`, `degraded-performance`, `partial-outage`, `critical-outage` any other choice will not reflect on the status page\n\n`private`: You can choose to private or public the status page based on this flag\n\n`parent`: Where this component is nested. Send a component id to nest it there, `null` to lift it back to the top level, or leave the field out entirely to leave the nesting untouched.\n\n`order`: Sort position among its siblings.\n\n### Changing where a component is nested\n\n`parent` has three meanings here, and they are easy to confuse:\n\n* field absent — leave the nesting as it is\n* `null` — make this a top-level component\n* a component id — nest it under that component\n\nThe same rules as create apply, each answered as a `400` with `error: invalid_parent`: the parent must exist, be on the same status page, and be top-level itself. A component that already has things nested under it cannot itself be nested — move or delete those first.","tags":["Components"],"parameters":[{"name":"x-api-key","in":"header","required":true,"schema":{"type":"string"},"description":"Your API key. Find it in your Spike dashboard under Settings > API."},{"name":"status_page_id","in":"path","required":true,"schema":{"type":"string"},"description":"status_page_id parameter"},{"name":"component_id","in":"path","required":true,"schema":{"type":"string"},"description":"component_id parameter"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"desc":{"type":"string"},"status":{"type":"string","enum":["operational","degraded-performance","partial-outage","critical-outage","planned-maintenance"]},"private":{"type":"boolean"},"startDate":{"type":"string"},"parent":{"type":["string","null"],"description":"Where this component is nested. A component id nests it there, `null` lifts it back to the top level, and leaving the field out entirely leaves the nesting untouched."},"order":{"type":"number","description":"Sort position among its siblings."}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"component":{"$ref":"#/components/schemas/StatusPageComponent"}}}}}},"400":{"description":"Bad request. `error: invalid_parent` when `parent` breaks one of the nesting rules; nothing is saved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````
