SmartERP Documentation An Ashewa Technology Solutions Platform

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#

  1. Log into your SmartERP instance at https://smarterp.et/odoo.
  2. Open the main App Switcher (grid icon in the top-left corner).
  3. Select the Settings app icon.
  4. 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#

  1. Click the New button in the top-left control panel.
  2. 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.
  3. 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 / ExceptionProbable Root CauseCorrective Action / Resolution
HTTP 401: Invalid API KeyClient authorization header missing or key revoked.Generate fresh API key under User Preferences and update client header.
HTTP 429: Too Many RequestsRequest volume exceeded configured per-minute rate limit.Implement exponential backoff in client script or request rate quota increase.
HMAC Signature MismatchWebhook payload modified in transit or mismatched secret key.Verify raw JSON bytes encoding before computing HMAC signature.
Last updated: 2026-10-30