Channel Translations
The locale-specific copy for a channel — its display name, tagline, maintenance-mode text, and per-locale home-page SEO.
⚠️ The URL uses an underscore:
channel_translations, notchannel-translations. This matches the IRI strings emitted by/api/shop/channels/{id}(translationandtranslations[]).
Most clients reach a single row by following the translation / translations[] IRIs on a Channel response. The collection endpoint is mostly useful for bulk auditing or pre-caching every locale.
Endpoints
| Method | Path | Purpose |
|---|---|---|
| GET | /api/shop/channel_translations | Paginated flat list of every translation |
| GET | /api/shop/channel_translations/{id} | Single translation by ID |
Request Headers
| Header | Required | Description |
|---|---|---|
Accept | Yes | application/json |
X-STOREFRONT-KEY | Yes | Storefront API key (pk_storefront_…) |
Query Parameters (collection only)
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number (1-based) |
per_page | integer | 10 | Items per page. Max 50. |
Pagination headers are emitted on the collection. See Pagination.
Translation Object Fields
| Field | Type | Description |
|---|---|---|
id | integer | Translation primary key |
channelId | integer | Owning channel — fetch via GET /api/shop/channels/{channelId} |
locale | string | Locale code (en, fr, de, ar, …) |
name | string | Channel display name in this locale |
description | string | null | Channel tagline / description |
maintenanceModeText | string | null | Text shown to customers while maintenance mode is active |
homeSeo | object | { meta_title, meta_keywords, meta_description } for the home page in this locale |
createdAt | string | null | Creation timestamp |
updatedAt | string | null | Last update timestamp |
Typical Flow
GET /api/shop/channels/1
└─ response.translation = "/api/shop/channel_translations/1"
└─ response.translations = [
"/api/shop/channel_translations/1", // en
"/api/shop/channel_translations/2", // fr
"/api/shop/channel_translations/3", // de
...
]
GET /api/shop/channel_translations/2
└─ { id: 2, channelId: 1, locale: "fr", name: "...", maintenanceModeText: "...", homeSeo: {...} }You don't need to know the translation ID up front — read the parent channel's translation / translations[] and dereference any entry you need.
Use Cases
- Audit translation completeness across every locale and channel.
- Build an admin UI that lets store managers review channel-level localization.
- Pre-cache every locale's home-page SEO for a multi-locale SPA.
- Render the localized maintenance-mode banner when
Channel.isMaintenanceOn = 1.

