rechercher Rechercher
x

Connexion à Odoo

1 - Connexion API ODOO

La connexion à Odoo depuis Vision est basée sur le protocole Odoo RPC (JSON-RPC 2.0).
Toutes les requêtes sont envoyées en POST vers un point de terminaison unique.

2 - Authentification

Odoo exige que les utilisateurs de l'API soient authentifiés avant de pouvoir interroger la plupart des données.
Le point de terminaison xmlrpc/2/common fournit des méta-appels qui ne nécessitent pas d'authentification, comme l'authentification elle-même ou la récupération des informations de version.
L'authentification elle-même se fait via la fonction d'authentification et renvoie un identifiant utilisateur (uid) utilisé dans les appels authentifiés au lieu de la connexion.
L’appel de l’authentification se fait sur l’url : {{url}}/jsonrpc

Le json du body est :

API ODOO

{ "jsonrpc": "2.0", "method": "call", "params": { "service": "common", "method": "authenticate", "args": [ "{{db}}", "{{username}}", "{{password}}", {} ] } }

Sur vision, on crée un smartflow d’authentification suivant :

La réponse obtenue par l’appel API est la suivante :

où result est l’uid retourné par ODOO.
On va pouvoir réutiliser l’UID de la sorte :

3 - Appels vers les bases :

Maintenant que l’authentification est faite, on va pouvoir faire les appels aux données sur la même route basés sur le modèle décrit sur Postman:

{
    "jsonrpc": "2.0",
    "method": "call",
    "params": {
        "service": "object",
        "method": "execute_kw",
        "args": [
            "edu-apidemo",
            "2",
            "{{password}}",
            "res.partner",
            "search",
            [[]]
        ],
        "id": 100000000
    }
}

Dans cet exemple, on rapatrie des champs de la table account.move
Le json à envoyer est alors du type

{   "jsonrpc": "2.0",
    "method": "call",
    "params": {
    "service": "object",
    "method": "execute_kw",
    "args": [
        "{{db}}",
        "{{uid}}",
        "{{password}}",
        "account.move",
        "search_read",
        [
            [[
                "move_type",
                "=",
                "out_invoice"
            ],
            [
                "state",
                "!=",
                "draft"
            ]]
        ],
    {"fields": [
        "id",
        "name",
        "invoice_date",
        "invoice_date_due",
        "partner_id",
        "amount_untaxed",
        "payment_state",
        "move_type",
        "amount_tax",
        "invoice_pdf_report_file",
        "attachment_ids"
    ]
    }
],
"id": 100000000
}
}   

On obtient en retour la liste des factures

Avec le détail :

x