Odoos XML-RPC API låter externa system läsa, skapa, uppdatera och radera data. Python, JavaScript, Go, PHP, i princip vilket språk som helst med XML-RPC-stöd kan kommunicera med Odoo.
Autentisering
Tre steg: anslut till /xmlrpc/2/common, autentisera med databas, användarnamn och lösenord, få ett user ID (uid). Sedan ansluter du till /xmlrpc/2/object med uid och lösenord för alla efterföljande anrop.
CRUD-operationer
search: hitta poster med domänfilter. read: hämta fältvärden. create: skapa ny post. write: uppdatera befintlig. unlink: radera. search_read: kombinerar search och read i ett anrop (effektivare).
Python-exempel
Standardbiblioteket xmlrpc.client räcker. Ingen extern dependency behövs. Anslut, autentisera, anropa execute_kw med modellnamn, metod och argument. Tio rader kod för att hämta alla kunder med stad 'Stockholm'.
Domänfilter
Odoo-domäner är listor av tupler: [('city', '=', 'Stockholm'), ('is_company', '=', True)]. Standard AND. Använd | för OR: ['|', ('city', '=', 'Stockholm'), ('city', '=', 'Göteborg')]. Polsk notation, lite ovant men kraftfullt.
Begränsningar
XML-RPC är synkront och inte optimerat för stora volymer. Hämtar du 10 000 poster, gör det med offset och limit i batchar om 500. Skriv-operationer triggar alla Odoo-mekanismer (constraints, computed fields, mail-utskick). Det är bra för dataintegritet men kan vara långsamt vid bulk-operationer.
Alternativ: JSON-RPC (samma funktionalitet, annat format) och OdooRPC (Python-bibliotek som wrapppar XML-RPC med ett snyggare gränssnitt).