apidoo

Odoo API async requests

Usage no npm install needed!

<script type="module">
  import apidoo from 'https://cdn.skypack.dev/apidoo';
</script>

README

Apidoo

Odoo API async requests

Installing

Using npm:

$npm i apidoo --save

Usage

    // Establish connection
    let odoo = new Odoo('http://localhost:8069', 'db', 'user', 'password')
    await odoo.connect()

    // Search partners
    let partner = odoo.env('res.partner')
    let response = await parter.search()

Methods

Env and Context

    // New res partner model env
    let partner = odoo.api.env('res.partner')

    // Search partners with a context
    let partner_ids = await partner.with_context({lang : 'es_ES'}).search()
    

Search

    let partner = odoo.api.env('res.partner')

    /* Search partner with a domain and attributes */
    let partner_ids = await partner.search([[['active', '=', false]]], { limit: 2, offset: 1, order: 'name,email desc'})
    // [6,7]

    // Search all partners
    let partner_ids = await partner.search()
    // [5, 6, 7, 8]

Search Count

    let partner = odoo.api.env('res.partner')

     // Count partners with a domain
    let partners_count = await partner.search_count([[['active', '=', false]]])
    // 4

Read

    let partner = odoo.api.env('res.partner')

    // Search partners
    let partner_ids = await partner.search([[['active', '=', false]]])
    // [4, 6]

    // Read fields name and title from partner_ids
    let partners = await partner.read([partner_ids], { fields: ['name', 'title'] })
    /* 
    [{
        id: 6, 
        name: 'Portal User Template', 
        title: false 
    }, 
    { 
        id: 4, 
        name: 'Public user', 
        title: false
    }]
    */

Search Read

    let partner = odoo.api.env('res.partner')

    // Search partner with a domain and get custom fields. This is a mix from Search and Read
    let categories = await partner.search_read([[['active', '=', false]]], { fields: ['name'] })
      /* 
    [{
        id: 6, 
        name: 'Portal User Template', 
    }, 
    { 
        id: 4, 
        name: 'Public user', 
    }]
    */

Get Fields

    let partner_fields_all = await partner.get_fields()
    /*
    { 
      name:
        { 
          type: 'char',
          change_default: false,
          company_dependent: false,
          depends: [],
          manual: false,
          readonly: false,
          required: true,
          searchable: true,
          sortable: true,
          store: true,
          string: 'Name',
          translate: true,
          trim: true 
        },
      color:
        { 
          type: 'integer',
          change_default: false,
          company_dependent: false,
          depends: [],
          group_operator: 'sum',
          manual: false,
          readonly: false,
          required: false,
          searchable: true,
          sortable: true,
          store: true,
          string: 'Color Index' 
        },
     ...
    }
    */
    let partner_fields = await partner.get_fields(['title'], { attributes: ['type', 'string'] })
    /*
    { name: 
      { 
        type: 'char', 
        string: 'Name' 
      } 
    }
    */

Auth

 // Establish connection
    let odoo = new Odoo('http://localhost:8069', 'db', 'user', 'password')
    await odoo.connect()

    odoo.auth.session_info

    /* 
    { uid: 2,
     is_system: true,
     is_admin: true,
     user_context: { lang: 'es_ES', tz: false, uid: 2 },
     db: 'master13',
     server_version: '13.0+e',
     server_version_info: [ 13, 0, 0, 'final', 0, 'e' ],
     name: 'Administrator',
     username: 'admin',
     partner_display_name: 'Administrator',
     company_id: 1,
     partner_id: 3,
     'web.base.url': 'http://localhost:8069',
     user_companies: { current_company: [Array], allowed_companies: [Array] },
     currencies: { '1': [Object], '2': [Object] },
     show_effect: 'True',
     display_switch_company_menu: false,
     cache_hashes:
      { load_menus: '76b377632c2c9a04f80d9aeb4684465d3723158d',
        qweb: 'e45135167b9ad39817c3dd4710592ad01a61d62c',
        translations: '336e321c0ee524b1afd1aa73253cf3e2bd81be2b' },
     company_currency_id: 1,
     warning: 'admin',
     expiration_date: false,
     expiration_reason: false,
     web_tours: [],
     out_of_office_message: false,
     map_box_token: false,
     session_id: 'b45c6bc82fd9f0a0494f641b497983018c1e16d6' } }
     */