openapi: 3.2.0 info: title: Sorry Status Page Components API description: The Sorryâ„¢ REST API provides programmatic access to manage status pages, components, notices, notice updates, and subscribers. Build automated incident communication workflows that keep your customers informed during outages and maintenance windows. version: v1 contact: name: Sorry App Support url: https://docs.sorryapp.com/v1 license: name: Proprietary url: https://www.sorryapp.com/ servers: - url: https://api.sorryapp.com/v1 description: Sorry App REST API v1 security: - BearerAuth: [] tags: - name: Components description: Manage components displayed on status pages paths: /pages/{page_id}/components: get: operationId: listComponents summary: List Components description: Displays a list of all components for a single status page. tags: - Components parameters: - name: page_id in: path required: true description: Unique identifier for the status page schema: type: string responses: '200': description: Successful response with list of components content: application/json: schema: $ref: '#/components/schemas/ComponentsResponse' '401': description: Unauthorized '404': description: Status page not found post: operationId: createComponent summary: Create Component description: Add a new component to a status page. tags: - Components parameters: - name: page_id in: path required: true description: Unique identifier for the status page schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateComponentRequest' responses: '201': description: Component created successfully content: application/json: schema: $ref: '#/components/schemas/ComponentResponse' '400': description: Bad request '401': description: Unauthorized /pages/{page_id}/components/{component_id}: get: operationId: getComponent summary: Get Component description: Retrieve details for a single component including its current state. tags: - Components parameters: - name: page_id in: path required: true schema: type: string - name: component_id in: path required: true schema: type: string responses: '200': description: Successful response with component details content: application/json: schema: $ref: '#/components/schemas/ComponentResponse' '401': description: Unauthorized '404': description: Component not found patch: operationId: updateComponent summary: Update Component description: Update properties of a component such as name, description, or position. tags: - Components parameters: - name: page_id in: path required: true schema: type: string - name: component_id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateComponentRequest' responses: '200': description: Component updated successfully content: application/json: schema: $ref: '#/components/schemas/ComponentResponse' '400': description: Bad request '401': description: Unauthorized '404': description: Component not found delete: operationId: deleteComponent summary: Delete Component description: Delete a component. Does not delete associated notices. tags: - Components parameters: - name: page_id in: path required: true schema: type: string - name: component_id in: path required: true schema: type: string responses: '204': description: Component deleted successfully '401': description: Unauthorized '404': description: Component not found components: schemas: CreateComponentRequest: type: object required: - name properties: name: type: string description: type: string position: type: integer parent_id: type: integer UpdateComponentRequest: type: object properties: name: type: string description: type: string position: type: integer parent_id: type: integer ComponentResponse: type: object properties: data: $ref: '#/components/schemas/Component' Component: type: object properties: id: type: integer description: Unique identifier for the component state: type: string description: Current operational state enum: - operational - degraded - partially-degraded name: type: string description: Component name description: type: string description: Optional component description position: type: integer description: Display ordering position (lower = higher) parent_id: type: integer description: Optional parent component ID for grouping created_at: type: string format: date-time updated_at: type: string format: date-time ComponentsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Component' count: type: integer securitySchemes: BearerAuth: type: http scheme: bearer description: User-specific OAuth2 bearer token obtained from the Sorry app dashboard