Read Filter Records
Record data is accessible via the search_read()
(shortcut which as its name suggests is equivalent to a search() followed by a read(), but avoids having to perform two requests and keep ids around).
It takes similar arguments of search() and optionally a list of fields to fetch. By default, it will fetch all the records and relevant fields the current user can read, which tends to be a huge amount.
GET /restapi/1.0/object/{object_name}/?domain={comma_separated_list_of_args}
Request:
GET /restapi/1.0/object/res.partner?domain=[('is_company','=',True),('customer','=',True)] HTTP/1.1
Host: {your_Odoo_server_url}
JSON Response:
HTTP/1.1 200 OK
{
'Partner': [
{
'id': 12,
'name': 'Think Big Systems',
'street': '89 Lingfield Tower',
'street2': false,
'city': 'London',
'state_id': false,
'zip': false,
'country_id': [486, 'United Kingdom'],
'create_date': '2017-07-10 11:02:57',
'create_uid': [1, 'Administrator'],
'write_date': '2017-07-11 15:08:45',
'write_uid': [1, 'Administrator'],
...
...
...
},
{
'id': 17,
'name': 'Edward Foster',
'street': '69 rue de Namur',
'street2': false,
'city': 'Wavre',
'state_id': false,
'zip': '1300',
'country_id': [274, 'Belgium'],
'create_date': '2017-07-04 18:10:31',
'create_uid': [1, 'Administrator'],
'write_date': '2017-07-04 19:02:59',
'write_uid': [1, 'Administrator'],
...
...
...
},
...
...
...
]
}
XML Response:
HTTP/1.1 200 OK
<res.partner type="list">
<item type="dict">
<id type="int">12</id>
<name type="str">Think Big Systems</name>
<street type="str">89 Lingfield Tower</street>
<street2 type="bool">false</street2>
<city type="str">London</city>
<state_id type="bool">false</state_id>
<zip type="bool">false</zip>
<country_id type="list">
<item type="int">486</item>
<item type="str">United Kingdom</item>
</country_id>
<create_date type="str">2017-07-10 11:02:57</create_date>
<create_uid type="list">
<item type="int">1</item>
<item type="str">Administrator</item>
</create_uid>
<write_date type="str">2017-07-10 15:02:57</write_date>
<write_uid type="list">
<item type="int">1</item>
<item type="str">Administrator</item>
</write_uid>
</item>
<item type="dict">
<id type="int">17</id>
<name type="str">Edward Foster</name>
<street type="str">69 rue de Namur</street>
<street2 type="bool">false</street2>
<city type="str">Wavre</city>
<state_id type="bool">false</state_id>
<zip type="str">1300</zip>
<country_id type="list">
<item type="int">274</item>
<item type="str">Belgium</item>
</country_id>
<create_date type="str">2017-07-10 11:02:57</create_date>
<create_uid type="list">
<item type="int">1</item>
<item type="str">Administrator</item>
</create_uid>
<write_date type="str">2017-07-10 15:02:57</write_date>
<write_uid type="list">
<item type="int">1</item>
<item type="str">Administrator</item>
</write_uid>
</item>
</res.partner>
Query Parameters:
domain – OPTIONAL. A search domain. Use an empty list to match all records.
fields – OPTIONAL. list of field names to return (default is all fields).
offset – OPTIONAL. Number of results to ignore (default: none)
limit – OPTIONAL. Maximum number of records to return (default: all)
order – OPTIONAL. Sort string
count – OPTIONAL. if True, only counts and returns the number of matching records (default: False)
Request Headers
Accept – the response content type depends on Accept header
Authorization – The OAuth protocol parameters to authenticate.
Response Headers
Content-Type – this depends on Accept header of the request
Status Codes
200 OK – no error
404 Not Found – there’s no resource
401 Unauthorized – authentication failed
403 Forbidden – if any error raise
Conversely, picking only three fields deemed interesting.
Request:
GET /restapi/1.0/object/res.partner?domain=[('is_company','=',True),('customer','=',True)]&fields=['name','country_id']&limit=5 HTTP/1.1
Host: {your_Odoo_server_url}
JSON Response:
HTTP/1.1 200 OK
{
'Partner': [
{
'id': 7,
'name': 'Agrolait',
'country_id': [274, 'Belgium']
},
{
'id': 12,
'name': 'Think Big Systems',
'country_id': [486, 'United Kingdom']
},
{
'id': 17,
'name': 'Edward Foster',
'country_id': [274, 'Belgium']
},
{
'id': 8,
'name': 'China Export',
'country_id': [302, 'China']
},
{
'id': 10,
'name': 'The Jackson Group',
'country_id': [488, 'United States']
}
]
}
Note
even if the id
the field is not requested, it is always returned
Last updated