Status pages
Publish a public status page: slug, components, visibility, custom domain, badges and RSS feed.
What it's for
A status page communicates the state of your services to your users. It is
publicly accessible via a slug (e.g.
status.secumon.secuaas.dev/web-prod), shows the state of your components and
the incident history. You manage it from the portal or the API, and your visitors
consult it without authentication.
The status page model
| Field | Type | Required | Description |
|---|---|---|---|
id | uuid | (generated) | Unique identifier. |
slug | string | ✅ | URL identifier (web-prod). |
title | string | ✅ | Displayed title. |
description | string | — | Page description. |
custom_domain | string | — | Custom domain (status.my-company.com). |
logo_url | string | — | URL of a logo. |
custom_css | string | — | Custom CSS. |
is_public | boolean | — | Page publicly accessible. Default: true. |
show_history_days | integer | — | History depth displayed. Default: 90. |
components | JSON array | — | Tracked components (initialized to []). |
created_at / updated_at | date | (managed) | Timestamps. |
A component's state takes one of the values: operational, degraded,
partial_outage, major_outage, maintenance.
Using it from the portal
The Status pages section lists your pages. You can create a page (slug, title, visibility), edit its appearance and components, and delete it. Once published and public, it is viewable by your users.
Listing and viewing: all roles. Create, edit, delete:
ownerandadmin.
Using it through the API (management)
List
GET /api/v2/status-pages
curl -s https://api.secumon.secuaas.ovh/api/v2/status-pages \
-H "Authorization: Bearer $SECUMON_TOKEN"{
"count": 1,
"status_pages": [
{
"id": "abcd1234-5678-4abc-9def-0011aabbccdd",
"slug": "web-prod",
"title": "Web services status",
"is_public": true,
"show_history_days": 90
}
]
}Create
POST /api/v2/status-pages — slug and title required.
curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/status-pages \
-H "Authorization: Bearer $SECUMON_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"slug": "web-prod",
"title": "Web services status",
"description": "Availability of our production web services.",
"is_public": true,
"show_history_days": 90
}'Response: 201 Created with the page.
View, edit, delete
# Detail
curl -s https://api.secumon.secuaas.ovh/api/v2/status-pages/abcd1234-5678-4abc-9def-0011aabbccdd \
-H "Authorization: Bearer $SECUMON_TOKEN"
# Edit (partial fields)
curl -s -X PUT https://api.secumon.secuaas.ovh/api/v2/status-pages/abcd1234-5678-4abc-9def-0011aabbccdd \
-H "Authorization: Bearer $SECUMON_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "title": "Status — Web Services", "show_history_days": 60 }'
# Delete
curl -s -X DELETE https://api.secumon.secuaas.ovh/api/v2/status-pages/abcd1234-5678-4abc-9def-0011aabbccdd \
-H "Authorization: Bearer $SECUMON_TOKEN"Deletion returns 204 No Content.
Public pages (consultation)
Once a page is created with is_public: true, it is served publicly, without a
token, via its slug:
- Page:
GET /status/<slug>— returns the page (JSON, or a redirect to the web display if the browser requests HTML). - Public API:
GET /status/<slug>/api— always JSON. - Badge:
GET /status/<slug>/badge/<component>— an SVG badge (shields.io compatible) reflecting a component's state. - RSS feed:
GET /status/<slug>/rss— recent incidents in RSS 2.0 format.
# Example: SVG badge of the "api" component
curl -s https://api.secumon.secuaas.ovh/status/web-prod/badge/apiThese public routes are not under
/api/v2and require no authentication: they are intended for your visitors.
Use cases
- Incident communication: show in real time the degraded state of a service and the incident history to your customers.
- Badge in a README: embed a component's SVG badge in your documentation or repository.
- RSS subscription: let your users follow incidents through a feed reader.
Tips
- Set
is_public: falsewhile the page is being prepared: it then stays invisible to the public (the public routes return a refusal). - Choose a short, stable
slug: it becomes the page's public URL. - Adjust
show_history_daysaccording to what you want to expose (30, 60 or 90 days of history).