biterp

Permissões

Como funciona o sistema de permissões granulares da API de Integrações.

O bitERP usa um modelo de permissões granular por recurso e ação. Cada API Key ou usuário OAuth tem permissões específicas que controlam o que pode ser acessado.

Modelo de permissões

Cada permissão é composta por:

CampoDescriçãoExemplo
resource_codeCódigo do recursoproducts, customers
can_createPermissão para criartrue / false
can_readPermissão para listar e buscartrue / false
can_updatePermissão para atualizartrue / false
can_deletePermissão para removertrue / false

Como funciona

Com API Keys

As permissões são definidas na criação da API Key e são imutáveis — não podem ser alteradas depois. Para mudar permissões, crie uma nova key.

Exemplo: uma API Key com permissão products:read e products:create pode listar e criar produtos, mas não pode atualizar ou deletar.

Com OAuth2

O comportamento depende da role do usuário:

RoleComportamento
adminAcesso completo (bypass de permissões)
memberPermissões granulares por recurso, idênticas ao modelo de API Keys

Respostas de erro

Quando uma operação é negada por falta de permissão, a API retorna:

{
    "status_code": 403,
    "message": "Forbidden",
    "error": "You do not have permission to perform this action"
}

Recursos disponíveis

Estes são os resource_code aceitos na criação de uma API Key, com as ações que cada um expõe na API de Integrações. Conceder uma ação que o recurso não expõe (por exemplo can_create em um catálogo de referência) não habilita nada.

Os códigos usam hífen, não underscore — é financial-accounts, nunca financial_accounts. Um código inexistente não gera erro na criação da key: ele simplesmente não concede permissão nenhuma, e as chamadas passam a responder 403.

Cadastros

CódigoRecursoAções
productsProdutoscreate, read, update, delete
customersClientescreate, read, update, delete
suppliersFornecedorescreate, read, update, delete

Financeiro

CódigoRecursoAções
financial-accountsContas financeirascreate, read, update, delete
financial-categoriesCategorias financeirascreate, read, update, delete
financial-transactionsTransações financeirasread, delete
receivablesContas a recebercreate, read, update, delete
payablesContas a pagarcreate, read, update, delete

Vendas, faturamento e compras

CódigoRecursoAções
quotesOrçamentoscreate, read, update, delete
sales-ordersPedidos de vendacreate, read, update, delete
invoicesNotas / faturascreate, read, update, delete
purchase-invoicesNotas de compracreate, read, update, delete

Dados de referência (somente leitura)

CódigoRecursoAções
banksBancosread
payment-methodsFormas de pagamentoread
units-of-measurementUnidades de medidaread
countriesPaísesread
statesEstadosread
citiesCidadesread

Integração

CódigoRecursoAções
integration-mappingsMapeamento de entidadescreate, read, update, delete

⚠️ O código de permissão é integration-mappings, mas o caminho da URL é /integration-entity-mappings. É a única divergência entre código e rota na API — ver o guia do recurso.

Sem permissão específica

GET /tenant e GET /health não exigem permissão de recurso: qualquer credencial válida acessa o próprio tenant, e o health check é público.

Boas práticas

  1. Princípio do menor privilégio: conceda apenas as permissões necessárias para a integração
  2. Keys separadas por integração: crie uma API Key diferente para cada sistema que integra com o bitERP
  3. Expiração: configure expires_at sempre que possível
  4. Revogação: revogue keys que não são mais necessárias

Nesta página