# API interna Amasystem Fiscal v0.4.0

API REST JSON sob `/api/v1/` (apontar document root para `public/`). HTTPS obrigatório na implantação. Não coloque `config.php`, `/bin` ou `/database` dentro do document root.

1. Instale `database/update.sql` sobre v0.3.0 ou `database/install.sql` em nova instalação.
2. Na interface, habilite cada modelo nas configurações fiscais da empresa.
3. No terminal do servidor, execute `php bin/create-api-key.php 1 "ERP Farma" "NFE,NFCE"`. A chave aparece **uma vez**, armazene-a em segredo. Não coloque a chave em JavaScript de navegador.
4. Todos os endpoints privados usam `Authorization: Bearer af_...`. Chaves são vinculadas a **uma empresa** e aos modelos permitidos.

## Endpoints
- `GET /api/v1/health` – estado básico (não requer chave; não comprova conectividade SEFAZ).
- `GET /api/v1/` – escopo e modelos habilitados para a integração.
- `POST /api/v1/documents` – registra rascunho administrativo, não transmite.
- `GET /api/v1/documents/{id}` – estado do documento pertencente à empresa da chave.
- `POST /api/v1/documents/{id}/emit` – **501**, transmissão bloqueada enquanto o motor fiscal não estiver homologado.

Exemplo:

```bash
curl -X POST 'https://emissor.exemplo.com/api/v1/documents' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer af_SUA_CHAVE' \
  -H 'Idempotency-Key: erp-venda-000000123' \
  -d '{"doc_type":"NFE","recipient_name":"Empresa Exemplo","recipient_tax_id":"12345678000195","description":"Venda 123","gross_amount":"150.25"}'
```

Resposta `201`: `{"document_id":123,"status":"rascunho","transmitted":false,"replayed":false}`.

Reenvio com mesma chave de idempotência e conteúdo retorna `200` sem criar outra nota. Mesmo identificador com conteúdo diferente retorna `409`. Cadastros de itens/XML assinados/SEFAZ ainda **não** estão implementados. Não interprete rascunho como documento fiscal válido.

## Reforma tributária
`tax_reform_settings`: empresa/modelo, `mode` desativado/simulacao/producao, vigência início/fim, versão de leiaute. `tax_reform_rules`: CST IBS/CBS, cClassTrib, alíquotas e reduções com vigências. A configuração é **estrutura de banco**, sem aplicação no cálculo nem emissão fiscal. `producao` não habilita transmissão e deve ser liberado somente após validação legal/técnica e homologação por modelo. Datas oficiais variam por tipo de documento e contribuinte; nunca ativar globalmente por padrão.
