Pular para o conteúdo

API de Webhook

O módulo bitconn_webhook expõe uma API JSON REST genérica para integração com sistemas externos.


A API aceita dois métodos de autenticação:

Terminal window
curl -H "X-API-Key: sua-chave-aqui" https://odoo/webhook/...
Terminal window
curl -H "Authorization: Bearer seu-token" https://odoo/webhook/...

A chave/token é configurada por endpoint no Odoo. Cada endpoint pode ter seu próprio token.


GET /webhook/bitconn/search_read

Parâmetros:

ParâmetroTipoObrigatórioDescrição
modelstringSimModelo Odoo (ex: res.partner, account.move)
domainJSON arrayNãoDomain filter Odoo
fieldsJSON arrayNãoCampos a retornar
limitintNãoLimite de resultados (default: 100)
offsetintNãoOffset de paginação

Exemplo:

Terminal window
curl -X GET \
"https://odoo.seudominio.com/webhook/bitconn/search_read?model=account.move&domain=[['state','=','posted']]&fields=['name','amount_total','partner_id']&limit=50" \
-H "Authorization: Bearer seu-token"

Resposta:

{
"jsonrpc": "2.0",
"id": null,
"result": [
{
"id": 42,
"name": "FAT/2024/001",
"amount_total": 99.90,
"partner_id": [15, "Cliente Exemplo Ltda"]
}
]
}

POST /webhook/bitconn/create

Body:

{
"model": "res.partner",
"values": {
"name": "Novo Cliente",
"email": "cliente@exemplo.com",
"phone": "+55 11 99999-9999"
}
}

Resposta:

{
"jsonrpc": "2.0",
"id": null,
"result": {"id": 101, "name": "Novo Cliente"}
}

PUT /webhook/bitconn/write

Body:

{
"model": "res.partner",
"ids": [101],
"values": {
"phone": "+55 11 88888-8888"
}
}

DELETE /webhook/bitconn/unlink

Body:

{
"model": "res.partner",
"ids": [101]
}

A API suporta busca de dados em registros relacionados usando relation specs. Especifique um dicionário no lugar do nome do campo:

{
"fields": [
"name",
"amount_total",
{
"partner_id": [
"name",
"email",
"phone",
{"category_id": ["name"]}
]
}
]
}

Isso retorna os dados do parceiro e sua categoria aninhados na resposta, sem precisar de múltiplas chamadas.


Cada chamada à API é registrada com:

  • Timestamp da requisição
  • IP de origem
  • Usuário/Método de autenticação
  • Payload completo (request)
  • Resposta (truncada em 500 caracteres)
  • Duração em ms
  • Status HTTP

Acesse o log em Webhook → Log de Requisições no Odoo.


Por padrão, cada endpoint aceita até 100 requisições por minuto por IP. Excedido o limite, retorna HTTP 429.

O limite é configurável por endpoint.