errors
Failed to load YAML frontmatter: Tried to load unspecified class: Date

Référence API Odoo — Documentation Complète

Base URL : https://sarl-le-relais-de-louest.odoo.com/jsonrpc Protocole : JSON-RPC 2.0 Auth : common.login + API Key Modèles documentés : ~250 modèles standards Odoo 19


1. Authentification (inchangée)

1.1 Obtenir un UID

POST /jsonrpc
Content-Type: application/json

{
    "jsonrpc": "2.0",
    "method": "call",
    "params": {
        "service": "common",
        "method": "login",
        "args": ["<db_name>", "<email>", "<api_key>"]
    },
    "id": 1
}

Réponse : {"jsonrpc": "2.0", "id": 1, "result": 2}

1.2 Helper Python

import requests
DB, UID, PWD = "sarl-le-relais-de-louest", None, None
URL = f"https://{DB}.odoo.com/jsonrpc"

def odoo_call(model, method, *args):
    payload = {
        "jsonrpc": "2.0", "method": "call",
        "params": {
            "service": "object", "method": "execute_kw",
            "args": [DB, UID, PWD, model, method] + list(args)
        }, "id": 1
    }
    r = requests.post(URL, json=payload, timeout=30).json()
    if "error" in r:
        raise Exception(r["error"]["data"]["message"])
    return r.get("result")

2. Méthodes génériques

Tous les modèles supportent : search, search_read, search_count, read, create, write, unlink, fields_get.

Syntaxe des domaines

["field", "=", value]          # égalité
["field", "!=", value]         # différent
["field", ">=", value]         # supérieur ou égal
["field", "=like", "xxx%"]     # LIKE
["field", "in", [v1, v2]]      # IN
[["f1", "=", v1], ["f2", "=", v2]]          # AND
[["f1", "=", v1], "|", ["f1", "=", v2]]     # OR

Commandes relationnelles

# Many2one → int
"partner_id": 42

# Many2many
"taxes_id": [(6, 0, [id1, id2])]    # remplacer
"taxes_id": [(4, id3)]              # ajouter
"taxes_id": [(3, id3)]              # supprimer
"taxes_id": [(5, 0, 0)]            # vider

# One2many
"order_line": [(0, 0, {vals})]      # créer + lier
"order_line": [(1, id, {vals})]     # modifier
"order_line": [(2, id)]             # supprimer

3. Catalogue complet des modèles Odoo 19

Organisé par module. Chaque modèle est accessible via odoo_call("nom.modele", ...). ⚠️ = piège connu | 📖 = détaillé plus bas

3.0 Technique / Base (ir.*)

Modèle Description
ir.model Registre de tous les modèles
ir.model.fields Champs de chaque modèle
ir.module.module Modules installés/à installer
ir.ui.view Vues XML (form, tree, kanban…)
ir.ui.menu Menus
ir.actions.act_window Actions fenêtre
ir.actions.server Actions serveur / automations
ir.actions.report Rapports PDF
ir.actions.url Actions URL
ir.cron Tâches planifiées
ir.mail_server Serveurs SMTP sortants
ir.config_parameter Paramètres système (clé/valeur)
ir.sequence Séquences de numérotation
ir.translation Traductions
ir.attachment Pièces jointes / documents
ir.qweb Templates QWeb
ir.filters Filtres sauvegardés utilisateur
ir.default Valeurs par défaut utilisateur
ir.logging Logs applicatifs
ir.property Propriétés champ

3.1 Contacts (res.* — resources)

Modèle Description
res.partner 📖 Contacts, clients, fournisseurs
res.partner.category Étiquettes / tags
res.partner.bank Comptes bancaires
res.partner.title Titres (M., Mme, Dr…)
res.partner.industry Secteurs d'activité
res.company Sociétés
res.users Utilisateurs
res.groups Groupes de sécurité
res.lang Langues
res.country Pays
res.country.state Régions/États
res.currency Devises
res.currency.rate Taux de change
res.bank Banques
res.config.settings Configuration générale

3.2 Ventes (sale.*)

Modèle Description
sale.order 📖 Commandes / devis
sale.order.line 📖 Lignes de commande
sale.order.template Modèles de devis
sale.order.template.line Lignes de modèle de devis
sale.order.template.option Options de modèles
sale.advance.payment.inv Assistant facture d'acompte
sale.order.cancel Assistant annulation
sale.payment.provider.onboarding.wizard Assistant onboarding paiement
sale.order.line.margin Marge par ligne (lecture)

3.3 PDV / Point de Vente (pos.*)

