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

# Configuração de canais

> Leia a configuração ativa de canais de venda (com tipos de fulfillment) para o seu vendor. Use para saber quais canais e combinações de fulfillment sua integração pode usar.

Retorna a configuração completa de canais de venda para o seu vendor, enriquecida com dados do catálogo global (`uuid`, `name`, `description`) e os tipos de fulfillment configurados para cada canal.

O endpoint não aceita query params. Apenas canais com `enabled !== false` são retornados. Canais sem match no catálogo são excluídos da resposta.

## Autenticação

<ParamField header="x-api-key" type="string" required>
  Sua API key do Fire com o scope `channels:read`. A key **deve ser vendor-scoped** (account + vendor binding) — keys sem `vendorId` são rejeitadas com `403`. O account e o vendor são resolvidos a partir da key, então não é necessário header `account` nem query param.
</ParamField>

## Requisição

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

## Resposta

<ResponseField name="accountId" type="string">UUID do account ao qual a API key pertence.</ResponseField>

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

    <ResponseField name="vendors" type="object[]">
      <Expandable title="vendor">
        <ResponseField name="vendorId" type="string">Identificador do vendor.</ResponseField>
        <ResponseField name="vendorName" type="string">Nome legível do vendor.</ResponseField>

        <ResponseField name="channels" type="object[]">
          <Expandable title="channel">
            <ResponseField name="uuid" type="string">UUID do catálogo global de `channels`.</ResponseField>
            <ResponseField name="code" type="string">Código do canal (ex. `APP`, `KIOSK`, `WEB`).</ResponseField>
            <ResponseField name="name" type="string">Nome de exibição.</ResponseField>
            <ResponseField name="description" type="string | null">Descrição opcional.</ResponseField>
            <ResponseField name="enabled" type="boolean">Sempre `true` nas linhas retornadas.</ResponseField>

            <ResponseField name="fulfillmentTypes" type="object[]">
              <Expandable title="fulfillmentType">
                <ResponseField name="uuid" type="string">UUID do catálogo global de `fulfillment_types`.</ResponseField>
                <ResponseField name="code" type="string">Código (ex. `DELIVERY`, `PICKUP`).</ResponseField>
                <ResponseField name="name" type="string">Nome de exibição.</ResponseField>
                <ResponseField name="referenceName" type="string">Nome interno de referência.</ResponseField>
                <ResponseField name="description" type="string | null">Descrição opcional.</ResponseField>
                <ResponseField name="enabled" type="boolean">Sempre `true` nas linhas retornadas.</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óvel",
                "description": "Canal de venda por aplicativo móvel",
                "enabled": true,
                "fulfillmentTypes": [
                  {
                    "uuid": "abcf-...-2d",
                    "code": "DELIVERY",
                    "name": "Delivery",
                    "referenceName": "DELIVERY",
                    "description": null,
                    "enabled": true
                  }
                ]
              },
              {
                "uuid": "7e2b-...-c8",
                "code": "KIOSK",
                "name": "Quiosque",
                "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` vem do catálogo global de `channels`, não do JSONB por account.
* `fulfillmentTypes` inclui apenas os tipos configurados para esse canal no vendor. Tipos sem match no catálogo são excluídos.
* `countries` agrupa pelo código de país do JSONB. Um vendor pode aparecer em múltiplos países se tiver configuração por país.

## Relacionados

<CardGroup cols={2}>
  <Card title="Configuração de métodos de pagamento" icon="credit-card" href="/pt/api-reference/payment-methods-config">
    Endpoint companion para ler os métodos de pagamento configurados.
  </Card>

  <Card title="Autenticação" icon="lock" href="/pt/authentication">
    Como funcionam as API keys vendor-scoped e os scopes.
  </Card>
</CardGroup>
