url URL Odoo | string | si | — https://erp.mio-cliente.com | Base URL Odoo SENZA trailing slash. JSON-RPC chiamato su {url}/jsonrpc. Self-hosted o Odoo.sh entrambi supportati. |
database Nome database | string | si | — production | Nome del database Odoo (visibile in Impostazioni → Tecnico → Database, oppure nel URL al login). |
username Username | string | si | — [email protected] | Login Odoo (di solito email dell'utente). Crea un utente dedicato "integration_bot" con permessi minimi. |
apiKey API key (o password) | string (encrypted) | si | — | Odoo 14+: API key da Preferences → Account Security → Developer API Keys (scope ridotto, revocabile). Odoo <14: password utente. |
action Azione | enumsearch_readsearchreadcreatewriteunlinkexecute_methodname_searchfields_getcheck_connection
| si | search_read | search_read = query con campi (PIÙ USATO). search = solo IDs. read = read by IDs. create = INSERT. write = UPDATE. unlink = DELETE. execute_method = metodo Python custom su modello. name_search = autocomplete-style search (per UI). fields_get = schema introspection (discovery). check_connection = test credentials. |
model Modello Odoo | expression | no | — res.partner | Es: res.partner, sale.order, account.move, product.product, oppure <modulo_custom>.<model> per modello del modulo proprietario. Vai in Impostazioni → Tecnico → Modelli per la lista completa. Non richiesto per check_connection. |
domain Domain (filtro records) | expression | no | — [["is_company","=",true],["country_id.code","=","IT"]] | Filtro polish notation. AND implicito, OR esplicito con "|" prefix, NOT con "!" prefix. Operators: =, !=, >, >=, <, <=, like, ilike, in, not in, child_of, =like. Esempi: [["state","=","draft"]] · [["name","ilike","%mario%"]] · ["|",["a","=",1],["b","=",2]] · [["partner_id.country_id.code","=","IT"]] (dot-traversal). |
fields Fields (campi da leggere) | expression | no | — ["id","name","vat","email","country_id"] | Array JSON di field names. Vuoto = tutti i campi (SCONSIGLIATO, payload pesante). Relazioni many2one ritornano [id, "display_name"]. one2many/many2many ritornano [id1, id2, ...]. Usa dot-traversal NEL domain (non nei fields). |
values Values (campi da scrivere) | expression | no | — {"name":"Cliente Test","email":"[email protected]","is_company":true,"country_id":110} | Object JSON field→value. Per many2one passa l'ID intero (es. country_id: 110). Per one2many/many2many usa il formato special Odoo: [[0,0,{...}]] crea child, [[1,id,{...}]] aggiorna, [[2,id]] elimina, [[3,id]] dissocia (no delete), [[4,id]] associa, [[6,0,[id1,id2]]] replace all. |
ids IDs (record target) | expression | no | — [42, 43, 44] | Array JSON di interi. Per write/unlink: i records modificati/cancellati. Per execute_method: i records su cui il metodo opera (convenzione Odoo). Singolo ID: [42] (sempre array). |
method Metodo Python | expression | no | — action_confirm | Nome del metodo da invocare sul modello. Standard Odoo: action_confirm/action_cancel/action_done su sale.order, post/action_post su account.move. Custom: nome del metodo del modulo proprietario del cliente. |
args Args (positional) | expression | no | — [[42]] | Array positional di argomenti del metodo Python. Convenzione Odoo: il PRIMO arg è SEMPRE l'array di IDs (es. [[42]] = metodo applicato a record id 42). Per metodi class-level (no IDs): []. Se vuoto, viene auto-popolato con [ids] dal campo IDs sopra. |
kwargs Kwargs (keyword args + context) | expression | no | — {"context":{"lang":"it_IT","tz":"Europe/Rome","no_send_mail":true}} | Object JSON di keyword arguments. Spesso usato per context (lang/tz/no_send_mail/active_test/force_company_id). Per ignorare email automatic: {"context":{"no_send_mail":true}}. |
limit Limit (max records) | number | no | 100 | Max records ritornati. Per export grandi (>100k): usa limit=500 + loop su offset. Default 100 per evitare payload accidentali da 100MB. |
offset Offset (pagination) | number | no | 0 | Offset per pagination. Loop deterministico: offset=0,500,1000... finché result.length < limit (= ultima pagina). |
order Order (ORDER BY) | expression | no | — create_date desc, id desc | Sintassi SQL-like. Esempi: "create_date desc" · "name asc, id desc" · "priority asc, write_date desc". Per pagination stabile usa SEMPRE un tiebreak su id. |
name Query name_search | expression | no | — Mario | Stringa matched contro display_name. Usata dagli autocomplete Odoo. Operator default: "ilike" (case-insensitive substring). Ottimo per integrazioni "type-ahead" (es. search Cliente da nome parziale). |