Modèle Description
pos.order 📖 Commandes PDV
pos.order.line 📖 Lignes PDV
pos.session 📖 Sessions de caisse
pos.config 📖 Configuration PDV
pos.payment Paiements PDV
pos.payment.method Modes de paiement
pos.category Catégories de produits PDV
pos.bill Tickets/reçus
pos.session.statement Relevés de session
pos.cash.box.in Entrée caisse
pos.cash.box.out Sortie caisse
pos.order.return Remboursement PDV
pos.discount Remises PDV
pos.combo Combos (menus)
pos.combo.line Lignes de combo
pos.close.session.wizard Assistant fermeture session
pos.printer Imprimantes IoT
pos.pack.operation.lot N° de lot/série

3.4 Produits (product.*)

Modèle Description
product.template Modèles de produits
product.product 📖 Variantes produits
product.category 📖 Catégories
product.attribute Attributs (taille, couleur…)
product.attribute.value Valeurs d'attribut
product.template.attribute.line Ligne attribut-modèle
product.template.attribute.value Valeur attribut-modèle
product.packaging Colisage
product.supplierinfo Infos fournisseur par produit
product.pricelist Listes de prix
product.pricelist.item Règles de prix
product.uom Unités de mesure
product.uom.categ Catégories d'unités
product.image Images (obsolète, utiliser ir.attachment)
product.label.layout Mise en page étiquettes
product.replenish Assistant réapprovisionnement

3.5 Inventaire / Stock (stock.*)

Modèle Description
stock.picking Transferts / bons de livraison
stock.move Mouvements de stock
stock.move.line Lignes de mouvement
stock.quant 📖 Quantités en stock
stock.location Emplacements
stock.warehouse Entrepôts
stock.inventory.adjustment.name Ajustement d'inventaire
stock.rule Règles de réapprovisionnement
stock.picking.type Types d'opération
stock.package.type Types de colis
stock.package.destination Destination colis
stock.package.level Niveau colis
stock.lot Lots / numéros de série
stock.storage.category Catégories de stockage
stock.putaway.rule Règles de rangement
stock.scrap Mise au rebut
stock.warn.insufficient.qty Assistant stock insuffisant
stock.quantity.history Historique quantités
stock.track.confirmation Traçabilité
stock.track.line Ligne de traçabilité
stock.assign.serial Assignation n° série
stock.scheduler.compute Calcul du scheduler MTS/MTO
stock.change.product.qty Modification quantité
stock.return.picking Retour de transfert

3.6 Facturation / Comptabilité (account.*)

Modèle Description
account.move 📖 Écritures comptables / Factures
account.move.line Lignes d'écriture
account.journal Journaux (ventes, banque, caisse…)
account.tax 📖 Taxes
account.tax.group 📖 Groupes de taxes
account.fiscal.position Positions fiscales
account.fiscal.position.tax Mapping taxes position fiscale
account.fiscal.position.account Mapping comptes position fiscale
account.payment 📖 Paiements
account.payment.register Assistant enregistrement paiement
account.payment.term Conditions de paiement
account.payment.term.line Lignes conditions de paiement
account.chart.template Modèle plan comptable ⚠️ SaaS restreint
account.account Comptes comptables
account.account.type Types de comptes
account.account.tag Étiquettes comptes
account.group Groupes de comptes
account.bank.statement Relevés bancaires
account.bank.statement.line Lignes relevé
account.reconcile.model Modèles de lettrage
account.reconcile.model.line Lignes modèle
account.analytic.account Comptes analytiques
account.analytic.line Lignes analytiques
account.analytic.plan Plans analytiques
account.analytic.tag Étiquettes analytiques
account.asset Immobilisations
account.asset.category Catégories d'immobilisation
account.budget.post Postes budgétaires
account.cash.rounding Arrondi espèces
account.financial.year.op Ouverture exercice
account.aged.trial.balance Balance âgée
account.general.ledger Grand livre
account.trial.balance Balance
account.tax.report Rapport de taxes
account.report Rapports comptables
account.report.line Lignes de rapport
account.accrued.orders.wizard Assistant OD
account.automatic.entry.wizard Assistant écritures auto
wizard.multi.charts.accounts Assistant plan comptable ⚠️ SaaS restreint

3.7 Événements (event.*)

Modèle Description
event.event 📖 Événements
event.event.ticket 📖 Types de billets
event.registration 📖 Participants / inscriptions
event.type Catégories d'événements
event.tag Étiquettes événements
event.mail Emails événement planifiés
event.mail.registration Emails inscription
event.track Programme / sessions
event.track.location Lieux de session
event.track.tag Étiquettes session
event.sponsor Sponsors
event.sponsor.type Types de sponsor
event.registration.cancel Assistant annulation inscription

3.8 CRM (crm.*)

