Introdução

Referência dos endpoints REST da Uebon. Prefixo comum: /api.

https://app.uebon.com/api
Fluxo recomendado: obter token → consultar tabelas gerais (séries, armazéns, tipos de documento) → criar ou pesquisar terceiros/artigos → emitir documento → obter PDF.

Secções

  • Autenticação — OAuth / Bearer token
  • Consulta v1 — account, options, IVA, terceiros, artigos
  • Escrita v1 — criar terceiros, artigos, documentos, PDF
  • Integração BI — exportação em massa (id encriptado da conta)

Autenticação

Endpoints protegidos exigem Authorization: Bearer {access_token}.

O par client_id / client_secret é enviado pela Uebon ao activar o acesso API.

POST https://app.uebon.com/oauth/token
Content-Type: application/json

{
  "client_id": "{client_id}",
  "client_secret": "{client_secret}",
  "username": "[email protected]",
  "password": "sua_password",
  "grant_type": "password"
}

Confirma se o token é válido.

{ "data": "Token is valid" }

Login por sessão (legado). Campos: email, password.

Registo de nova conta.

Utilizador autenticado.

Revoga o token actual.

Dados do utilizador (alias).

Consulta autenticada (v1)

Tabelas gerais e referência da conta. Mesma lógica dos endpoints web.

Dados da conta (empresa, país, moeda, decimais). Equivalente a POST /account.

Séries, armazéns, pagamentos, etc. Equivalente a POST /options/{type}.

typeDescrição
seriesSéries
armazemArmazéns
prazos_vencimentoPrazos vencimento
metodos_pagamentoPagamentos
metodo_expedicaoExpedição
viaturasViaturas
impostos_taxasImpostos/taxas
retencoesRetenções
unidades_de_medidaUnidades
GET https://app.uebon.com/api/v1/options/armazem
Authorization: Bearer {access_token}

Tipos de documento. tipo: venda, compra, stocks. categoria (opcional): documentos, guias…

GET https://app.uebon.com/api/v1/documents/types/venda/documentos
GET https://app.uebon.com/api/v1/documents/types/compra/documentos

Taxas IVA (tax_info) e motivos de isenção.

GET https://app.uebon.com/api/v1/tax-rates/PT
GET https://app.uebon.com/api/v1/exemptions

Data do último documento terminado (sequência temporal).

Lista paginada (?page=1), pesquisa e código disponível.

POST https://app.uebon.com/api/v1/clients/search
Authorization: Bearer {access_token}
Content-Type: application/json

{
  "search": "Empresa",
  "tipo": ["cliente", "ambos"],
  "visivel": true
}

Lista paginada (?page=1, ?armazem_id=1), pesquisa e código disponível.

Escrita autenticada (v1)

Criar terceiros, artigos e documentos; obter PDF. Respeita permissões da aplicação web.

Cria terceiro. Equivalente a POST /clients/create.

CampoObr.Descrição
empresasimDenominação
codigosimCódigo interno
nifsimNIF (mín. 5 chars)
codigo_postalsimCódigo postal
tiponãocliente | fornecedor | ambos
POST https://app.uebon.com/api/v1/clients
Authorization: Bearer {access_token}

{
  "empresa": "Empresa Exemplo Lda",
  "codigo": "CLI001",
  "nif": "123456789",
  "codigo_postal": "1000-001",
  "cidade": "Lisboa",
  "pais": "PT",
  "tipo": "cliente"
}
POST https://app.uebon.com/api/v1/products
Authorization: Bearer {access_token}

{
  "descricao": "Artigo exemplo",
  "tipo": "produto",
  "codigo": "ART001",
  "preco_sem_iva": 10.00,
  "iva": 5,
  "unidade_de_medida": 1
}

Emite documento. Equivalente a POST /documents/create.

POST https://app.uebon.com/api/v1/documents
Authorization: Bearer {access_token}

{
  "client_id": 42,
  "serie_id": 1,
  "document_id": 3,
  "armazem_id": 1,
  "terminado": 1,
  "data": "2025-05-30 12:00:00",
  "total": 123.00,
  "products": [
    {
      "id": 10,
      "quantidade": 1,
      "valor": 100.00,
      "imposto": 5,
      "descricao": "Artigo exemplo"
    }
  ]
}

PDF de impressão. Equivalente a GET /documents/open/{id}.

GET https://app.uebon.com/api/v1/documents/123/pdf
Authorization: Bearer {access_token}
Accept: application/pdf

Integração BI (leitura)

Exportação em massa sem token Bearer — usa {id} encriptado da conta. Limite: 10 req/min.

O {id} é fornecido no painel de integrações ou pelo suporte Uebon.
curl -s "https://app.uebon.com/api/bi/products/{id_encriptado}" -H "Accept: application/json"
CampoDescrição
idID artigo
codigoCódigo
descricaoDescrição
tipoproduto/serviço
preco_sem_ivaPreço s/ IVA
preco_custoCusto
ivaTaxa IVA
unidade_de_medidaUnidade
visivelVisível
usadoUsado em docs
createdCriação
last_updateAlteração
[
  {
    "id": 1,
    "codigo": "ART001",
    "descricao": "Artigo exemplo",
    "preco_sem_iva": "10.00",
    "tipo": "produto",
    "iva": "23"
  }
]

Clientes, fornecedores (exclui Consumidor Final, Stock interno).

[
  {
    "id": 42,
    "codigo": "9876543210",
    "tipo": "cliente",
    "nif": "123456789",
    "nome": "Empresa Exemplo Lda",
    "morada": "Rua Principal, 1",
    "pais": "PT",
    "cidade": "Lisboa",
    "codigo_postal": "1000-001"
  }
]

Documentos terminados e não anulados. entity_id = terceiro em /bi/entities.

[
  {
    "estado": "N",
    "entity_id": 42,
    "nome": "Fatura",
    "document_number": "FT 2025/1",
    "document_date": "2025-05-15",
    "net_total": "100.00",
    "total": "123.00"
  }
]

Respostas e erros

CódigoSignificado
200Sucesso
401Token em falta ou inválido
422Validação falhou
429Limite excedido (endpoints BI)

Usar Content-Type: application/json e Accept: application/json nos pedidos v1.