From c70ceaba674d280e3bb4798b226ade0c9531117f Mon Sep 17 00:00:00 2001 From: nate Date: Thu, 9 Apr 2026 22:13:36 +0400 Subject: [PATCH] update: change status page api --- apps/api/src/routes/status_pages.ts | 2 +- apps/web/src/routes/dashboard.ts | 6 +++--- apps/web/src/views/docs.ejs | 10 +++++----- apps/web/src/views/landing.ejs | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/api/src/routes/status_pages.ts b/apps/api/src/routes/status_pages.ts index b01ebf1..9a1d44b 100644 --- a/apps/api/src/routes/status_pages.ts +++ b/apps/api/src/routes/status_pages.ts @@ -113,7 +113,7 @@ async function replaceGroupsAndMonitors( } } -export const statusPages = new Elysia({ prefix: "/status-pages" }) +export const statusPages = new Elysia({ prefix: "/pages" }) .use(requireAuth) .get("/", async ({ accountId }) => { diff --git a/apps/web/src/routes/dashboard.ts b/apps/web/src/routes/dashboard.ts index 208be18..6441d2c 100644 --- a/apps/web/src/routes/dashboard.ts +++ b/apps/web/src/routes/dashboard.ts @@ -724,7 +724,7 @@ export const dashboard = new Elysia() try { const apiUrl = process.env.API_URL || "https://api.pingql.com"; const key = cookie?.pingql_key?.value; - await fetch(`${apiUrl}/status-pages/`, { + await fetch(`${apiUrl}/pages/`, { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `Bearer ${key}` }, body: JSON.stringify({ @@ -781,7 +781,7 @@ export const dashboard = new Elysia() // alone. Empty string falls through to this branch on purpose. if (b.remove_password) payload.password = null; else if (b.password) payload.password = b.password; - await fetch(`${apiUrl}/status-pages/${params.id}`, { + await fetch(`${apiUrl}/pages/${params.id}`, { method: "PATCH", headers: { "Content-Type": "application/json", "Authorization": `Bearer ${key}` }, body: JSON.stringify(payload), @@ -796,7 +796,7 @@ export const dashboard = new Elysia() try { const apiUrl = process.env.API_URL || "https://api.pingql.com"; const key = cookie?.pingql_key?.value; - await fetch(`${apiUrl}/status-pages/${params.id}`, { + await fetch(`${apiUrl}/pages/${params.id}`, { method: "DELETE", headers: { "Authorization": `Bearer ${key}` }, }); diff --git a/apps/web/src/views/docs.ejs b/apps/web/src/views/docs.ejs index e0b5ae1..ea4df5a 100644 --- a/apps/web/src/views/docs.ejs +++ b/apps/web/src/views/docs.ejs @@ -264,11 +264,11 @@ Content-Type: application/json

Create public status pages that display live uptime, heartbeat bars, and incidents for your monitors. Each page gets a unique slug and is publicly accessible at status.pingql.com/{slug}.

List pages

-
GET/status-pages
+
GET/pages

Returns all status pages for the authenticated account.

Create page

-
POST/status-pages
+
POST/pages
json - request body
{
@@ -324,15 +324,15 @@ Content-Type: application/json
         
 
         

Get page

-
GET/status-pages/:id
+
GET/pages/:id

Returns the page with its groups and monitors arrays, plus has_password (boolean).

Update page

-
PATCH/status-pages/:id
+
PATCH/pages/:id

All fields optional. If groups or monitors are provided, they replace the full set.

Delete page

-
DELETE/status-pages/:id
+
DELETE/pages/:id

Permanently removes the page and all associated groups and monitor links.

Public endpoints

diff --git a/apps/web/src/views/landing.ejs b/apps/web/src/views/landing.ejs index 7dc36cf..8376b96 100644 --- a/apps/web/src/views/landing.ejs +++ b/apps/web/src/views/landing.ejs @@ -561,7 +561,7 @@ Create a status page
-
$ curl -X POST https://pingql.com/api/status-pages \
+
$ curl -X POST https://pingql.com/api/pages \
   -H "X-Key: abcd-1234-efgh-5678" \
   -d '{
     "slug": "my-app",