REST API to access Tryton modules
Project description
A REST API for Tryton Models
Installation
Install from python package index:
pip install tryton-restful
Usage
On installation you should be able to use the tryton_restful script which runs a local development server.
tryton_restful --help
Usage: tryton_restful [OPTIONS] HOST PORT
Runs the application on a local development server.
Options:
-c, --config TEXT Path to tryton configuration file
--debug
--threaded / --not-threaded should the process handle each request in a
separate thread?
--help Show this message and exit.
You can run the server by:
tryton_restful -c /path/to/tryton/config
Rest API Endpoints:
/<dbname>/login
POST |
Expects login and password as form data and returns a JSON of user ID and session to be used for subsequent requests |
import requests
import json
DATABASE_NAME = 'rest'
BASE_PATH = 'http://localhost:9000/' + DATABASE_NAME
login_result = requests.post(BASE_PATH + '/login', data={'login': 'admin', 'password': 'admin'})
tryton_session = login_result.json()
print tryton_session
{u'session': u'966689963c0a4a939cb326c1451b0fe9', u'id': 1}
/<dbname>/model/<model.name>
GET |
Return a list of records (Just the ID and rec_name) Params:
|
s = requests.Session()
s.auth = (tryton_session['id'], tryton_session['session'])
# Use the session and get the list of users
print s.get(BASE_PATH + '/model/res.user').json()
{u'items': [{u'rec_name': u'Administrator', u'id': 1}]}
POST |
Creates one or more records in the given model |
# Create a new user
headers = {'content-type': 'application/json'}
values = [
{'name': 'Thomas', 'login': 'thomas', 'password': 'password'},
{'name': 'Alfred', 'login': 'alfred', 'password': 'somethingelse'},
]
users = s.post(BASE_PATH + '/model/res.user', data=json.dumps(values), headers=headers).json()
print users
{u'items': [{u'rec_name': u'Thomas', u'id': 3}, {u'rec_name': u'Alfred', u'id': 4}]}
DELETE |
Delete all records in the given model |
/<dbname>/model/<model.name>/<id>
GET |
Return the details of the given record Params:
|
# Get full details of the first user
print s.get(BASE_PATH + '/model/res.user/1').json()
{u'create_date': u'Sat, 10 May 2014 08:51:16 GMT', ....}
# Get only a limited set of fields
user_url = BASE_PATH + '/model/res.user/1'
print s.get(user_url + '?fields_names=name&fields_names=email').json()
{u'email': None, u'name': u'Administrator', u'id': 1}
PUT |
Update the given resource |
# Change the email of the user
headers = {'content-type': 'application/json'}
user_data = s.put(user_url, data=json.dumps({'email': 'admin@example.com'}), headers=headers).json()
print user_data['email']
admin@example.com
DELETE |
Delete the given record |
# get a new list of all users
print s.get(BASE_PATH + '/model/res.user').json()
{u'items': [{u'rec_name': u'Administrator', u'id': 1}, {u'rec_name': u'Thomas', u'id': 3}, {u'rec_name': u'Alfred', u'id': 4}]}
# delete user Alfred with ID 4
print s.delete(BASE_PATH + '/model/res.user/4')
<Response [205]>
# get a new list of all users
print s.get(BASE_PATH + '/model/res.user').json()
{u'items': [{u'rec_name': u'Administrator', u'id': 1}, {u'rec_name': u'Thomas', u'id': 3}]}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.