Modèle Description
crm.lead Pistes / Leads
crm.team Équipes commerciales
crm.stage Étapes du pipeline
crm.tag Étiquettes CRM
crm.lead.lost Assistant perte de piste
crm.lead.to.opportunity Conversion lead → opportunité
crm.merge.opportunity Fusion opportunités
crm.iap.lead.mining.request Lead Mining IAP
crm.iap.lead.role Rôles IAP
crm.iap.lead.seniority Séniorité IAP
crm.quotation.partner Partenaire de devis

3.9 Ressources Humaines (hr.*)

Modèle Description
hr.employee Employés
hr.employee.category Catégories employés
hr.department Départements
hr.job Postes
hr.contract Contrats
hr.leave Congés
hr.leave.type Types de congés
hr.leave.allocation Allocations de congés
hr.expense Notes de frais
hr.expense.sheet Feuilles de frais
hr.expense.category Catégories de frais
hr.attendance Présences/pointages
hr.applicant Candidats
hr.recruitment.stage Étapes recrutement
hr.plan Plans RH
hr.plan.activity.type Types d'activité plan RH
hr.work.entry.type Types d'entrée de travail

3.10 Projets (project.*)

Modèle Description
project.project Projets
project.task Tâches
project.task.type Étapes de tâche
project.tags Étiquettes projet
project.milestone Jalons
project.task.recurrence Tâches récurrentes
project.update Mises à jour projet
project.share.wizard Assistant partage projet
project.delete.wizard Assistant suppression projet

3.11 Facturation / Temps (account.analytic.*)

Modèle Description
account.analytic.account Comptes analytiques
account.analytic.line Lignes analytiques (timesheet)
account.analytic.plan Plans analytiques
account.analytic.tag Étiquettes analytiques
account.analytic.distribution.model Modèles de distribution

3.12 Timesheet (hr_timesheet.*)

Modèle Description
account.analytic.line Feuilles de temps (même modèle que 3.11)
project.task.create.timesheet Assistant création timesheet
timesheet.analysis.report Rapport d'analyse

3.13 Achats (purchase.*)

Modèle Description
purchase.order Commandes fournisseur
purchase.order.line Lignes commande fournisseur
purchase.requisition Appels d'offres
purchase.requisition.line Lignes appel d'offres
purchase.bill.union Regroupement factures
purchase.bill.line.union Lignes regroupement

3.14 Abonnements (sale.subscription.*)

Modèle Description
sale.subscription Abonnements
sale.subscription.line Lignes d'abonnement
sale.subscription.template Modèles d'abonnement
sale.subscription.alert Alertes abonnement
sale.subscription.close.reason Raisons clôture
sale.subscription.recurrence.period Périodes récurrentes

3.15 E-commerce (website.* + product.public.*)

Modèle Description
website Sites web
website.page Pages
website.menu Menus du site
website.rewrite Redirections
website.visitor Visiteurs
website.track Tracking
product.public.category Catégories e-commerce
product.ribbon Rubans produit
website.sale.extra.field Champs supplémentaires checkout
website.sale.extra.line Lignes frais supplémentaires
payment.provider Fournisseurs de paiement
payment.token Tokens de paiement sauvegardés
payment.transaction Transactions de paiement
payment.link.wizard Assistant lien de paiement

3.16 Messagerie / Emails (mail.*)

Modèle Description
mail.message Messages (fil de discussion)
mail.activity Activités planifiées
mail.activity.type Types d'activité
mail.template Modèles d'email
mail.mail 📖 Emails en file d'attente
mail.compose.message Assistant composition
mail.channel Canaux de discussion
mail.channel.member Membres du canal
mail.followers Abonnés
mail.notification Notifications
mail.tracking.value Valeurs de suivi
mail.alias Alias email
mail.alias.domain Domaines alias
mail.shortcode Codes courts
mail.link.preview Aperçus de lien
fetchmail.server Serveur entrant (IMAP/POP)

3.17 Marketing / Email (mass_mailing.* + link.tracker.*)

Modèle Description
mailing.mailing Campagnes email
mailing.list Listes de diffusion
mailing.contact Contacts liste
mailing.trace Traces (ouvertures, clics)
link.tracker Traqueurs de lien
link.tracker.click Clics sur liens
link.tracker.code Codes de lien

3.18 Sondages (survey.*)

Modèle Description
survey.survey Sondages
survey.question Questions
survey.question.answer Réponses possibles
survey.user_input Réponses utilisateur
survey.user_input.line Lignes de réponse
survey.invite Invitations

3.19 Événements Live / Forum

Modèle Description
event.booth Stands salon
event.booth.category Catégories stand
forum.forum Forums
forum.post Messages forum
forum.tag Étiquettes forum

3.20 Base de connaissances (knowledge.*)

