header.title

header.description

overview.title

overview.description

gettingStarted.title

gettingStarted.webhookEndpoint

POST https://bob.ood.ooo/api/n8n/webhook

gettingStarted.authentication.title

gettingStarted.authentication.description

gettingStarted.authentication.apiKey.title

gettingStarted.authentication.apiKey.badge

gettingStarted.authentication.apiKey.description

gettingStarted.authentication.apiKey.step1.title
  1. gettingStarted.authentication.apiKey.step1.items.0
  2. gettingStarted.authentication.apiKey.step1.items.1
  3. gettingStarted.authentication.apiKey.step1.items.2
  4. gettingStarted.authentication.apiKey.step1.items.3
  5. gettingStarted.authentication.apiKey.step1.items.4

gettingStarted.authentication.apiKey.step1.warning

gettingStarted.authentication.apiKey.step2.title

gettingStarted.authentication.apiKey.step2.description

gettingStarted.authentication.apiKey.step2.bearerLabel

gettingStarted.authentication.apiKey.step2.bearerValue

gettingStarted.authentication.apiKey.step2.apiKeyLabel

gettingStarted.authentication.apiKey.step2.apiKeyValue
gettingStarted.authentication.apiKey.step3.title

gettingStarted.authentication.apiKey.step3.description

  1. gettingStarted.authentication.apiKey.step3.items.0
  2. gettingStarted.authentication.apiKey.step3.items.1
  3. gettingStarted.authentication.apiKey.step3.items.2
  4. gettingStarted.authentication.apiKey.step3.items.3
  5. gettingStarted.authentication.apiKey.step3.items.4
gettingStarted.authentication.apiKey.step3.headerValue

gettingStarted.authentication.sessionCookie.title

gettingStarted.authentication.sessionCookie.badge

gettingStarted.authentication.sessionCookie.description

  1. gettingStarted.authentication.sessionCookie.steps.0
  2. gettingStarted.authentication.sessionCookie.steps.1
  3. gettingStarted.authentication.sessionCookie.steps.2
  4. gettingStarted.authentication.sessionCookie.steps.3
  5. gettingStarted.authentication.sessionCookie.steps.4

gettingStarted.authentication.sessionCookie.warning

supportedActions.title

supportedActions.executeMethod.title

supportedActions.executeMethod.description

{
  "action": "execute_method",
  "model": "res.partner",
  "method": "search_read",
  "args": [[["is_company", "=", true]]],
  "kwargs": {
    "fields": ["name", "email", "phone"],
    "limit": 10
  }
}

supportedActions.chat.title

supportedActions.chat.description

{
  "action": "chat",
  "message": "List all customers with outstanding invoices over $1000"
}

supportedActions.getConfig.title

supportedActions.getConfig.description

{
  "action": "get_config"
}

supportedActions.testConnection.title

supportedActions.testConnection.description

{
  "action": "test_connection"
}

commonOperations.title

commonOperations.createRecord

{
  "action": "execute_method",
  "model": "res.partner",
  "method": "create",
  "args": [{
    "name": "New Customer",
    "email": "customer@example.com"
  }]
}

commonOperations.updateRecord

{
  "action": "execute_method",
  "model": "res.partner",
  "method": "write",
  "args": [
    [123],
    {"phone": "+1234567890"}
  ]
}

commonOperations.deleteRecord

{
  "action": "execute_method",
  "model": "res.partner",
  "method": "unlink",
  "args": [[123, 124, 125]]
}

commonOperations.searchAndRead

{
  "action": "execute_method",
  "model": "sale.order",
  "method": "search_read",
  "args": [[
    ["state", "=", "sale"],
    ["date_order", ">=", "2025-01-01"]
  ]],
  "kwargs": {
    "fields": ["name", "partner_id", "amount_total"],
    "order": "date_order desc",
    "limit": 50
  }
}

exampleUseCases.title

exampleUseCases.formSubmission.title

