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

# Sobre a API

> Visão geral da API RESTful da Cardápio Web: ambientes Sandbox e Produção, autenticação por token, códigos de resposta HTTP e limites de requisição.

Esta é uma API RESTful composta por três módulos: **Loja**, **Catálogo** e **Pedidos**, além de um **webhook**, que evita eventos de polling e simplifica a integração. Cada módulo possui endpoints que permitem a integração com os recursos específicos do respectivo módulo.

As informações nas seções a seguir são aplicáveis a todos os endpoints. Detalhes específicos de cada endpoint podem ser encontrados na documentação correspondente a cada um deles.

## Ambiente de testes e de produção

Disponibilizamos dois ambientes independentes e isolados: **Sandbox** e **Produção**. Para o desenvolvimento da sua integração, recomendamos o uso do ambiente Sandbox. Abaixo estão as URLs dos dois ambientes:

| Ambiente | URL                                                                                      |
| -------- | ---------------------------------------------------------------------------------------- |
| Sandbox  | [https://integracao.sandbox.cardapioweb.com](https://integracao.sandbox.cardapioweb.com) |
| Produção | [https://integracao.cardapioweb.com](https://integracao.cardapioweb.com)                 |

Para facilitar o processo de desenvolvimento, criamos um estabelecimento de teste padrão em nosso ambiente Sandbox. O token de autenticação para esse estabelecimento é `7nSyGq49NVXuyZfgEQNPg3TdUqLNXTMNMNJwckvE`.

Para realizar pedidos no estabelecimento de teste da API, acesse o link do Cardápio digital: [https://app.sandbox.cardapioweb.com/teste\_integracao](https://app.sandbox.cardapioweb.com/teste_integracao).

Caso deseje testar o webhook no ambiente Sandbox, faça uma solicitação através do e-mail `integracao@cardapioweb.com`.

Por questões de segurança, todas as requisições devem ser feitas através do protocolo `HTTPS`.

## Autenticação

Para acessar os endpoints da API, é necessário incluir um **token no header da requisição**. Esse token é exclusivo para cada estabelecimento e deve ser gerado em nosso Portal. Para isso, acesse a tela de **Configurações**, em seguida vá para a opção **Integrações** e, por fim, selecione a opção **API**. Nessa seção, você terá acesso a um token já gerado ou poderá criar um novo token. Para obter mais detalhes, consulte a imagem abaixo.

<img src="https://mintcdn.com/cardpioweb/slLFMQ0YlHHRmsN9/images/2023-06-23_01-06.png?fit=max&auto=format&n=slLFMQ0YlHHRmsN9&q=85&s=e5c514dbed308324825cf4347286fcba" alt="Token de autenticação no Portal" width="1434" height="816" data-path="images/2023-06-23_01-06.png" />

O token deve ser incluído em todas as requisições no header `X-API-KEY`. Caso o token seja inválido ou não seja informado, será retornado um erro `HTTP 401 Unauthorized`.

Além de autenticar, o token também é responsável por identificar o estabelecimento correspondente.

Em alguns endpoints, além do token do estabelecimento, também é obrigatório informar o token da integradora no header `X-PARTNER-KEY`. Esse token é disponibilizado após o cadastro da integradora e pode ser solicitado pelo e-mail `integracao@cardapioweb.com`.

## Códigos HTTP das respostas

A API utiliza respostas HTTP convencionais para indicar o sucesso ou a falha das requisições. Respostas com o status 200 indicam sucesso. Os status 4xx indicam falhas decorrentes de erros nas informações enviadas, e os status 5xx indicam erros internos ou de comunicação com o servidor.

| Código HTTP                   | Descrição                                                                                 |
| ----------------------------- | ----------------------------------------------------------------------------------------- |
| **200** OK                    | Sua requisição foi bem-sucedida.                                                          |
| **400** Bad Request           | Algum parâmetro obrigatório não foi enviado ou é inválido.                                |
| **401** Unauthorized          | Não foi enviado o token no header ou ele é inválido.                                      |
| **404** Not Found             | O endpoint ou o objeto solicitado não existe.                                             |
| **429** Too Many Requests     | Número máximo de requisições atingido.                                                    |
| **500** Internal Server Error | Condição inesperada ao processar a requisição.                                            |
| **503** Service Unavailable   | O serviço não está disponível no momento. Ele pode estar em manutenção ou sobrecarregado. |

Se você encontrar um erro 5XX (500, 502, 503, 504, etc), por favor, **tente novamente em breve**. Se o problema persistir por mais de **5 minutos**, entre em contato com nossa equipe de suporte.

## Observações gerais

Todos os endpoints da API recebem e respondem em **JSON**. Portanto, tanto na requisição quanto na resposta, o header `Content-Type` será sempre `application/json`.

Todas as datas enviadas pela API seguem o padrão **ISO 8601**.

## Rate limit

Temos um limite de **400 requisições por minuto** por estabelecimento.

Para os endpoints de consultar catálogo, consultar loja e histórico de pedidos, o limite é de **5 requisições por minuto**.

Para os demais endpoints do módulo de catálogo, o limite é de **100 requisições por minuto**.

Quando esse limite for excedido, será retornado um erro `HTTP 429 Too Many Requests`.
