> ## 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

> Read sales channel definitions for POS and RMS mapping.

Returns all channels configured for the authenticated merchant. Use this endpoint to map Fire spark channels to ordering surfaces in your POS or RMS before syncing menus and routing orders.

<Note>
  Requires an access token with the `channels:read` scope. See
  [Token](/docs/integrations-api/oauth/token/post) to obtain a token.
</Note>

## Request

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

## Response

The response wraps an array of channel objects in `data`. Each channel represents a sales surface — owned channels such as app or web, or aggregators such as Uber Eats.

<ResponseExample>
  ```json Success theme={null}
  {
    "data": [
      {
        "id": "app",
        "uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "organization_id": "f1e2d3c4-b5a6-7890-fedc-ba0987654321",
        "merchant_id": "c1d2e3f4-a5b6-7890-cdef-123456789abc",
        "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": "uber-eats",
        "uid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
        "organization_id": "f1e2d3c4-b5a6-7890-fedc-ba0987654321",
        "merchant_id": "c1d2e3f4-a5b6-7890-cdef-123456789abc",
        "name": "Uber Eats",
        "type": "AGGREGATOR",
        "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. Unique per merchant.        |
| `uid`             | string (UUID) | Fire spark internal identifier.                                                                                       |
| `organization_id` | string (UUID) | Organization that owns the merchant.                                                                                  |
| `merchant_id`     | string (UUID) | Merchant the channel belongs to.                                                                                      |
| `name`            | string        | Display name. 1–100 characters.                                                                                       |
| `type`            | string        | Channel surface. One of `APP`, `WEB`, `KIOSK`, `POS`, `CALL_CENTER`, or `AGGREGATOR`. Set at creation; cannot change. |
| `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>

## Mapping channels to your POS

Match the `id` field to the channel identifier in your POS or RMS. Fire spark uses this external ID when composing menus and routing orders per surface.

<Tip>
  Channel `uid` values are stable Fire spark identifiers. Use `id` for
  cross-system mapping and `uid` when referencing channels in other Fire spark
  API calls.
</Tip>

## Error responses

| Status | Description                                       |
| ------ | ------------------------------------------------- |
| `401`  | Missing or invalid access token.                  |
| `403`  | Token does not include the `channels:read` scope. |


## OpenAPI

````yaml integrations-api/openapi.json GET /channels
openapi: 3.0.1
info:
  title: Fire spark Integrations API
  description: POS and RMS integration endpoints for Fire spark.
  version: 1.0.0
servers:
  - url: https://firespark.cloud/api/integrations/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/ChannelUpsert'
components:
  schemas:
    ChannelUpsert:
      type: object
      required:
        - id
        - name
        - type
        - status
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^[a-zA-Z0-9_-]+$
        name:
          type: string
          minLength: 1
          maxLength: 100
        type:
          type: string
          enum:
            - APP
            - WEB
            - KIOSK
            - POS
            - CALL_CENTER
            - AGGREGATOR
        status:
          type: string
          enum:
            - ACTIVE
            - INACTIVE
        cms_template_id:
          type: string
          format: uuid
          nullable: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````