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

# Configuración de canales

> Lee la configuración activa de canales de venta (con tipos de fulfillment) para tu vendor. Úsalo para saber qué canales y combinaciones de fulfillment puede usar tu integración.

Devuelve la configuración completa de canales de venta para tu vendor, enriquecida con datos del catálogo global (`uuid`, `name`, `description`) y los tipos de fulfillment configurados para cada canal.

El endpoint no acepta query params. Solo retorna canales con `enabled !== false`. Los canales que no tengan match en el catálogo se excluyen de la respuesta.

## Autenticación

<ParamField header="x-api-key" type="string" required>
  Tu API key de Fire con el scope `channels:read`. La key **debe ser vendor-scoped** (account + vendor binding) — las keys sin `vendorId` son rechazadas con `403`. El account y el vendor se resuelven desde la key, así que no hace falta header `account` ni query param.
</ParamField>

## Petición

<RequestExample>
  ```http theme={null}
  GET https://api.fire.rest/api/v1/fire/external/channels/config
  x-api-key: <your_api_key>
  ```
</RequestExample>

## Respuesta

<ResponseField name="accountId" type="string">UUID del account al que pertenece la API key.</ResponseField>

<ResponseField name="countries" type="object[]">
  <Expandable title="country">
    <ResponseField name="countryCode" type="string">ISO 3166-1 alpha-2 (ej. `BR`, `EC`, `CO`).</ResponseField>

    <ResponseField name="vendors" type="object[]">
      <Expandable title="vendor">
        <ResponseField name="vendorId" type="string">Identificador del vendor.</ResponseField>
        <ResponseField name="vendorName" type="string">Nombre legible del vendor.</ResponseField>

        <ResponseField name="channels" type="object[]">
          <Expandable title="channel">
            <ResponseField name="uuid" type="string">UUID del catálogo global de `channels`.</ResponseField>
            <ResponseField name="code" type="string">Código del canal (ej. `APP`, `KIOSK`, `WEB`).</ResponseField>
            <ResponseField name="name" type="string">Nombre display.</ResponseField>
            <ResponseField name="description" type="string | null">Descripción opcional.</ResponseField>
            <ResponseField name="enabled" type="boolean">Siempre `true` en las filas devueltas.</ResponseField>

            <ResponseField name="fulfillmentTypes" type="object[]">
              <Expandable title="fulfillmentType">
                <ResponseField name="uuid" type="string">UUID del catálogo global de `fulfillment_types`.</ResponseField>
                <ResponseField name="code" type="string">Código (ej. `DELIVERY`, `PICKUP`).</ResponseField>
                <ResponseField name="name" type="string">Nombre display.</ResponseField>
                <ResponseField name="referenceName" type="string">Nombre interno de referencia.</ResponseField>
                <ResponseField name="description" type="string | null">Descripción opcional.</ResponseField>
                <ResponseField name="enabled" type="boolean">Siempre `true` en las filas devueltas.</ResponseField>
              </Expandable>
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "accountId": "550e8400-e29b-41d4-a716-446655440000",
    "countries": [
      {
        "countryCode": "EC",
        "vendors": [
          {
            "vendorId": "100.1.10",
            "vendorName": "Sandbox Ecuador",
            "channels": [
              {
                "uuid": "9f3a-...-e1",
                "code": "APP",
                "name": "App Móvil",
                "description": "Canal de venta por aplicación móvil",
                "enabled": true,
                "fulfillmentTypes": [
                  {
                    "uuid": "abcf-...-2d",
                    "code": "DELIVERY",
                    "name": "Delivery",
                    "referenceName": "DELIVERY",
                    "description": null,
                    "enabled": true
                  }
                ]
              },
              {
                "uuid": "7e2b-...-c8",
                "code": "KIOSK",
                "name": "Kiosco",
                "description": null,
                "enabled": true,
                "fulfillmentTypes": []
              }
            ]
          }
        ]
      }
    ]
  }
  ```

  ```json 401 — API key inválida theme={null}
  {
    "error": {
      "code": "unauthorized",
      "message": "Invalid or missing API key"
    }
  }
  ```

  ```json 403 theme={null}
  {
    "error": {
      "code": "forbidden",
      "message": "Access denied"
    }
  }
  ```
</ResponseExample>

## Notas

* `uuid` viene del catálogo global de `channels`, no del JSONB por account.
* `fulfillmentTypes` solo incluye los tipos configurados para ese canal en el vendor. Tipos sin match en el catálogo se excluyen.
* `countries` agrupa por código de país del JSONB. Un vendor puede aparecer en múltiples países si tiene configuración por país.

## Relacionado

<CardGroup cols={2}>
  <Card title="Configuración de métodos de pago" icon="credit-card" href="/es/api-reference/payment-methods-config">
    Endpoint companion para leer los métodos de pago configurados.
  </Card>

  <Card title="Autenticación" icon="lock" href="/es/authentication">
    Cómo funcionan las API keys vendor-scoped y los scopes.
  </Card>
</CardGroup>
