Fornecedores
Como cadastrar e manter fornecedores na API de Integrações — o cadastro espelho de clientes, base do fluxo de compras.
O recurso Fornecedores (/suppliers) mantém o cadastro de fornecedores do tenant. Ele é o espelho de Clientes: a mesma estrutura de pessoa física/jurídica, tax_id, contatos, dados bancários e extensões por país (br_data, us_data). Fornecedores são a ponta de origem do fluxo de compras — notas de compra e contas a pagar.
Permissão exigida: suppliers (ações create, read, update, delete).
Conceitos e campos-chave
A estrutura é idêntica à de clientes, com duas diferenças que valem atenção:
country_codeé obrigatório e deve ser ISO2 (ex.:BR,US). Em clientes ele é opcional e aceita vários formatos; aqui é obrigatório e restrito ao código de duas letras.- Sem resolução de cidade/estado por texto. Fornecedores aceitam apenas
city_idestate_id(IDs do catálogo, obtidos via Dados de referência) — não há camposcity/statede texto livre.
| Campo | Tipo | Obrigatório | Observações |
|---|---|---|---|
type | enum | Sim | individual ou company |
tax_id | string | Sim | Documento fiscal; único por tenant; normalizado (sem validação de dígito) |
legal_name | string | Sim | Razão social / nome completo |
country_code | string | Sim | ISO2 (BR, US) |
tax_id_type | enum | Não | CPF, CNPJ, EIN ou SSN |
trade_name | string | Não | Nome fantasia |
reference_code | string | Não | Auto-gerado (SPL-…) se omitido; único por tenant |
emails | string[] | Não | |
phones | string[] | Não | |
address_line1 | string | Não | Endereço (linha 1) |
city_id | int | Não | ID da cidade no catálogo |
state_id | int | Não | ID do estado no catálogo |
postal_code | string | Não | |
tags | string[] | Não | |
is_active | boolean | Não | Padrão true |
metadata | object | Não | |
br_data | object | Não | ie, ie_exempt, cnae_primary, pix_key… |
us_data | object | Não | w9_on_file, naics_code, routing_number… |
O tax_id segue a mesma regra de Clientes: normalizado (pontuação ignorada) e sem validação de dígitos verificadores. Na resposta, o país vem como country_code (string), e city/state como objetos resolvidos.
Criar um fornecedor
curl -X POST https://api.biterp.ai/suppliers \
-H "Authorization: Bearer sk_abc123_secretXYZ" \
-H "Content-Type: application/json" \
-d '{
"type": "company",
"tax_id": "98.765.432/0001-10",
"tax_id_type": "CNPJ",
"legal_name": "Fornecedora Industrial S.A.",
"trade_name": "FornInd",
"country_code": "BR",
"emails": ["compras@fornind.com.br"],
"address_line1": "Rua da Indústria, 500",
"postal_code": "04500-000",
"state_id": 26,
"city_id": 5270,
"br_data": {
"ie": "111222333444",
"cnae_primary": "4671100",
"pix_key": "98765432000110",
"pix_key_type": "cnpj"
}
}'
state_idecity_iddevem ser IDs reais do catálogo bitERP. Obtenha-os pelos endpoints de estados e cidades em Dados de referência.
Buscar fornecedores
Além da listagem paginada (GET /suppliers, com filtros e paginação):
| Endpoint | Uso |
|---|---|
GET /suppliers/search | Busca full-text por legal_name, trade_name e tax_id. Aceita q, limit (padrão 50, 1–100) e activeOnly. |
GET /suppliers/tax-id/{taxId} | Localiza um fornecedor pelo tax_id (normalizado). 404 se não existir. |
GET /suppliers/count | Contagem total: { "count": 42 }. |
GET /suppliers/{id} | Busca por UUID. |
Campos filtráveis em GET /suppliers: legal_name, trade_name, tax_id, type, city, state, country_code, is_active, reference_code, tags, created_at, updated_at. Ordenação por id, legal_name, trade_name, reference_code, created_at, updated_at.
Remover
DELETE /suppliers/{id} faz soft delete e responde 204 No Content.
Referência dos endpoints
| Método | Endpoint | Referência |
|---|---|---|
| POST | /suppliers | Criar fornecedor |
| GET | /suppliers | Listar fornecedores |
| GET | /suppliers/search | Buscar por texto |
| GET | /suppliers/tax-id/{taxId} | Buscar por tax_id |
| GET | /suppliers/count | Contar fornecedores |
| GET | /suppliers/{id} | Buscar por ID |
| PATCH | /suppliers/{id} | Atualizar fornecedor |
| DELETE | /suppliers/{id} | Remover fornecedor |