Modèle Description
knowledge.article Articles base de connaissance
knowledge.article.favorite Favoris article
knowledge.article.member Membres article
knowledge.cover Couverture

3.21 Planning (planning.*)

Modèle Description
planning.slot Créneaux planning
planning.slot.template Modèles de créneau
planning.role Rôles planning
planning.calendar Calendriers

3.22 Documents (documents.*)

Modèle Description
documents.document Documents
documents.folder Dossiers
documents.tag Étiquettes document
documents.share Partage de documents

3.23 Approbations (approvals.*)

Modèle Description
approval.request Demandes d'approbation
approval.category Catégories d'approbation
approval.approver Approbateurs

4. Modèles détaillés (les plus utilisés)

4.1 sale.order — Commande

Champ Type Obligatoire Description
name char Référence commande
partner_id m2o → res.partner Client
partner_invoice_id m2o Adresse facturation
partner_shipping_id m2o Adresse livraison
company_id m2o Société (1)
date_order datetime Date
picking_policy selection direct ou one
state selection   draft/sent/sale/done/cancel
client_order_ref char   Réf externe
team_id m2o → crm.team   Équipe
user_id m2o   Vendeur
note text   Notes

4.2 product.product — Produit

Champ Type Description
name char ✅ Nom
type selection consu/service/product ⚠️ pas detailed_type
list_price float Prix vente TTC
barcode char Code-barres
categ_id m2o Catégorie
sale_ok bool Vente
available_in_pos bool Visible en PDV
taxes_id m2m Taxes
active bool Actif

4.3 event.registration — Inscription

Champ Type Description
event_id m2o Événement
name char Nom participant
email char Email
barcode char QR/Barcode BilletWeb
state selection draft/open/done/cancel
event_ticket_id m2o Type billet
sale_order_id m2o Commande liée
sale_order_line_id m2o Ligne liée

⚠️ description n'existe pas → utiliser barcode.


5. Flux BilletWeb → Odoo

Ordre : res.partnerproduct.productevent.event.ticketsale.ordersale.order.lineevent.registration → lien registration_ids.

Anti-doublon

existing = odoo_call("event.registration", "search_read", [[]], {"fields": ["barcode"]})
done = {r["barcode"] for r in existing if r.get("barcode")}
if barcode in done: continue

Désactiver les emails (6 étapes)

# 1. mail.mail → unlink stuck
# 2. ir.mail_server → active=False
# 3. fetchmail.server → active=False
# 4. mail.template → auto_delete=True
# 5. ir.cron → active=False (jobs mail/email/send)
# 6. event.event → auto_confirm=False

6. TVA Réunion (DOM)

Taux Vente ID Achat ID
8,5% 79 32
2,1% 80 35
0% 61-70 50
grp = odoo_call("account.tax.group", "create", [{"name": "TVA 8.5%"}])  # sans country_id !
odoo_call("account.tax", "create", [{"name": "8.5% S", "amount": 8.5, "type_tax_use": "sale", ...}])

7. Pièges

Erreur Solution
1 AccessDenied common.login pas /web/session/authenticate
2 create retourne None champs obligatoires manquants → fields_get
3 create prend UN dict [{...}] pas [[{...}]]
4 detailed_type Ne pas utiliser → type
5 Taxe country_id mismatch Groupe sans country_id
6 auto_confirm envoie emails Désactiver avant import
7 unlink échoue {"active": False}
8 search_read limit=80 limit=0 pour tout
9 BilletWeb 403 User-Agent: Mozilla/5.0
10 sale.order 7 champs requis name, partner_id ×3, company_id, date_order, picking_policy

8. Limites SaaS

API JSON-RPC SSH
CRUD tous modèles standards Modules Python customs
Modules Studio Accès PostgreSQL
Webhooks sortants Core mods
Extensions Chrome Packages Python

9. Exemples

Créer un client

pid = odoo_call("res.partner", "create", [{"name": "Jean", "email": "j@mail.com", "customer_rank": 1}])

Créer une commande + ligne + inscription

so = odoo_call("sale.order", "create", [{"name": "CMD-001", "partner_id": pid, "partner_invoice_id": pid, "partner_shipping_id": pid, "company_id": 1, "date_order": "2026-05-29 10:00:00", "picking_policy": "direct"}])
line = odoo_call("sale.order.line", "create", [{"order_id": so, "product_id": 13, "product_uom_qty": 1, "price_unit": 11.00}])
reg = odoo_call("event.registration", "create", [{"event_id": 1, "name": "Jean", "email": "j@mail.com", "barcode": "1234567890", "state": "open"}])
odoo_call("sale.order.line", "write", [[line], {"registration_ids": [(6, 0, [reg])]}])