# Hackaton Alerta API

API FastAPI para consulta de dados do sistema Alerta Fiscal (SQL Server) e da Omie (MySQL).

## 📋 Pré-requisitos

- Python 3.9 ou superior
- SQL Server com acesso configurado (para rotas do Alerta Fiscal)
- MySQL com acesso configurado (para rotas da Omie)
- ODBC Driver 17 for SQL Server instalado

## 🚀 Como executar

### 1. Instalar dependências

```bash
pip install -r requirements.txt
```

### 2. Configurar variáveis de ambiente

Copie o arquivo `.env.example` para `.env` e configure as variáveis:

```bash
copy .env.example .env
```

Edite o arquivo `.env` com suas credenciais:

```env
FIX_API_TOKEN=seu_token_secreto_aqui

# SQL Server (Alerta Fiscal)
SQLSERVER_HOST=seu_servidor
SQLSERVER_PORT=1433
SQLSERVER_USER=seu_usuario
SQLSERVER_PASSWORD=sua_senha
SQLSERVER_DATABASE=nome_do_banco

# MySQL (Omie - DataLake)
DATALAKE_HOST=seu_servidor_mysql
DATALAKE_PORT=3306
DATALAKE_USER=seu_usuario_mysql
DATALAKE_PASSWORD=sua_senha_mysql
DATALAKE_DATABASE=nome_do_banco_mysql
```

### 3. Executar a API

No diretório raiz do projeto, execute:

```bash
uvicorn main:app --reload --host 0.0.0.0 --port 8000
```

Ou usando Python diretamente:

```bash
python -m uvicorn main:app --reload --host 0.0.0.0 --port 8000
```

A API estará disponível em:
- **API**: http://localhost:8000
- **Documentação Swagger**: http://localhost:8000/docs
- **Documentação Scalar**: http://localhost:8000/scalar
- **Health Check**: http://localhost:8000/health

## 🧪 Testando a API

### Health Check (sem autenticação)

```bash
curl http://localhost:8000/health
```

### Listar clientes do Alerta Fiscal (requer autenticação)

```bash
curl -X GET "http://localhost:8000/clientes-alerta-fiscal/buscar" \
  -H "Authorization: Bearer seu_token_aqui"
```

### Buscar cliente do Alerta Fiscal por CNPJ

```bash
curl -X GET "http://localhost:8000/clientes-alerta-fiscal/buscar?cnpj=12345678000190" \
  -H "Authorization: Bearer seu_token_aqui"
```

### Listar clientes da Omie

```bash
curl -X GET "http://localhost:8000/clientes-omie" \
  -H "Authorization: Bearer seu_token_aqui"
```

### Listar contas a receber da Omie

```bash
curl -X GET "http://localhost:8000/contas-receber" \
  -H "Authorization: Bearer seu_token_aqui"
```

### Listar contratos da Omie

```bash
curl -X GET "http://localhost:8000/contratos" \
  -H "Authorization: Bearer seu_token_aqui"
```

## 📚 Endpoints

### Health Check
- `GET /health` - Verificação de saúde da API (sem autenticação)

### Alerta Fiscal (SQL Server)
- `GET /clientes-alerta-fiscal/buscar` - Lista todos os clientes do cadastro interno
- `GET /clientes-alerta-fiscal/buscar?cnpj=XXX` - Busca clientes por CNPJ (busca parcial)

### Omie - Clientes (MySQL)
- `GET /clientes-omie` - Lista todos os clientes cadastrados na Omie
- `GET /clientes-omie?cnpj=XXX` - Busca clientes da Omie por CNPJ

### Omie - Contas a Receber (MySQL)
- `GET /contas-receber` - Lista contas a receber da Omie
- `GET /contas-receber/boleto` - Lista boletos das contas a receber

### Omie - Contratos (MySQL)
- `GET /contratos` - Lista contratos da Omie
- `GET /contratos/servicos` - Lista serviços dos contratos
- `GET /contratos/departamentos` - Lista departamentos dos contratos
- `GET /contratos/vencimentos` - Lista vencimentos dos contratos

## 🔐 Autenticação

Todos os endpoints (exceto `/health`) requerem autenticação via Bearer Token:

```
Authorization: Bearer <FIX_API_TOKEN>
```

O token deve ser configurado na variável de ambiente `FIX_API_TOKEN`.

## 🛠️ Desenvolvimento

Para desenvolvimento com hot-reload:

```bash
uvicorn main:app --reload
```

