> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sentivel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Replace a status page's layout

> Order and group the components shown on the page. REPLACES the whole layout: a component omitted from the body stops being displayed on this page (it is not deleted, and its monitoring is unaffected), so GET the layout first unless you are defining the entire page. Component ids must belong to the workspace, and each may appear only once across all sections — either mistake is rejected with the offending ids named, rather than silently dropped.



## OpenAPI

````yaml https://www.sentivel.com/api/v1/openapi.json put /status-pages/{id}/layout
openapi: 3.1.0
info:
  title: Sentivel API
  version: 1.0.0
  description: >-
    Provision and read your Sentivel workspace programmatically: components,
    monitors, status pages and incidents. Authenticate with an org API token
    (create one under Developers → API tokens in the dashboard).
  contact:
    name: Sentivel
    url: https://www.sentivel.com
servers:
  - url: https://www.sentivel.com/api/v1
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Identity
    description: Who the token is
  - name: Components
    description: Status-page components (status units)
  - name: Monitors
    description: Uptime/HTTP checks
  - name: Status pages
    description: Public status pages
  - name: Incidents
    description: Incidents (read + manual create)
  - name: People
    description: Workspace members
  - name: Integrations
    description: Outbound alert destinations
  - name: On-call
    description: On-call schedules
  - name: Maintenance
    description: Scheduled maintenance windows
paths:
  /status-pages/{id}/layout:
    put:
      tags:
        - Status pages
      summary: Replace a status page's layout
      description: >-
        Order and group the components shown on the page. REPLACES the whole
        layout: a component omitted from the body stops being displayed on this
        page (it is not deleted, and its monitoring is unaffected), so GET the
        layout first unless you are defining the entire page. Component ids must
        belong to the workspace, and each may appear only once across all
        sections — either mistake is rejected with the offending ids named,
        rather than silently dropped.
      operationId: setStatusPageLayout
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StatusPageLayout'
      responses:
        '200':
          description: The saved layout.
        '400':
          description: >-
            Unknown component id, or the same component in more than one
            section.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No such status page.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    StatusPageLayout:
      type: object
      required:
        - sections
      description: >-
        The complete set of components the page displays, in render order.
        Sending this REPLACES the existing layout.
      properties:
        sections:
          type: array
          maxItems: 50
          items:
            type: object
            required:
              - items
            properties:
              name:
                type: string
                maxLength: 120
                nullable: true
                description: Heading above the group; null for no heading.
              items:
                type: array
                maxItems: 200
                items:
                  type: object
                  required:
                    - componentId
                  properties:
                    componentId:
                      type: string
                      format: uuid
                    publicName:
                      type: string
                      maxLength: 120
                      nullable: true
                      description: Renames the component on THIS page only.
                    description:
                      type: string
                      maxLength: 280
                      nullable: true
                    showHistory:
                      type: boolean
                      description: >-
                        Show the 90-day uptime bar. Defaults to true when
                        omitted.
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - unauthorized
                - forbidden
                - not_found
                - invalid_request
                - rate_limited
                - conflict
                - internal
            message:
              type: string
            details:
              type: object
          required:
            - code
            - message
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Sent as `Authorization: Bearer <token>`. Three kinds are accepted: an
        ORG token (`sv_…`), bound to one workspace with a fixed role; a PERSONAL
        token (`svu_…`), which acts as you with your own live role in whichever
        workspace it is pointed at; and an OAUTH access token (`mcp_at_…`) from
        a connected app, limited to the workspaces you granted it. A personal or
        OAuth token names its workspace with the `X-Sentivel-Workspace` header
        (a slug or an id). Without it an OAuth token falls back to the
        connection's primary workspace, while a personal token in more than one
        workspace is rejected `400 invalid_request` with the choices in
        `error.details.workspaces`. Membership is re-read every request, so
        leaving a workspace or revoking the grant takes effect at once.

````