exampleUseCases.formSubmission.description

  • exampleUseCases.formSubmission.items.0
  • exampleUseCases.formSubmission.items.1
  • exampleUseCases.formSubmission.items.2

exampleUseCases.dailySalesReport.title

exampleUseCases.dailySalesReport.description

  • exampleUseCases.dailySalesReport.items.0
  • exampleUseCases.dailySalesReport.items.1
  • exampleUseCases.dailySalesReport.items.2

exampleUseCases.lowStockAlerts.title

exampleUseCases.lowStockAlerts.description

  • exampleUseCases.lowStockAlerts.items.0
  • exampleUseCases.lowStockAlerts.items.1
  • exampleUseCases.lowStockAlerts.items.2

bestPractices.title

  • bestPractices.items.0.title bestPractices.items.0.text
  • bestPractices.items.1.title bestPractices.items.1.text
  • bestPractices.items.2.title bestPractices.items.2.text
  • bestPractices.items.3.title bestPractices.items.3.text
  • bestPractices.items.4.title bestPractices.items.4.text
  • bestPractices.items.5.title bestPractices.items.5.text
  • bestPractices.items.6.title bestPractices.items.6.text
  • bestPractices.items.7.title bestPractices.items.7.text

errorHandling.title

errorHandling.description

{
  "success": false,
  "error": "Error message",
  "details": "Detailed error information"
}

errorHandling.commonErrors.title

  • errorHandling.commonErrors.items.0
  • errorHandling.commonErrors.items.1
  • errorHandling.commonErrors.items.2

hmacVerification.title

hmacVerification.description

hmacVerification.howItWorks.title

  1. hmacVerification.howItWorks.steps.0
  2. hmacVerification.howItWorks.steps.1
  3. hmacVerification.howItWorks.steps.2
  4. hmacVerification.howItWorks.steps.3

hmacVerification.nodejs.title

const crypto = require('crypto');

// Your request body
const requestBody = {
  action: "execute_method",
  model: "res.partner",
  method: "search_read",
  args: [[["is_company", "=", true]]],
  kwargs: { fields: ["name", "email"], limit: 10 }
};

// Your HMAC secret from API key settings
const hmacSecret = "your_hmac_secret_here";

// Generate signature
const bodyString = JSON.stringify(requestBody);
const signature = crypto
  .createHmac('sha256', hmacSecret)
  .update(bodyString)
  .digest('hex');

// Add to headers
const headers = {
  'Authorization': 'Bearer sk_live_xxxxxxxxxxxxx',
  'X-HMAC-Signature': signature,
  'Content-Type': 'application/json'
};

hmacVerification.python.title

import hmac
import hashlib
import json

# Your request body
request_body = {
    "action": "execute_method",
    "model": "res.partner",
    "method": "search_read",
    "args": [[["is_company", "=", True]]],
    "kwargs": {"fields": ["name", "email"], "limit": 10}
}

# Your HMAC secret from API key settings
hmac_secret = "your_hmac_secret_here"

# Generate signature
body_string = json.dumps(request_body, separators=(',', ':'))
signature = hmac.new(
    hmac_secret.encode('utf-8'),
    body_string.encode('utf-8'),
    hashlib.sha256
).hexdigest()

# Add to headers
headers = {
    'Authorization': 'Bearer sk_live_xxxxxxxxxxxxx',
    'X-HMAC-Signature': signature,
    'Content-Type': 'application/json'
}

hmacVerification.tip

rateLimits.title

rateLimits.description

  • rateLimits.limit

rateLimits.headers.title

rateLimits.headers.description

HTTP/1.1 429 Too Many Requests
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 2025-01-28T12:00:00.000Z

{
  "error": "Rate limit exceeded",
  "limit": 100,
  "resetAt": "2025-01-28T12:00:00.000Z"
}

rateLimits.note

getStarted.title

getStarted.description

getStarted.button