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

# Get channel

> Read one sales channel definition by external id.

Returns a single channel for the authenticated merchant. Use this endpoint when you already know the external `id` and need the current name, type, status, and CMS configuration without listing all channels.

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

## Request

Replace `{id}` with the external channel identifier.

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

## Response

The response wraps one channel object in `data`.

<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"
          }
        ]
      }
    }
  }
  ```
</ResponseExample>

## Path parameters

| Parameter | Type   | Description                                                                                                    |
| --------- | ------ | -------------------------------------------------------------------------------------------------------------- |
| `id`      | string | External channel identifier. Alphanumeric characters, `_`, and `-` only. 1–64 characters. Unique per merchant. |

## Channel object

| Field             | Type          | Description                                                                                                           |
| ----------------- | ------------- | --------------------------------------------------------------------------------------------------------------------- |
| `id`              | string        | External channel identifier. Matches the path parameter.                                                              |
| `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>

## Error responses

| Status | Description                                       |
| ------ | ------------------------------------------------- |
| `401`  | Missing or invalid access token.                  |
| `403`  | Token does not include the `channels:read` scope. |
| `404`  | No channel exists with the given `id`.            |


## OpenAPI

````yaml integrations-api/openapi.json GET /channels/{id}
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/{id}:
    get:
      summary: Get channel
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^[a-zA-Z0-9_-]+$
          description: External channel identifier.
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $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

````