KONU · Middleware API v0.16.0 production

Integration layer between external software and Odoo: a queued write path, a cached synchronous read path, and an outbound path from Odoo to N8N.

API reference

Service status

API
checking
Database
checking
Odoo read breaker
checking

Authentication

Every /v1 endpoint needs an X-API-Key header. Keys carry per-model scopes, for example crm.lead:create; a missing scope returns 403.
docker compose run --rm api python scripts/create_api_key.py "webshop-test" --scope "crm.lead:create"
curl -H "X-API-Key: kmw_..." https://api.midd.komade.io/v1/ping

Endpoints

POST /v1/queue/{odoo_model}lock Queue a record creation. Returns 202 and a queue_id.
PATCH /v1/queue/{odoo_model}/{odoo_id}lock Queue an update of one record by its Odoo id.
PATCH /v1/queue/{odoo_model}lock Queue a bulk update: one payload written to many ids.
GET /v1/jobslock Recent jobs for the calling client, newest first.
GET /v1/jobs/{queue_id}lock Status of one queued job. Polling fallback for clients without MQTT.
GET /v1/read/{odoo_model}lock Live or cached Odoo data, behind a circuit breaker.
POST /v1/outboundlock Odoo ships a batch of outbound items to an N8N workflow.
GET /v1/outbound/workflowslock The workflow allow-list Odoo may ship to.
GET /v1/pinglock Key check: echoes the client name and its scopes.
GET /health Liveness and database reachability. No key required.
GET /v1/read-health Read circuit breaker state for monitoring. No key required.