Skip to main content

Storefront Content Pages (v1)

Personas

These routes are public (Customer / anonymous). Managing pages is done in the workspace dashboard by Workspace Owner or Staff with store.manage via POST|PATCH|DELETE /v1/workspace/:workspaceId/storefront/content-pages.

List pages

Method & Path

GET /v1/public/storefront/stores/:slug/content-pages

Actual backend path: /v1/public/storefront/stores/:slug/content-pages

Description

Returns active storefront content pages for the store identified by slug, ordered by sortOrder then creation time. Each page includes a slug used in public URLs and a type (about-us, contact-us, privacy-policy, terms-and-return, faq, or custom). Built-in types use slug equal to the type (e.g. about-us). Custom pages use a merchant-defined slug (e.g. our-story).

Authentication

None — public.

Path Parameters

NameTypeRequiredDescription
slugstringYesStorefront store slug

Response 200 OK

{
"pages": [
{
"id": "...",
"storeId": "...",
"workspaceId": "...",
"slug": "about-us",
"type": "about-us",
"title": "من نحن",
"content": "<p>...</p>",
"status": "active",
"sortOrder": 0,
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
]
}

Common Errors

  • 404: Store slug not found

Get page by slug

Method & Path

GET /v1/public/storefront/stores/:slug/content-pages/:pageSlug

Actual backend path: /v1/public/storefront/stores/:slug/content-pages/:pageSlug

Description

Returns a single active content page. The pageSlug path segment is the page slug (for built-in pages this matches the type, e.g. faq; for custom pages it is the slug configured in the dashboard).

Authentication

None — public.

Path Parameters

NameTypeRequiredDescription
slugstringYesStorefront store slug
pageSlugstringYesURL-safe slug: lowercase letters, numbers, hyphens (max 120)

Response 200 OK

{
"page": {
"id": "...",
"storeId": "...",
"workspaceId": "...",
"slug": "our-story",
"type": "custom",
"title": "قصتنا",
"content": "<p>...</p>",
"status": "active",
"sortOrder": 10,
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
}

Common Errors

  • 404 NOT_FOUND: Store or page not found, or page not active
  • 400: Invalid pageSlug format (validation)