JSON-RPC and RESTful API Architecture
Deep dive into Odoo 19 JSON-RPC wire protocol, controller routing (type='json' vs type='http'), CORS headers, and payload serialization.
1. Overview & Business Value#
This comprehensive operational guide details the architecture, business workflows, configuration parameters, and execution steps for JSON-RPC and RESTful API Architecture within SmartERP.
SmartERP provides two primary API interaction models tailored for different consumer profiles:
JSON-RPC Protocol#
JSON-RPC 2.0 endpoints execute direct model methods via /web/dataset/call_kw:
{
"jsonrpc": "2.0",
"method": "call",
"params": {
"model": "account.move",
"method": "search_read",
"args": [[["move_type", "=", "out_invoice"]]],
"kwargs": {"fields": ["name", "partner_id", "amount_total"]}
},
"id": 1
}
RESTful HTTP Controllers#
Custom REST controllers (@http.route(type='http', auth='api_key')) deliver clean, industry-standard URL paths suitable for third-party webhook consumption.
{screenshot:jsonrpc-and-rest-architecture-overview-dashboard}
2. Prerequisites & Security Access Groups#
- Required Modules:
base, web, smarterp_core, payment - Security Groups:
Integration Specialist(Technical ID:base.group_user)System Administrator / API Director(Technical ID:base.group_system)
- Master Data Dependencies: Established API keys, configured payment providers, and verified external webhook callback endpoints.
3. Step-by-Step Configuration & Execution#
Step 1: Navigating to the Module Interface#
- Log into your SmartERP instance at
https://smarterp.et/odoo. - Open the main App Switcher (grid icon in the top-left corner).
- Select the Settings app icon.
- From the top navigation bar, open Technical → Integrations → API Keys / Webhooks.
{screenshot:jsonrpc-and-rest-architecture-app-switcher-navigation}
Step 2: Creating and Parameterizing Records#
- Click the New button in the top-left control panel.
- Complete the mandatory fields in the integration form:
- Endpoint Name (Mandatory): Descriptive identifier for the external client application.
- Allowed API Scopes (Mandatory): Explicit read/write model permissions.
- Authentication Mode (Mandatory): Bearer Token, API Key, or HMAC-SHA256 signature.
- Configure optional parameters: rate limit quotas, IP address allowlists, and retry schedules.
{screenshot:jsonrpc-and-rest-architecture-record-creation-form}
Step 3: Validating and Processing Transactions#
- Execution & Validation: Dispatch test payload from external client tool (cURL / Postman).
- Log Verification: Inspect HTTP response status (HTTP 200 OK) in the API access log.
{screenshot:jsonrpc-and-rest-architecture-transaction-processing-state}
4. Advanced Configuration Points#
- Automated Actions & Scheduled Tasks (Crons):
Integration: Clean stale webhook queues(base.ir_cron_webhook_cleanup)Integration: Sync currency exchange rates(base.ir_cron_currency_rates)
- Custom Print Templates & Reports:
- API Usage & Latency Telemetry Audit Report
- FinTech Reconciliation & Settlement Statement
- Multi-Company Rules: Record-level security isolation under Company 1 (
Ashewa Technology Solutions S.C.).
5. Comprehensive Troubleshooting Matrix#
| Error Symptom / Exception | Probable Root Cause | Corrective Action / Resolution |
|---|---|---|
HTTP 401: Invalid API Key | Client authorization header missing or key revoked. | Generate fresh API key under User Preferences and update client header. |
HTTP 429: Too Many Requests | Request volume exceeded configured per-minute rate limit. | Implement exponential backoff in client script or request rate quota increase. |
HMAC Signature Mismatch | Webhook payload modified in transit or mismatched secret key. | Verify raw JSON bytes encoding before computing HMAC signature. |