Admin Settings → Channels endpoints (Block B Wave 2; objectified 2026-06-22).
Bare Eloquent #[ApiResource] parent. Nested data is field-selectable:
GraphQL → translations/locales/currencies/inventorySources Relay
connections + homeSeo typed object.
REST → the same data as flat arrays of objects (no connections).
REST shape stays flat via output: AdminSettingsChannelRestDto; GraphQL ops
carry NO output so they return this Eloquent model → connections resolve.
BREAKING (user-approved): the old scalar localeIds/currencyIds/
inventorySourceIds int arrays are REPLACED by the locales/currencies/
inventorySources object connections (GraphQL) / object arrays (REST).
REST:
GET /api/admin/settings/channels — datagrid-parity listing
GET /api/admin/settings/channels/{id} — detail
POST /api/admin/settings/channels — create
PUT /api/admin/settings/channels/{id} — update (translatable via translations map)
DELETE /api/admin/settings/channels/{id} — delete (guards: last channel, app.channel)
GraphQL:
adminSettingsChannels / adminSettingsChannel(id:)
createAdminSettingsChannel / updateAdminSettingsChannel / deleteAdminSettingsChannel
Mirrors Webkul\Admin\Http\Controllers\Settings\ChannelController 1:1.
Image upload (logo/favicon) is not supported yet; an update keeps the current images.