-
Notifications
You must be signed in to change notification settings - Fork 4
API REST ERP
- GET (lectura de un recurso o múltiples)
- POST (Creación de recursos, ejecución de métodos)
- PATCH (Modificación de recursos)
- UNLINK (Eliminación de recursos)
/token
/<string:model>
/<string:model>/<int:obj_id>
/<string:model>/<string:method>
/<string:model>/<int:obj_id>/<string:method>
Donde model será siempre en CamelCase, por ejemplo el modelo res.partner, en la API el recurso serà ResPartner. Para más información, ver lista de modelos del ERP
Se obtiene un token a través de autentificación Basic (RFC 7617)
GET http://localhost:8067/token
Authorization: Basic admin admin
A partir de este momento todas las peticiones las podemos hacer con el token de la forma
GET http://localhost:8067/ResPartner?filter=[('customer', '=', True)]&schema=name,vat,address.email
Authorization: token XXXXXXXXXX
- filter: Puede ser un filtro de búsqueda que sea válido con el método search de la API
- Operadores: =, !=, >, >=, <, <=, like, ilike, =like, =ilike. Los operadores like y ilike añaden % automáticamente al inicio y final del texto, si utilizamos el =like o =ilike no va añadir el caráctr % y lo tendremos que añadir nosotros dónde queramos)
- schema: Son los campos que queremos leer, en forma *dot notation` para obtener modelos relacionados, sino pasamos schema cogerá todos los campos del modelo.
- limit: El límite de resultados a obtener, por defecto es 80 (para la paginación)
- offset: Des de que registro queremos empezar, por defecto es 0. (para la paginación)
Esto nos devuelve el siguiente JSON
{
"items": [
{
"address": [
{
"email": null,
"id": 18
}
],
"credit_limit": 15000.0,
"id": 20,
"name": "Centrale d'achats BML",
"vat": null
},
{
"address": [
{
"email": null,
"id": 7
}
],
"credit_limit": 32000.0,
"id": 14,
"name": "Maxtor",
"vat": null
},
{
"address": [
{
"email": "info@openroad.be",
"id": 2
}
],
"credit_limit": 12000.0,
"id": 17,
"name": "OpenRoad",
"vat": null
},
{
"address": [],
"credit_limit": 5000.0,
"id": 15,
"name": "Seagate",
"vat": null
}
],
"limit": 80,
"n_items": 4,
"offset": 0
}
Donde:
- items: és la liste de recursos segun el schema que le hayamos pasado
- n_items: és el número de ítems que cumplen la selección
- limit: el límite del listado
- offset: des de que ítem se está mostrando
POST http://localhost:8067/ResPartner Authorization: token {{auth_token}} Content-Type: application/json
{
"name": "Un partner"
}
{
"id": 24,
"status": "OK"
}
Igual que el de múltiples recursos pero en la URL hay el id del recurso y también le podemos pasar el schema
GET http://localhost:8067/ResPartner/1?schema=name,vat
Authorization: token XXXXXXXXXX
Nos devuelve el JSON del recurso directamente
{
"id": 1,
"name": "Tiny sprl",
"vat": "ESA31896889"
}
PATCH http://localhost:8067/ResPartner/10
Authorization: token {{auth_token}}
Content-Type: application/json
{
"credit_limit": 200
}
Podemos hacer modificaciones también de modelos relacionados des del propio recurso, por ejemplo añadir una dirección a un partner
PATCH http://localhost:8067/ResPartner/15
Authorization: token {{auth_token}}
Content-Type: application/json
{
"address": [
{
"name": "Test",
"email": "test@example.com"
}
]
}
O modificar una dirección de un partner que ya exista
PATCH http://localhost:8067/ResPartner/15
Authorization: token {{auth_token}}
Content-Type: application/json
{
"address": [
{
"id": 24,
"name": "Test updated",
"email": "test@example.com"
}
]
}
POST http://localhost:8067/ResPartner/fields_get
Authorization: token {{auth_token}}
Si queremos pasar parámetros a la función, los podemos pasar utilizando el contenido del POST con un json y la propiedad args:
POST http://localhost:8067/ResPartner/fields_get
Authorization: token {{auth_token}}
Content-Type: application/json
{
"args": [["name", "active", "vat"]]
}
I nos devuelve la respuesta en un json dentro de la propiedad res:
{
"res": {
"active": {
"string": "Active",
"type": "boolean"
},
"name": {
"required": true,
"select": true,
"size": 128,
"string": "Name",
"type": "char"
},
"vat": {
"help": "Value Added Tax number. Check the box if the partner is subjected to the VAT. Used by the VAT legal statement.",
"select": true,
"size": 32,
"string": "VAT",
"type": "char"
}
}
}
És el mismo que el de llamar a una función, pero lo estamos haciendo directamente a un recurso (obj_id)
POST http://localhost:8067/ResPartner/1/gen_next_ref
Authorization: token {{auth_token}}
{
"res": true
}
Para eliminar un recurso podemos utilizar el método DELETE de HTTP de la siguiente forma
DELETE http://localhost:8067/ResPartner/25
Authorization: token {{auth_token}}
{
"status": "OK"
}