# Manual de Configuração da API GAPCNPJ no XAMPP

## Objetivo

Este manual documenta como configurar corretamente a API `GAPCNPJ` no ambiente local com **XAMPP**, garantindo que o Apache aponte para a pasta correta, que o rewrite funcione e que os endpoints possam ser consumidos da forma esperada.



## Estrutura esperada do projeto

A aplicação deve estar instalada em:

```text
C:\xampp\htdocs\GAPCNPJ
```

A pasta pública da aplicação é:

```text
C:\xampp\htdocs\GAPCNPJ\public
```



## Forma correta de publicar localmente

Para que a API funcione corretamente no XAMPP, a configuração deve seguir este padrão:

1. Manter o projeto em:

```text
C:\xampp\htdocs\GAPCNPJ
```

2. Apontar o Apache para a pasta:

```text
C:\xampp\htdocs\GAPCNPJ\public
```

3. Habilitar o rewrite no Apache.

4. Acessar a API por um domínio local, por exemplo:

```text
http://gapcnpj.local
```



## VirtualHost recomendado

No arquivo de Virtual Hosts do Apache, normalmente localizado em:

```text
C:\xampp\apache\conf\extra\httpd-vhosts.conf
```

adicionar a configuração abaixo:

```apache
<VirtualHost *:80>
    ServerName gapcnpj.local
    DocumentRoot "C:/xampp/htdocs/GAPCNPJ/public"

    <Directory "C:/xampp/htdocs/GAPCNPJ/public">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
```

## Configuração do arquivo hosts do Windows

No arquivo `hosts` do Windows, adicionar a entrada abaixo:

```text
127.0.0.1 gapcnpj.local
```

Caminho comum do arquivo:

```text
C:\Windows\System32\drivers\etc\hosts
```

> Importante: o editor deve ser executado como administrador para conseguir salvar esse arquivo.



## Arquivo `.htaccess` necessário

Dentro da pasta:

```text
C:\xampp\htdocs\GAPCNPJ\public
```

criar o arquivo:

```text
.htaccess
```

com o seguinte conteúdo:

```apache
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
```

### Finalidade do `.htaccess`

Esse arquivo é necessário para que o Apache redirecione as requisições para o `index.php`.

Sem isso, o Apache tenta localizar arquivos físicos como:

```text
/api/v1/cnpj/12345678000199
```

e a rota não funciona.



## URL base correta após a configuração

Depois da configuração correta, a base da API deve ser:

```text
http://gapcnpj.local
```

E **não**:

```text
http://localhost/GAPCNPJ
```



## Endpoints de consulta

### Consulta resumida por CNPJ

```http
GET http://gapcnpj.local/api/v1/cnpj/12345678000199
```

### Consulta completa por CNPJ

```http
GET http://gapcnpj.local/api/v1/cnpj/12345678000199/completo
```

### Consulta de filiais pela raiz do CNPJ

```http
GET http://gapcnpj.local/api/v1/raiz/12345678/filiais
```



## Como consumir a API corretamente

Essa API não deve ser testada apenas abrindo a URL no navegador sem autenticação, porque ela exige header de acesso.

### Header obrigatório nas rotas normais

```http
X-API-Key: sua-chave-api
```

### Header obrigatório nas rotas administrativas

As rotas administrativas também usam o header:

```http
X-API-Key: valor-do-ADMIN_KEY
```

Nesse caso, o valor utilizado deve ser o mesmo configurado no `.env` em `ADMIN_KEY`.



## Resumo rápido da configuração

### Projeto

```text
C:\xampp\htdocs\GAPCNPJ
```

### Pasta pública

```text
C:\xampp\htdocs\GAPCNPJ\public
```

### Domínio local

```text
http://gapcnpj.local
```

### Apache deve apontar para

```text
C:/xampp/htdocs/GAPCNPJ/public
```

### Arquivos que precisam ser ajustados

- `httpd-vhosts.conf`
- `hosts`
- `public/.htaccess`



## Erros comuns

### 1. Usar `localhost/GAPCNPJ` em vez de `gapcnpj.local`

Errado:

```text
http://localhost/GAPCNPJ
```

Correto:

```text
http://gapcnpj.local
```

### 2. Apache apontando para a pasta errada

O `DocumentRoot` não deve apontar para:

```text
C:/xampp/htdocs/GAPCNPJ
```

e sim para:

```text
C:/xampp/htdocs/GAPCNPJ/public
```

### 3. Não criar o `.htaccess`

Sem o `.htaccess`, as rotas amigáveis não funcionam.

### 4. Testar endpoint sem enviar `X-API-Key`

A API exige autenticação por header.



## Checklist final

Antes de testar a API, confirmar:

- [ ] O projeto está em `C:\xampp\htdocs\GAPCNPJ`
- [ ] O Apache está apontando para `C:\xampp\htdocs\GAPCNPJ\public`
- [ ] O domínio `gapcnpj.local` foi configurado no `hosts`
- [ ] O VirtualHost foi criado
- [ ] O `.htaccess` existe dentro de `public`
- [ ] O Apache foi reiniciado após as alterações
- [ ] O teste está sendo feito usando `http://gapcnpj.local`
- [ ] O header `X-API-Key` está sendo enviado



## Exemplo de consumo

### Exemplo de rota resumida

```http
GET http://gapcnpj.local/api/v1/cnpj/12345678000199
X-API-Key: sua-chave-api
```

### Exemplo de rota completa

```http
GET http://gapcnpj.local/api/v1/cnpj/12345678000199/completo
X-API-Key: sua-chave-api
```

### Exemplo de rota de filiais

```http
GET http://gapcnpj.local/api/v1/raiz/12345678/filiais
X-API-Key: sua-chave-api
```



## Observação final

A configuração local correta depende de:

- Apache apontando para a pasta `public`
- Rewrite ativo
- Domínio local configurado
- Consumo com `X-API-Key`

Sem esses pontos, a API pode até estar instalada corretamente, mas os endpoints não responderão como esperado.
