> ## Documentation Index
> Fetch the complete documentation index at: https://firespark.cloud/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# List channels

> List all customer-facing sales channels for the merchant.

Returns every active channel configured for the merchant. Use this endpoint to build channel pickers or to load channel metadata before configuring menus and checkout flows.

<Note>
  Requires a Fire spark access token obtained through [token
  exchange](/docs/storefront-api/oauth/exchange/post). The token scopes requests to the
  authenticated customer and merchant.
</Note>

## Request

```bash theme={null}
curl "https://firespark.cloud/api/storefront/v1/channels" \
  -H "Authorization: Bearer ACCESS_TOKEN"
```

## Response

The response wraps an array of channel objects in `data`. Only `ACTIVE` channels are included.

<ResponseExample>
  ```json Success theme={null}
  {
    "data": [
      {
        "id": "app",
        "uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "organization_id": "11111111-1111-1111-1111-111111111111",
        "merchant_id": "22222222-2222-2222-2222-222222222222",
        "name": "Mobile app",
        "type": "APP",
        "status": "ACTIVE",
        "cms_template_id": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
        "cms": {
          "id": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
          "name": "App landing page",
          "entity": "CHANNELS",
          "status": "ACTIVE",
          "fields": [
            {
              "name": "hero_title",
              "type": "TEXT",
              "label": { "en_us": "Hero title" },
              "required": true,
              "value": "Order from our app"
            }
          ]
        }
      },
      {
        "id": "web",
        "uid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
        "organization_id": "11111111-1111-1111-1111-111111111111",
        "merchant_id": "22222222-2222-2222-2222-222222222222",
        "name": "Web ordering",
        "type": "WEB",
        "status": "ACTIVE",
        "cms_template_id": null,
        "cms": null
      }
    ]
  }
  ```
</ResponseExample>

## Channel object

| Field             | Type          | Description                                                                                               |
| ----------------- | ------------- | --------------------------------------------------------------------------------------------------------- |
| `id`              | string        | External channel identifier. Alphanumeric characters, `_`, and `-` only. 1–64 characters.                 |
| `uid`             | string (UUID) | Fire spark internal identifier.                                                                           |
| `organization_id` | string (UUID) | Fire spark organization identifier.                                                                       |
| `merchant_id`     | string (UUID) | Fire spark merchant identifier.                                                                           |
| `name`            | string        | Display name. 1–100 characters.                                                                           |
| `type`            | string        | Channel surface. One of `APP`, `WEB`, `KIOSK`, `POS`, `CALL_CENTER`, or `AGGREGATOR`.                     |
| `status`          | string        | `ACTIVE` or `INACTIVE`.                                                                                   |
| `cms_template_id` | string (UUID) | CMS template linked to this channel. `null` when no template is assigned.                                 |
| `cms`             | object        | Read-only. `null` when `cms_template_id` is `null`. When set, the resolved CMS template for this channel. |

<AccordionGroup>
  <Accordion title="cms">
    Present only when `cms_template_id` is not `null`. Contains the resolved CMS template assigned to the channel.

    | Field    | Required | Type          | Description                                       |
    | -------- | -------- | ------------- | ------------------------------------------------- |
    | `id`     | Yes      | string (UUID) | Template identifier. Matches `cms_template_id`.   |
    | `name`   | Yes      | string        | Template name. 1–100 characters.                  |
    | `entity` | Yes      | string        | Always `CHANNELS` for channel responses.          |
    | `status` | Yes      | string        | `ACTIVE` or `INACTIVE`.                           |
    | `fields` | Yes      | array         | Template fields with their current stored values. |

    Each field in `fields`:

    | Field         | Required | Type    | Description                                                |
    | ------------- | -------- | ------- | ---------------------------------------------------------- |
    | `name`        | Yes      | string  | Field key.                                                 |
    | `type`        | Yes      | string  | `TEXT`, `SELECT`, `IMAGE`, or `LIST`.                      |
    | `label`       | No       | object  | Optional localized label keyed by locale.                  |
    | `required`    | No       | boolean | Whether the field is required.                             |
    | `placeholder` | No       | string  | Optional placeholder text.                                 |
    | `options`     | No       | array   | For `SELECT` fields — objects with `label` and `value`.    |
    | `altText`     | No       | string  | For `IMAGE` fields — alternative text.                     |
    | `src`         | No       | string  | For `IMAGE` fields — image URL.                            |
    | `href`        | No       | string  | For `IMAGE` fields — optional link URL.                    |
    | `value`       | No       | varies  | Current stored value for this channel. Omitted when empty. |
  </Accordion>
</AccordionGroup>

## Error responses

| Status | Description                                             |
| ------ | ------------------------------------------------------- |
| `401`  | Missing or invalid access token.                        |
| `403`  | Token does not have access to this merchant's channels. |


## OpenAPI

````yaml storefront-api/openapi.json GET /channels
openapi: 3.0.1
info:
  title: Fire spark Storefront API
  description: Customer-facing channel endpoints for Fire spark.
  version: 1.0.0
servers:
  - url: https://firespark.cloud/api/storefront/v1
security:
  - bearerAuth: []
paths:
  /channels:
    get:
      summary: List channels
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Channel'
components:
  schemas:
    Channel:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^[a-zA-Z0-9_-]+$
        uid:
          type: string
          format: uuid
        name:
          type: string
        type:
          type: string
          enum:
            - APP
            - WEB
            - KIOSK
            - POS
            - CALL_CENTER
            - AGGREGATOR
        status:
          type: string
          enum:
            - ACTIVE
            - INACTIVE
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````