Introduction
¡Bienvenido a la API de Sabbatic!
La API de Sabbatic está estructurada siguiendo los fundamentos de una API RESTful.
Todas las respuestas, incluyendo las respuestas de errores, devuelven un JSON.
En este documento podrás encontrar los diferentes servicios que ofrecemos para visualizar y gestionar las principales entidades de Sabbatic.
Important!
Authentication
Login
Para autenticarse, debes hacerlo con la siguiente llamada al servicio web:
# Llamada desde consola Linux
curl --request POST "https://api.sabbatic.es/v2/login"
--data "user=youruser@email.xxx"
--data "password=yoursabbaticpassword"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/login");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("user", "youruser@email.xxx");
request.AddParameter("password", "yoursabbaticpassword");
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "user=youruser@email.xxx&password=yoursabbaticpassword");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/login")
.post(body)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/login');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'user' => 'youruser@email.xxx',
'password' => 'yoursabbaticpassword'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá la
session_id
que deberás utilizar en cada petición a los servicios de Sabbatic:
{
"session_id": "YWH3KIjOF3GyWyedbtcIUkr..."
}
Sabbatic utiliza un sistema de identificadores de sesión para autorizar a un usuario a realizar llamadas a cualquier servicio web.
HTTP Request
POST https://api.sabbatic.es/v2/login
Parámetros de datos
Parámetro | Tipo | Descripción |
---|---|---|
user |
string | Cuenta de correo registrada en Sabbatic. Si no dispones de una, por favor regístrate en Sabbatic. |
password |
string | Contraseña utilizada en el registro de Sabbatic. |
Si el usuario no utiliza este identificador, el servicio devolverá el error "Unauthorized" y se deberá volver a identificar para seguir haciendo uso de los servicios.
session_id: Respuesta del servicio POST https://api.sabbatic.es/v2/login
Expenses
La entidad Expenses (Gastos) es en realidad una agrupación de otras entidades, como son: Receipts (Tickets), Invoices (Facturas) y Misc (Gastos variados).
Esta entidad cuenta únicamente con un servicio que permite listar de forma agrupada los diferentes gastos de un usuario. Para crear, editar o borrar cualquier tipo de gastos, hay que recurrir a la ruta de la entidad correspondiente (Receipts/Invoices/Misc).
List all expenses
Este servicio permite consultar un listado de gastos digitalizados en Sabbatic. La utilización de diferentes parámetros permite filtrar los resultados y obtener solo los gastos requeridos.
Ejemplo de llamada al servicio List all expenses:
# Llamada desde consola Linux
curl --request GET "https://api.sabbatic.es/v2/expenses?json=%7B%22expense_date_from%22:%2201/01/2017%22%2C%22expense_date_to%22:%2231/01/2017%22%7D"
-H "session_id:YOURSESSIONID"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expenses");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
page = 5
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expenses?json=%7B%7D")
.get()
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expenses');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'json' => '%7B%7D'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplo de JSON de respuesta:
{
"entities_list": [
{
"expense_id": 242365,
"user": {
"user_id": 2863,
"user_id_custom": "Campo de usuario personalizado",
"username": "email1@gmail.com",
"email": "email1@gmail.com",
"name": "José",
"surname": "Velasco Perez",
"language": "es",
"company": {
"company_id": 289363,
"company_id_custom": "Campo de empresa personalizada 1",
"vat_id": "34571346T",
"name": "Company Name 1",
"postal_code": 20001,
"city": "DONOSTIA-SAN SEBASTIAN",
"address": "Avenida Nº 21",
"province": "GIPUZKOA/GUIPUZCOA",
"country": "ESP",
"acronym": "TST"
},
"bank_account": "ES0000000000000000000000"
},
"company": {
"company_id": 289363,
"company_id_custom": "Campo de empresa personalizada 1",
"vat_id": "34571346T",
"name": "Company Name 1",
"postal_code": 20001,
"city": "DONOSTIA-SAN SEBASTIAN",
"address": "Avenida Nº 21",
"province": "GIPUZKOA/GUIPUZCOA",
"country": "ESP"
},
"title": "2015/12/12 - Company Name 1 - 15.00",
"expense_type": {
"expense_type_id": 1,
"name": "Ticket"
},
"origin": {
"id": 0,
"name": "Manual"
},
"supplier": {
"vat_id": "B52369823",
"name": "Empresa proveedora 3",
"postal_code": 46009,
"city": "Valencia",
"address": "Calle Mayor Nº 19",
"province": "Valencia",
"country": "ESP"
},
"creation_date": "13/12/2017",
"expense_date": "12/12/2017",
"total": 15,
"total_euros": 15,
"reconciled": true,
"currency": "EUR",
"currency_base": "EUR",
"country": "ESP",
"status": {
"name": "digitalizado",
"updated_datetime": "18/09/2018 10:33:15"
},
"labels": [
{
"label_id": 293621,
"name": "Cenas"
}
],
"image": {
"image_full_url": "https://image-url-public-link",
"image_full_url_list": ["https://image-url-public-link"],
"image_large_url": "https://smallerimage-url-public-link",
"image_large_url_list": ["https://smallerimage-url-public-link"],
"pdf_url": "https://pdf-url-public-link",
"pdf_url_list": ["https://pdf-url-public-link"],
"original_document_url_list": ["https://original-document-url-public-link"]
},
"alerts": [
{
"alert_id": 123456,
"name": "Alerta limite",
"message": "El importe del gasto de 43,72€, ha sido superior a 15,00€.",
"creation_datetime": "26/07/2021 11:58:14"
}
],
"notes": "Observaciones del gasto"
},
{
"expense_id": 136963,
"user": {
"user_id": 2864,
"user_id_custom": "Campo de usuario personalizado 2",
"username": "email2@outlook.es",
"email": "email2@outlook.es",
"name": "Manuel",
"surname": "Sanchez García",
"language": "es",
"company": {
"company_id": 326986,
"company_id_custom": "Campo de empresa personalizada 2",
"vat_id": "B56326855",
"name": "Company Name 2",
"postal_code": 28001,
"city": "MADRID",
"address": "Gran Via Nº 112",
"province": "MADRID",
"country": "ESP"
}
},
"company": {
"company_id": 326986,
"company_id_custom": "Campo de empresa personalizada 2",
"vat_id": "B56326855",
"name": "Company Name 2",
"postal_code": 28001,
"city": "MADRID",
"address": "Gran Via Nº 112",
"province": "MADRID",
"country": "ESP"
},
"title": "0 - Company Name 2 - 10.74",
"expense_type": {
"expense_type_id": 2,
"name": "Factura"
},
"origin": {
"id": 1,
"name": "Sabbatic OCR"
},
"supplier": {
"vat_id": "A89636212",
"name": "Empresa proveedora 2",
"postal_code": 46009,
"city": "Valencia",
"address": "Calle Mayor Nº 11",
"province": "Valencia",
"country": "ESP"
},
"creation_date": "18/01/2017",
"expense_date": "18/01/2017",
"taxes": [
{
"net_price": 11.31,
"tax_percent": 10,
"tax_amount": 1.13,
"tax_subtotal": 12.44
},
{
"net_price": 0,
"tax_percent": 0,
"tax_amount": 0,
"tax_subtotal": 0,
"free_of_tax": true
}
],
"tax_retention_base": 11.31,
"tax_retention_percentage": 15,
"tax_retention_import": -1.7,
"total": 10.74,
"total_euros": 10.74,
"invoice_number": "FXE45639-A4",
"bank_accounts": [
{
"bank_account": "ES4236598653245698723657"
},
{
"bank_account": "ES2365587423659863523698"
}
],
"free_of_taxes": false,
"currency": "EUR",
"currency_base": "EUR",
"reconciled": false,
"invoice_number": "zxcvzfe5w3542345",
"country": "ESP",
"status": {
"name": "aprobado"
},
"labels": [
{
"label_id": 276103,
"label_id_custom":"Etiqueta Personalizada 1",
"name": "Gasolina"
},
{
"label_id": 293621,
"name": "Cenas"
}
],
"image": {
"image_full_url": "https://image-url-public-link",
"image_full_url_list": ["https://image-url-public-link"],
"image_large_url": "https://smallerimage-url-public-link",
"image_large_url_list": ["https://smallerimage-url-public-link"],
"pdf_url": "https://pdf-url-public-link",
"pdf_url_list": ["https://pdf-url-public-link"],
"original_document_url_list": ["https://original-document-url-public-link"]
},
"notes": "Observaciones de la factura"
}
],
"total_entities": 2,
"entities_per_page": 20,
"page": 0,
"total_pages": 0
}
HTTP Request
GET https://api.sabbatic.es/v2/expenses?json={}
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
user_id |
int | Identificador numérico del usuario sobre el que se desea filtrar los gastos. |
username |
string | E-mail del usuario. solo los administradores pueden ver gastos correspondientes a otros usuarios. Ej. youruser@email.xxx |
company_id |
int | Identificador de empresa. Ej. 82828 |
company_id_custom |
string | Identificador propio y personalizable que identifica a una empresa en el sistema propio del cliente. El par company_id ,company_id_custom determina a una única empresa en Sabbatic. |
user_id_custom |
string | Identificador propio y personalizable que identifica a un usuario por empresa en el sistema del propio cliente. El par company_id ,user_id_custom determina a un único usuario en Sabbatic. |
expense_id |
array<int> | Identificador del gasto. Puede ser múltiple. Ej. [28282, 15475] |
expense_type_id |
int | Identificador del tipo de gasto, puede usarse el servicio GET ExpenseTypes para obtener los tipos de gasto accesibles para un usuario. |
creation_date_from |
string | Límite menor de la fecha de envío del gasto. Ej. 01/01/2017 |
creation_date_to |
string | Límite mayor de la fecha de envío del gasto.. Ej. 31/01/2017 |
expense_date_from |
string | Límite menor de la fecha del gasto. Ej. 15/01/2017 |
expense_date_to |
string | Límite mayor de la fecha del gasto. Ej. 15/02/2017 |
updated_date_from |
string | Limite menor de la fecha de modificación sobre la que se quiere consultar. Ej. 20/02/2017 |
updated_date_to |
string | Limite mayor de la fecha de modificación sobre la que se quiere consultar. Ej. 20/02/2017 |
total |
float | Total del gasto. Ej. 25.70 |
currency |
string | Acrónimo de la divisa establecido en la norma ISO 4217. Ej. EUR ,GBP |
country |
string | Acrónimo del país de la divisa establecido en la norma ISO 3166. Ej. ESP ,GBR |
status_name |
string | Parámetro para filtrar por Estado del gasto. Ej. Digitalizado , Pendiente , Rechazado , Aprobado , Confirmado |
status_update_name |
string | Parámetro para filtrar por los gastos que han esta en algun 'Estado'. Ej. Digitalizado , Pendiente , Rechazado , Aprobado , Confirmado |
status_update_date_from |
string | Limite menor de la fecha de cambio de estado. Sirve para buscar gastos que han cambiado de estado en una fecha. Ej. 20/02/2017 |
status_update_date_to |
string | Limite mayor de la fecha de cambio de estado. Sirve para buscar gastos que han cambiado de estado en una fecha. Ej. 20/02/2017 |
label_id |
array<int> | Identificadores de una o más etiquetas. Ej. [ 1234, 5789, 612457 ] |
reconciled |
boolean | Indica si los gastos filtrados son conciliados true , o no conciliados false . En caso de no incluir este parámetro mostrará ambos, conciliados y no conciliados. |
supplier_vat_id |
string | Parámetro para filtrar por NIF del proveedor. Ej. A12345678 |
supplier_name |
string | Parámetro para filtrar por Razón Social del proveedor. Ej. Compañía de Ejemplo, S.L. |
net_price |
float | Base imponible. Ej. 15.50 |
tax_percent |
float | Porcentaje del impuesto. Ej. 21 |
tax_amount |
float | Importe del impuesto. Ej. 2.50 |
units |
float | Número de unidades del gasto concreto. Ej. 125.50 |
unit_cost |
float | Coste unitario del gasto concreto, multiplicando por units se obtiene el total del gasto. Ej. 0.19 |
entities_per_page |
int | Número de gastos a mostrar en cada página. En caso de omitir dicho parámetro, se mostrarán 20 gastos por página. Actualmente, el límite de gastos mostrados por página en Sabbatic es 100 . |
page |
int | Los resultados del servicio vienen paginados cuando se obtienen más de los especificados en entities_per_page . En caso de omitir dicho parámetro, se mostrará la página 0 . |
Receipts
La entidad Receipts
(Tickets) es la entidad que engloba los tickets de gasto (tanto los introducidos manualmente, como los digitalizados automáticamente).
Este tipo de gasto siempre se corresponde con expense_type_id = 1
en el sistema de Sabbatic. Esta entidad permite las operaciones GET
, POST
, PUT
, DELETE
sobre dichas entidades.
List all receipts
Este servicio permite consultar un listado de tickets digitalizados en Sabbatic. La utilización de diferentes parámetros permite filtrar los resultados y obtener solo los tickets requeridos.
Ejemplo de llamada al servicio List all receipts:
# Llamada desde consola Linux
curl --request GET "https://api.sabbatic.es/v2/expenses/receipts?json=%7B%22expense_date_from%22:%2201/01/2017%22,%22expense_date_to%22:%2210/01/2017%22%7D"
-H "session_id:YOURSESSIONID"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expenses/receipts");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expenses/receipts?json=%7B%7D")
.get()
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expenses/receipts');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'json' => '%7B%7D'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplo de JSON de respuesta:
{
"entities_list": [
{
"expense_id": 242365,
"user": {
"user_id": 2863,
"user_id_custom": "Campo de usuario personalizado",
"username": "email1@gmail.com",
"email": "email1@gmail.com",
"name": "José",
"surname": "Velasco Perez",
"language": "es",
"company": {
"company_id": 289363,
"company_id_custom": "Campo de empresa personalizada 1",
"vat_id": "34571346T",
"name": "Company Name 1",
"postal_code": 20001,
"city": "DONOSTIA-SAN SEBASTIAN",
"address": "Avenida Nº 21",
"province": "GIPUZKOA/GUIPUZCOA",
"country": "ESP"
}
},
"company": {
"company_id": 289363,
"company_id_custom": "Campo de empresa personalizada 1",
"vat_id": "34571346T",
"name": "Company Name 1",
"postal_code": 20001,
"city": "DONOSTIA-SAN SEBASTIAN",
"address": "Avenida Nº 21",
"province": "GIPUZKOA/GUIPUZCOA",
"country": "ESP"
},
"title": "2015/12/12 - Company Name 1 - 15.00",
"expense_type": {
"expense_type_id": 1,
"name": "Ticket"
},
"supplier": {
"vat_id": "A23698412",
"name": "Empresa proveedora 3",
"postal_code": 46009,
"city": "Zaragoza",
"address": "Calle Vistalegre Nº 44",
"province": "ZARAGOZA",
"country": "ESP"
},
"creation_date": "13/12/2017",
"expense_date": "12/12/2017",
"total": 15,
"total_euros": 15,
"currency": "EUR",
"country": "ESP",
"status": {
"name": "digitalizado",
"updated_datetime": "18/09/2018 10:33:15"
},
"labels": [
{
"id": 293621,
"name": "Cenas"
}
],
"image": {
"image_full_url": "https://image-url-public-link",
"image_full_url_list": ["https://image-url-public-link"],
"image_large_url": "https://smallerimage-url-public-link",
"image_large_url_list": ["https://smallerimage-url-public-link"],
"pdf_url": "https://pdf-url-public-link",
"pdf_url_list": ["https://pdf-url-public-link"],
"original_document_url_list": ["https://original-document-url-public-link"]
},
"notes": "Observaciones del gasto"
},
{
"expense_id": 296368,
"user": {
"user_id": 2864,
"user_id_custom": "Campo de usuario personalizado 2",
"username": "email2@outlook.es",
"email": "email2@outlook.es",
"name": "Manuel",
"surname": "Sanchez García",
"language": "es",
"company": {
"company_id": 326986,
"company_id_custom": "Campo de empresa personalizada 2",
"vat_id": "B56326855",
"name": "Company Name 2",
"postal_code": 28001,
"city": "MADRID",
"address": "Gran Via Nº 112",
"province": "MADRID",
"country": "ESP"
}
},
"company": {
"company_id": 326986,
"company_id_custom": "Campo de empresa personalizada 2",
"vat_id": "34571346T",
"name": "Company Name 2",
"postal_code": 28001,
"city": "MADRID",
"address": "Gran Via Nº 112",
"province": "MADRID",
"country": "ESP"
},
"title": "0 - Company Name 4 - 3.25",
"expense_type": {
"expense_type_id": 1,
"name": "Ticket"
},
"supplier": {
"vat_id": "A4536325",
"name": "Empresa proveedora 4",
"postal_code": 46009,
"city": "Malaga",
"address": "Calle Sotomonte Nº 3",
"province": "MALAGA",
"country": "ESP"
},
"creation_date": "29/05/2017",
"expense_date": "11/05/2017",
"taxes": [
{
"net_price": 3.12,
"tax_percent": 4,
"tax_amount": 0.12,
"tax_subtotal": 3.24
}
],
"total": 3.25,
"total_euros": 3.25,
"invoice_equivalency_charge": {
"net_price": 3.12,
"tax_percent": 7,
"tax_amount": 0.21
},
"currency": "EUR",
"country": "ESP",
"status": {
"name": "rechazado",
"reject_reason_id": 5,
"reject_reason": "No se trata de un justificante de gasto procedente de un proveedor, sino de otro tipo de documento.",
"updated_datetime": "20/09/2018 14:58:05"
},
"labels": [
{
"label_id": 276103,
"label_id_custom": "Etiqueta Personalizada 1",
"name": "Gasolina"
},
{
"label_id": 293621,
"name": "Cenas"
}
],
"image": {
"image_full_url": "https://image-url-public-link",
"image_full_url_list": ["https://image-url-public-link"],
"image_large_url": "https://smallerimage-url-public-link",
"image_large_url_list": ["https://smallerimage-url-public-link"],
"pdf_url": "https://pdf-url-public-link",
"pdf_url_list": ["https://pdf-url-public-link"],
"original_document_url_list": ["https://original-document-url-public-link"]
},
"notes": "Observaciones de la factura"
}
],
"total_entities": 2,
"entities_per_page": 20,
"page": 0,
"total_pages": 0
}
HTTP Request
GET https://api.sabbatic.es/v2/expenses/receipts?json={}
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
user_id |
int | Identificador numérico del usuario sobre el que se desea filtrar los gastos. |
username |
string | E-mail del usuario. solo los administradores pueden ver gastos correspondientes a otros usuarios. Ej. youruser@email.xxx |
company_id |
int | Identificador de empresa. Ej. 82828 |
company_id_custom |
string | Identificador propio y personalizable que identifica a una empresa en el sistema propio del cliente. El par company_id ,company_id_custom determina a una única empresa en Sabbatic. |
user_id_custom |
string | Identificador propio y personalizable que identifica a un usuario por empresa en el sistema del propio cliente. El par company_id ,user_id_custom determina a un único usuario en Sabbatic. |
expense_id |
array<int> | Identificador del gasto. Puede ser múltiple. Ej. [28282, 15475] |
expense_type_id |
int | Identificador del tipo de gasto, puede usarse el servicio GET ExpenseTypes para obtener los tipos de gasto accesibles para un usuario. |
creation_date_from |
string | Límite menor de la fecha de envío del gasto. Ej. 01/01/2017 |
creation_date_to |
string | Límite mayor de la fecha de envío del gasto.. Ej. 31/01/2017 |
expense_date_from |
string | Límite menor de la fecha del gasto. Ej. 15/01/2017 |
expense_date_to |
string | Límite mayor de la fecha del gasto. Ej. 15/02/2017 |
updated_date_from |
string | Limite menor de la fecha de modificación sobre la que se quiere consultar. Ej. 20/02/2017 |
updated_date_to |
string | Limite mayor de la fecha de modificación sobre la que se quiere consultar. Ej. 20/02/2017 |
total |
float | Total del gasto. Ej. 25.70 |
currency |
string | Acrónimo de la divisa establecido en la norma ISO 4217. Ej. EUR ,GBP |
country |
string | Acrónimo del país de la divisa establecido en la norma ISO 3166. Ej. ESP ,GBR |
status_name |
string | Parámetro para filtrar por Estado del gasto. Ej. Digitalizado , Pendiente , Rechazado , Aprobado , Confirmado |
label_id |
array<int> | Identificadores de una o más etiquetas. Ej. [ 1234, 5789, 612457 ] |
reconciled |
boolean | Indica si los gastos filtrados son conciliados true , o no conciliados false . En caso de no incluir este parámetro mostrará ambos, conciliados y no conciliados. |
supplier_vat_id |
string | Parámetro para filtrar por NIF del proveedor. Ej. A12345678 |
supplier_name |
string | Parámetro para filtrar por Razón Social del proveedor. Ej. Compañía de Ejemplo, S.L. |
net_price |
float | Base imponible. Ej. 15.50 |
tax_percent |
float | Porcentaje del impuesto. Ej. 21 |
tax_amount |
float | Importe del impuesto. Ej. 2.50 |
entities_per_page |
int | Número de gastos a mostrar en cada página. En caso de omitir dicho parámetro, se mostrarán 20 gastos por página. Actualmente, el límite de gastos mostrados por página en Sabbatic es 100 . |
page |
int | Los resultados del servicio vienen paginados cuando se obtienen más de los especificados en entities_per_page . En caso de omitir dicho parámetro, se mostrará la página 0 . |
Create a receipt
Este servicio permite digitalizar un ticket en Sabbatic La utilización de diferentes parámetros permite la creación de tickets manuales con los datos proporcionados por el mismo usuario.
Ejemplo de llamada al servicio Create a receipt:
# Llamada desde consola Linux
curl --request POST "https://api.sabbatic.es/v2/expenses/receipts"
-H "Content-Type:application/x-www-form-urlencoded"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22image_base64%22:%22SAVWW42FEW11245CQWCV....%22,%22notes%22:%22Viajes al extranjero%22%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expenses/receipts");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
image_base64 = "AVWW42FEW11245CQWCV..."
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22image_base64%22%3A%22SAVWW42FEW11245CQWCV....%22%2C%22notes%22%3A%22Viajes%20al%20extranjero%22%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expenses/receipts")
.post(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expenses/receipts');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"image_base64":"SAVWW42FEW11245CQWCV....","notes":"Viajes al extranjero"}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplo de JSON de respuesta:
{
"expense_id": 296368,
"user": {
"user_id": 2864,
"user_id_custom": "Campo de usuario personalizado 2",
"username": "email2@outlook.es",
"email": "email2@outlook.es",
"name": "Manuel",
"surname": "Sanchez García",
"language": "es",
"company": {
"company_id": 326986,
"company_id_custom": "Campo de empresa personalizada 2",
"vat_id": "B56326855",
"name": "Company Name 2",
"postal_code": 28001,
"city": "MADRID",
"address": "Gran Via Nº 112",
"province": "MADRID",
"country": "ESP"
}
},
"company": {
"company_id": 326986,
"company_id_custom": "Campo de empresa personalizada 2",
"vat_id": "34571346T",
"name": "Company Name 2",
"postal_code": 28001,
"city": "MADRID",
"address": "Gran Via Nº 112",
"province": "MADRID",
"country": "ESP"
},
"title": "0 - Company Name 4 - 3.25",
"expense_type": {
"expense_type_id": 1,
"name": "Ticket"
},
"supplier": {
"vat_id": "A4536325",
"name": "Empresa proveedora 4",
"postal_code": 46009,
"city": "Malaga",
"address": "Calle Sotomonte Nº 3",
"province": "MALAGA",
"country": "ESP"
},
"creation_date": "29/05/2017",
"expense_date": "11/05/2017",
"taxes": [
{
"net_price": 3.12,
"tax_percent": 4,
"tax_amount": 0.12,
"tax_subtotal": 3.24
}
],
"total": 3.25,
"total_euros": 3.25,
"currency": "EUR",
"country": "ESP",
"status": {
"name": "digitalizado"
},
"labels": [
{
"label_id": 276103,
"label_id_custom": "Etiqueta Personalizada 1",
"name": "Gasolina"
},
{
"label_id": 293621,
"name": "Cenas"
}
],
"image": {
"image_full_url": "https://image-url-public-link",
"image_full_url_list": ["https://image-url-public-link"],
"image_large_url": "https://smallerimage-url-public-link",
"image_large_url_list": ["https://smallerimage-url-public-link"],
"pdf_url": "https://pdf-url-public-link",
"pdf_url_list": ["https://pdf-url-public-link"]
},
"alerts": [
{
"alert_id": 123456,
"name": "Alerta limite",
"message": "El importe del gasto de 43,72€, ha sido superior a 15,00€.",
"creation_datetime": "26/07/2021 11:58:14"
}
],
"notes": "Viajes al extranjero"
}
HTTP Request
POST https://api.sabbatic.es/v2/expenses/receipts?json={}
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de datos
* Obligatorios
Parámetro | Tipo | Descripción |
---|---|---|
user_id |
int | Identificador numérico del usuario sobre el que se desea crear el gasto. |
username |
string | E-mail del usuario. Solo los administradores pueden crear gastos en nombre de otros usuarios. Ej. youruser@email.xxx |
company_id |
int | Identificador de empresa. Ej. 82828 . Si el usuario integrador dispone de identificadores propios, debe usar este parámetro para identificar un usuario o empresa en el sistema Sabbatic. |
company_id_custom |
string | Identificador personal que identifica a una empresa en el sistema propio del cliente. El par company_id |
user_id_custom |
string | Identificador personal que identifica a un usuario en el sistema del propio cliente. El par company_id |
expense_company_id |
int | Identificador de Sabbatic de la empresa a la que se asignará el nuevo gasto creado. Si el integrador tiene una configuración multi-empresa, puede asignar un gasto a una de dichas empresas. |
expense_company_id_custom |
int | Identificador propio de la empresa a la que se asignará el nuevo gasto creado. El par company_id |
image_base64 * |
string | Imagen serializada de un ticket en Base64. |
supplier_vat_id |
string | Parámetro opcional (en tickets manuales) para asignar el NIF del proveedor al gasto. Ej. A12345678 |
supplier_name |
string | Parámetro opcional (en tickets manuales) para asignar la Razón Social del proveedor al gasto. Ej. Compañía de Ejemplo, S.L |
expense_date |
string | Parámetro opcional (en tickets manuales) para asignar una fecha al gasto. Ej. 05/01/2017 |
net_price |
float | Parámetro opcional (en tickets manuales) para asignar una base imponible al gasto. Ej. 15.50 |
tax_percent |
float | Parámetro opcional (en tickets manuales) para asignar un porcentaje de impuesto al gasto. Ej. 21 |
total |
float | Parámetro opcional (en tickets manuales) para asignar un total al gasto. Ej. 25.50 |
country |
string | Parámetro opcional para asignar la divisa y país al gasto, segun la norma ISO 3166-1. Ej. ESP . En caso de no especificarlo, el parámetro por defecto es ESP |
label_id |
array<int> | Parámetro opcional para asignar etiquetas al gasto. Ej. [ 1234, 5789, 612457 ] |
notes |
string | Campo de texto libre hasta 255 carácteres, para incluir cualquier observación al ticket. |
no_response |
boolean | Parámetro para indicar si se desea recibir una notificacion con el resultado del proceso cuando haya terminado. Para recuperar los datos hay que hacer GET expenses/receipts |
Edit a receipt
Este servicio permite editar un ticket digitalizado en Sabbatic. Cabe destacar que dependiendo del usuario, del flujo de aprobación y del tipo de ticket (manual o automático) algunos campos no son editables. De tener los permisos adecuados, se modificarán los valores de aquellos parámetros que se envíen en la llamada permaneciendo inalterados los que no.
Ejemplo de llamada al servicio "Edit a receipt":
# Llamada desde consola Linux
curl --request PUT "https://api.sabbatic.es/v2/expenses/receipts"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22expense_id%22:[287345,289203],%22total%22:23.45%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expenses/receipts");
var request = new RestRequest(Method.PUT);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
expense_id = 1234,
total = 120.4
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22expense_id%22%3A%20%5B675039%5D%2C%22total%22%3A%20%2223.45%22%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expenses/receipts")
.put(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expenses/receipts');
$request->setMethod(HTTP_METH_PUT);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"expense_id":[675039],"total":"23.45"}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
PUT https://api.sabbatic.es/v2/expenses/receipts?json={}
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
* Obligatorios
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
expense_id * |
array<int> | Identificadores de los tickets. Puede ser múltiple Ej. [ 28282, 15475 ] |
Parámetros de datos
Parámetro | Tipo | Descripción |
---|---|---|
supplier_vat_id |
string | NIF del proveedor. Ej. A12345678 |
supplier_name |
string | Razón Social del proveedor. Ej. Compañía de Ejemplo, S.L. |
expense_date |
string | Fecha de gasto en formato dd/mm/yyyy. Ej. 05/01/2017 |
total |
float | Importe total del gasto. |
country |
string | Acrónimo del país establecido en la norma ISO 3166. Ej. ESP |
status_name |
string | Estado del gasto. Ej. Rechazado , Aprobado , Confirmado . También puede reportarse un gasto asignando el valor Reportado . |
status_reason |
string | Motivo del cambio de estado. Solo se devuelve cuando el estado es rechazado. |
label_id |
array<int> | Identificadores de una o más etiquetas. Se sobreescribirá la totalidad de las mismas. Ej. [ 1234, 5789, 612457 ] |
notes |
string | Campo de texto libre hasta 255 carácteres, para incluir cualquier observación al ticket que se desee. |
Delete a receipt
Este servicio permite eliminar un ticket en Sabbatic.
Ejemplo de llamada al servicio Delete a receipt:
# Llamada desde consola Linux
curl --request DELETE "https://api.sabbatic.es/v2/expenses/receipts"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22expense_id%22:[287345]%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expenses/receipts");
var request = new RestRequest(Method.DELETE);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
expense_id = new Int[]{
1234
}
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22expense_id%22%3A%5B287345%5D%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expenses/receipts")
.delete(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expenses/receipts');
$request->setMethod(HTTP_METH_DELETE);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"expense_id":[287345]}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
DELETE https://api.sabbatic.es/v2/expenses/receipts?json={}
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
expense_id |
array<int> | Identificadores de los tickets que se desea eliminar. Puede ser múltiple. Ej. [ 28282, 15475 ] |
Invoices
La entidad Invoices (Facturas) es la entidad que engloba las facturas de los usuarios con campos adicionales a los que suele llevar un ticket.
Este tipo de gasto siempre se corresponde con expense_type_id = 2
en el sistema de Sabbatic. Esta entidad permite la operacion GET
, POST
, PUT
, DELETE
sobre dichas entidades.
List all invoices
Este servicio permite consultar un listado de facturas digitalizadas en Sabbatic. La utilización de diferentes parámetros permite filtrar los resultados y obtener solo las facturas requeridas.
Ejemplo de llamada al servicio List all invoices:
# Llamada desde consola Linux
curl --request GET "https://api.sabbatic.es/v2/expenses/invoices?json=%7B%22expense_date_from%22:%2201/01/2017%22,%22expense_date_to%22:%2210/01/2017%22%7D"
-H "session_id:YOURSESSIONID"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expenses/invoices");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expenses/invoices?json=%7B%7D")
.get()
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expenses/invoices');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'json' => '%7B%7D'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplo de JSON de respuesta:
{
"entities_list": [
{
"expense_id": 136963,
"user": {
"user_id": 2864,
"user_id_custom": "Campo de usuario personalizado 2",
"username": "email2@outlook.es",
"email": "email2@outlook.es",
"name": "Manuel",
"surname": "Sanchez García",
"language": "es",
"company": {
"company_id": 326986,
"company_id_custom": "Campo de empresa personalizada 2",
"vat_id": "B56326855",
"name": "Company Name 2",
"postal_code": 28001,
"city": "MADRID",
"address": "Gran Via Nº 112",
"province": "MADRID",
"country": "ESP"
}
},
"company": {
"company_id": 326986,
"company_id_custom": "Campo de empresa personalizada 2",
"vat_id": "34571346T",
"name": "Company Name 2",
"postal_code": 28001,
"city": "MADRID",
"address": "Gran Via Nº 112",
"province": "MADRID",
"country": "ESP"
},
"title": "0 - Company Name 2 - 10.74",
"expense_type": {
"expense_type_id": 2,
"name": "Factura"
},
"supplier": {
"vat_id": "A89636212",
"name": "Empresa proveedora 2",
"postal_code": 46009,
"city": "Valencia",
"address": "Calle Mayor Nº 11",
"province": "Valencia",
"country": "ESP"
},
"creation_date": "18/01/2017",
"expense_date": "18/01/2017",
"taxes": [
{
"net_price": 11.31,
"tax_percent": 10,
"tax_amount": 1.13
}
],
"tax_retention_percentage": 15,
"tax_retention_import": 1.7,
"total": 10.74,
"total_euros": 10.74,
"invoice_equivalency_charge": {
"tax_percent": 7,
"tax_amount": 25.58
},
"invoice_number": "FXE45639-A4",
"bank_accounts": [
{
"bank_account": "ES4236598653245698723657"
},
{
"bank_account": "ES2365587423659863523698"
}
],
"free_of_taxes": false,
"currency": "EUR",
"country": "ESP",
"status": {
"name": "aprobado",
"updated_datetime": "18/09/2018 15:23:11"
},
"labels": [
{
"label_id": 276103,
"label_id_custom":"Etiqueta Personalizada 1",
"name": "Gasolina"
},
{
"label_id": 293621,
"name": "Cenas"
}
],
"image": {
"image_full_url": "https://image-url-public-link",
"image_full_url_list": ["https://image-url-public-link"],
"image_large_url": "https://smallerimage-url-public-link",
"image_large_url_list": ["https://smallerimage-url-public-link"],
"pdf_url": "https://pdf-url-public-link",
"pdf_url_list": ["https://pdf-url-public-link"],
"original_document_url_list": ["https://original-document-url-public-link"]
},
"alerts": [
{
"alert_id": 123456,
"name": "Alerta limite",
"message": "El importe del gasto de 43,72€, ha sido superior a 15,00€.",
"creation_datetime": "26/07/2021 11:58:14"
}
],
"notes": "Observaciones de la factura"
},
{
"expense_id": 236589,
"user": {
"user_id": 3125,
"user_id_custom": "Campo de usuario personalizado 3",
"username": "email3@gmail.es",
"email": "email3@gmail.es",
"name": "Antonio",
"surname": "Rodriguez Montero",
"language": "es",
"company": {
"company_id": 326986,
"company_id_custom": "Campo de empresa personalizada 2",
"vat_id": "B56326855",
"name": "Company Name 2",
"postal_code": 28001,
"city": "MADRID",
"address": "Gran Via Nº 112",
"province": "MADRID",
"country": "ESP"
}
},
"company": {
"company_id": 326986,
"company_id_custom": "Campo de empresa personalizada 2",
"vat_id": "34571346T",
"name": "Company Name 2",
"postal_code": 28001,
"city": "MADRID",
"address": "Gran Via Nº 112",
"province": "MADRID",
"country": "ESP"
},
"title": "0 - Company Name 5 - 10.74",
"expense_type": {
"expense_type_id": 2,
"name": "Factura"
},
"supplier": {
"vat_id": "A56333266",
"name": "Empresa proveedora 5",
"postal_code": 33002,
"city": "Oviedo",
"address": "Calle General Nº 61",
"province": "ASTURIAS",
"country": "ESP"
},
"creation_date": "18/01/2017",
"expense_date": "18/01/2017",
"taxes": [
{
"net_price": 11.31,
"tax_percent": 10,
"tax_amount": 1.13
}
],
"tax_retention_percentage": 15,
"tax_retention_import": 1.7,
"total": 10.74,
"total_euros": 10.74,
"reconciled": true,
"invoice_number": "GBEE//203943",
"bank_accounts": [
{
"bank_account": "ES4236598653245698723657"
},
{
"bank_account": "ES2365587423659863523698"
}
],
"free_of_taxes": false,
"currency": "EUR",
"country": "ESP",
"status": {
"name": "digitalizado"
},
"labels": [
{
"label_id": 276103,
"label_id_custom":"Etiqueta Personalizada 1",
"name": "Gasolina"
},
{
"label_id": 293621,
"name": "Cenas"
}
],
"image": {
"image_full_url": "https://image-url-public-link",
"image_full_url_list": ["https://image-url-public-link"],
"image_large_url": "https://smallerimage-url-public-link",
"image_large_url_list": ["https://smallerimage-url-public-link"],
"pdf_url": "https://pdf-url-public-link",
"pdf_url_list": ["https://pdf-url-public-link"],
"original_document_url_list": ["https://original-document-url-public-link"]
},
"notes": "Observaciones de la factura"
}
],
"total_entities": 2,
"entities_per_page": 20,
"page": 0,
"total_pages": 0
}
HTTP Request
GET https://api.sabbatic.es/v2/expenses/invoices?json={}
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
user_id |
int | Identificador numérico del usuario sobre el que se desea filtrar los gastos. |
username |
string | E-mail del usuario. solo los administradores pueden ver gastos correspondientes a otros usuarios. Ej. youruser@email.xxx |
company_id |
int | Identificador de empresa. Ej. 82828 |
company_id_custom |
string | Identificador propio y personalizable que identifica a una empresa en el sistema propio del cliente. El par company_id ,company_id_custom determina a una única empresa en Sabbatic. |
user_id_custom |
string | Identificador propio y personalizable que identifica a un usuario por empresa en el sistema del propio cliente. El par company_id ,user_id_custom determina a un único usuario en Sabbatic. |
expense_id |
array<int> | Identificador del gasto. Puede ser múltiple. Ej. [28282, 15475] |
expense_type_id |
int | Identificador del tipo de gasto, puede usarse el servicio GET ExpenseTypes para obtener los tipos de gasto accesibles para un usuario. |
creation_date_from |
string | Límite menor de la fecha de envío del gasto. Ej. 01/01/2017 |
creation_date_to |
string | Límite mayor de la fecha de envío del gasto.. Ej. 31/01/2017 |
expense_date_from |
string | Límite menor de la fecha del gasto. Ej. 15/01/2017 |
expense_date_to |
string | Límite mayor de la fecha del gasto. Ej. 15/02/2017 |
updated_date_from |
string | Limite menor de la fecha de modificación sobre la que se quiere consultar. Ej. 20/02/2017 |
updated_date_to |
string | Limite mayor de la fecha de modificación sobre la que se quiere consultar. Ej. 20/02/2017 |
total |
float | Total del gasto. Ej. 25.70 |
currency |
string | Acrónimo de la divisa establecido en la norma ISO 4217. Ej. EUR ,GBP |
country |
string | Acrónimo del país de la divisa establecido en la norma ISO 3166. Ej. ESP ,GBR |
status_name |
string | Parámetro para filtrar por Estado del gasto. Ej. Digitalizado , Pendiente , Rechazado , Aprobado , Confirmado |
label_id |
array<int> | Identificadores de una o más etiquetas. Ej. [ 1234, 5789, 612457 ] |
reconciled |
boolean | Indica si los gastos filtrados son conciliados true , o no conciliados false . En caso de no incluir este parámetro mostrará ambos, conciliados y no conciliados. |
supplier_vat_id |
string | Parámetro para filtrar por NIF del proveedor. Ej. A12345678 |
supplier_name |
string | Parámetro para filtrar por Razón Social del proveedor. Ej. Compañía de Ejemplo, S.L. |
net_price |
float | Base imponible. Ej. 15.50 |
tax_percent |
float | Porcentaje del impuesto. Ej. 21 |
tax_amount |
float | Importe del impuesto. Ej. 2.50 |
entities_per_page |
int | Número de gastos a mostrar en cada página. En caso de omitir dicho parámetro, se mostrarán 20 gastos por página. Actualmente, el límite de gastos mostrados por página en Sabbatic es 100 . |
page |
int | Los resultados del servicio vienen paginados cuando se obtienen más de los especificados en entities_per_page . En caso de omitir dicho parámetro, se mostrará la página 0 . |
Create an invoice
Este servicio permite crear un gasto del tipo 'Invoice' en Sabbatic.
Ejemplo de llamada al servicio "Create an invoice":
# Llamada desde consola Linux
curl --request POST "https://api.sabbatic.es/v2/expenses/invoices"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22image_base64%22:%22SAVWW42FEW11245CQWCV....%22,%22notes%22:%22Cliente con retención de IVA%22%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expenses/invoices");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
image_base64 = "BASE64IMAGE..."
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22image_base64%22%3A%22SAVWW42FEW11245CQWCV....%22%2C%22notes%22%3A%22Cliente%20con%20retenci%C3%B3n%20de%20IVA%22%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expenses/invoices")
.post(body)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expenses/invoices');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID',
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"image_base64":"SAVWW42FEW11245CQWCV....","notes":"Cliente con retención de IVA"}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplo de JSON de respuesta:
{
"expense_id": 236589,
"user": {
"user_id": 3125,
"user_id_custom": "Campo de usuario personalizado 3",
"username": "email3@gmail.es",
"email": "email3@gmail.es",
"name": "Antonio",
"surname": "Rodriguez Montero",
"language": "es",
"company": {
"company_id": 326986,
"company_id_custom": "Campo de empresa personalizada 2",
"vat_id": "B56326855",
"name": "Company Name 2",
"postal_code": 28001,
"city": "MADRID",
"address": "Gran Via Nº 112",
"province": "MADRID",
"country": "ESP"
}
},
"company": {
"company_id": 326986,
"company_id_custom": "Campo de empresa personalizada 2",
"vat_id": "34571346T",
"name": "Company Name 2",
"postal_code": 28001,
"city": "MADRID",
"address": "Gran Via Nº 112",
"province": "MADRID",
"country": "ESP"
},
"title": "0 - Company Name 5 - 10.74",
"expense_type": {
"expense_type_id": 2,
"name": "Factura"
},
"supplier": {
"vat_id": "A56333266",
"name": "Empresa proveedora 5",
"postal_code": 33002,
"city": "Oviedo",
"address": "Calle General Nº 61",
"province": "ASTURIAS",
"country": "ESP"
},
"creation_date": "18/01/2017",
"expense_date": "18/01/2017",
"taxes": [
{
"net_price": 11.31,
"tax_percent": 10,
"tax_amount": 1.13,
"tax_subtotal": 12.44
}
],
"tax_retention_base": 11.31,
"tax_retention_percentage": 15,
"tax_retention_import": 1.7,
"total": 10.74,
"total_euros": 10.74,
"invoice_equivalency_charge": {
"net_price": 11.31,
"tax_percent": 15,
"tax_amount": 1.7
},
"invoice_equivalency_charge_list": [
{
"net_price": 11.31,
"tax_percent": 15,
"tax_amount": 1.7
}
],
"invoice_number": "GBEE//203943",
"bank_accounts": [
{
"bank_account": "ES4236598653245698723657"
},
{
"bank_account": "ES2365587423659863523698"
}
],
"currency": "EUR",
"currency_base": "EUR",
"reconciled": false,
"country": "ESP",
"status": {
"name": "digitalizado"
},
"labels": [
{
"label_id": 276103,
"label_id_custom":"Etiqueta Personalizada 1",
"name": "Gasolina"
},
{
"label_id": 293621,
"name": "Cenas"
}
],
"image": {
"image_full_url": "https://image-url-public-link",
"image_full_url_list": ["https://image-url-public-link"],
"image_large_url": "https://smallerimage-url-public-link",
"image_large_url_list": ["https://smallerimage-url-public-link"],
"pdf_url": "https://pdf-url-public-link",
"pdf_url_list": ["https://pdf-url-public-link"]
},
"alerts": [
{
"alert_id": 123456,
"name": "Alerta limite",
"message": "El importe del gasto de 43,72€, ha sido superior a 15,00€.",
"creation_datetime": "26/07/2021 11:58:14"
}
],
"notes": "Cliente con retención de IVA"
}
HTTP Request
POST https://api.sabbatic.es/v2/expenses/invoices
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de datos
* Obligatorios
Parámetro | Tipo | Descripción |
---|---|---|
user_id |
int | Identificador numérico del usuario sobre el que se desea crear el gasto. |
username |
string | E-mail del usuario. Solo los administradores pueden crear gastos en nombre de otros usuarios. Ej. youruser@email.xxx |
company_id |
int | Identificador de empresa. Ej. 82828 . Si el usuario integrador dispone de identificadores propios, debe usar este parámetro para identificar un usuario o empresa en el sistema Sabbatic. |
company_id_custom |
string | Identificador personal que identifica a una empresa en el sistema propio del cliente. El par company_id |
user_id_custom |
string | Identificador personal que identifica a un usuario en el sistema del propio cliente. El par company_id |
expense_company_id |
int | Identificador de Sabbatic de la empresa a la que se asignará el nuevo gasto creado. Si el integrador tiene una configuración multi-empresa, puede asignar un gasto a una de dichas empresas. |
expense_company_id_custom |
int | Identificador propio de la empresa a la que se asignará el nuevo gasto creado. El par company_id |
image_base64 * |
string | Imagen serializada de un ticket en Base64. |
supplier_vat_id |
string | Parámetro opcional (en tickets manuales) para asignar el NIF del proveedor al gasto. Ej. A12345678 |
supplier_name |
string | Parámetro opcional (en tickets manuales) para asignar la Razón Social del proveedor al gasto. Ej. Compañía de Ejemplo, S.L |
expense_date |
string | Parámetro opcional (en tickets manuales) para asignar una fecha al gasto. Ej. 05/01/2017 |
net_price |
float | Parámetro opcional (en tickets manuales) para asignar una base imponible al gasto. Ej. 15.50 |
tax_percent |
float | Parámetro opcional (en tickets manuales) para asignar un porcentaje de impuesto al gasto. Ej. 21 |
total |
float | Parámetro opcional (en tickets manuales) para asignar un total al gasto. Ej. 25.50 |
country |
string | Parámetro opcional para asignar la divisa y país al gasto, segun la norma ISO 3166-1. Ej. ESP . En caso de no especificarlo, el parámetro por defecto es ESP |
label_id |
array<int> | Parámetro opcional para asignar etiquetas al gasto. Ej. [ 1234, 5789, 612457 ] |
notes |
string | Campo de texto libre hasta 255 carácteres, para incluir cualquier observación al ticket. |
no_response |
boolean | Parámetro para indicar si se desea recibir una notificacion con el resultado del proceso cuando haya terminado. Para recuperar los datos hay que hacer GET expenses/receipts |
Edit an invoice
Este servicio permite editar una factura digitalizada en Sabbatic. Cabe destacar que dependiendo del usuario, del flujo de aprobación y el campo a editar puede no tener efecto dicha acción. De tener los permisos adecuados, se modificarán los valores de aquellos parámetros que se envíen en la llamada permaneciendo inalterados los que no.
Ejemplo de llamada al servicio Edit an invoice:
# Llamada desde consola Linux
curl --request PUT "https://api.sabbatic.es/v2/expenses/invoices"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22expense_id%22:[287345,289203],%22total%22:23.45%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expenses/invoices");
var request = new RestRequest(Method.PUT);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
expense_id = 1234,
total = 14.12
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22expense_id%22%3A%5B287345%2C289203%5D%2C%22total%22%3A23.45%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expenses/invoices")
.put(body)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expenses/invoices');
$request->setMethod(HTTP_METH_PUT);
$request->setHeaders(array(
'Postman-Token' => 'acc1dddb-9fe3-495a-a081-3b88650095d9',
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID',
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"expense_id":[287345,289203],"total":23.45}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
PUT https://api.sabbatic.es/v2/expenses/receipts
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
* Obligatorios
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
expense_id * |
array<int> | Identificadores de los tickets. Puede ser múltiple Ej. [ 28282, 15475 ] |
Parámetros de datos
Parámetro | Tipo | Descripción |
---|---|---|
supplier_vat_id |
string | NIF del proveedor. Ej. A12345678 |
supplier_name |
string | Razón Social del proveedor. Ej. Compañía de Ejemplo, S.L. |
expense_date |
string | Fecha de gasto en formato dd/mm/yyyy. Ej. 05/01/2017 |
total |
float | Importe total del gasto. |
country |
string | Acrónimo del país establecido en la norma ISO 3166. Ej. ESP |
status_name |
string | Estado del gasto. Ej. Rechazado , Aprobado , Confirmado . También puede reportarse un gasto asignando el valor Reportado . |
status_reason |
string | Motivo del cambio de estado. Solo se devuelve cuando el estado es rechazado. |
label_id |
array<int> | Identificadores de una o más etiquetas. Se sobreescribirá la totalidad de las mismas. Ej. [ 1234, 5789, 612457 ] |
notes |
string | Campo de texto libre hasta 255 carácteres, para incluir cualquier observación al ticket que se desee. |
Delete an invoice
Este servicio permite eliminar una factura en Sabbatic.
Ejemplo de llamada al servicio "Delete an invoice":
# Llamada desde consola Linux
curl --request DELETE "https://api.sabbatic.es/v2/expenses/invoices"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22expense_id%22:[287345]%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expenses/invoices");
var request = new RestRequest(Method.DELETE);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
expense_id = new Int[]{
1234,
4321
}
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22expense_id%22%3A%5B287345%5D%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expenses/invoices")
.delete(body)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expenses/invoices');
$request->setMethod(HTTP_METH_DELETE);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID',
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"expense_id":[287345]}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
DELETE https://api.sabbatic.es/v2/expenses/invoices
HEADER Parámetros
Parámetro | Descripción |
---|---|
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
expense_id |
array<int> | Identificadores de las facturas que se desea eliminar. Puede ser múltiple. Ej. [ 28282, 15475 ] |
Miscelánea
La entidad Miscelánea (Misc) es la entidad que engloba cualquier otro tipo de gasto como kilometrajes, dietas, pernoctaciones, etc...
Esta entidad permite las operaciones GET
, POST
, PUT
, DELETE
sobre los gastos miscelánea enviados por el usuario. Dichos tipos de gastos estarán identificados por un expense_type_id
que se puede consultar en el servicio GET ExpenseTypes
.
Para cualquier uso de estos servicios es imprescindible usar el parámetro input expense_type_id
adecuado.
List all misc
Este servicio permite listar los gastos de un tipo de gasto Misc en Sabbatic.
Ejemplo de llamada al servicio List all misc (en este caso Kilometraje):
# Llamada desde consola Linux
curl --request GET "https://api.sabbatic.es/v2/expenses/misc?json=%7B%22expense_type_id%22:3%7D"
-H "session_id:YOURSESSIONID"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expenses/misc");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
expense_type_id = 3
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expenses/misc?json=%7B%22expense_type_id%22:3%7D")
.get()
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expenses/misc');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'json' => '%7B%22expense_type_id%22:3%7D'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
Ejemplo de JSON de respuesta:
{
"entities_list": [
{
"expense_id": 360252,
"user": {
"user_id": 1563,
"user_id_custom": "Cliente personalizado 4",
"username": "email4@gmail.com",
"email": "email4@gmail.com",
"company": {
"company_id": 2365869,
"company_id_custom": "Compañia personalizada 6",
"vat_id": "A23369698",
"name": "Compañia del usuario S.L.",
"postal_code": 46001,
"city": "MADRID",
"address": "Camino Mundo Nº 50",
"province": "MADRID",
"country": "ESP"
},
"name": "Juan",
"surname": "Fernandez Fernandez",
"language": "es"
},
"company": {
"company_id": 2365869,
"company_id_custom": "Compañia personalizada 6",
"vat_id": "A23369698",
"name": "Compañia del usuario S.L.",
"postal_code": 46001,
"city": "MADRID",
"address": "Camino Mundo Nº 50",
"province": "MADRID",
"country": "ESP"
},
"title": "Kilometraje - 110 Km",
"expense_type": {
"expense_type_id": 3,
"name": "Kilometraje"
},
"creation_date": "25/09/2017",
"expense_date": "26/01/2017",
"units": 110,
"unit_cost": 0.2,
"total": 22,
"total_euros": 22,
"currency": "EUR",
"country": "ESP",
"status": {
"name": "aprobado",
"updated_datetime": "18/09/2018 19:03:46"
},
"image": {
"image_full_url": "https://image-url-public-link",
"image_full_url_list": ["https://image-url-public-link"],
"image_large_url": "https://smallerimage-url-public-link",
"image_large_url_list": ["https://smallerimage-url-public-link"],
"pdf_url": "https://pdf-url-public-link",
"pdf_url_list": ["https://pdf-url-public-link"]
},
"notes": "Autopista"
},
{
"expense_id": 225254,
"user": {
"user_id": 1999,
"username": "email1@sabbatic.es",
"email": "email1@sabbatic.es",
"company": {
"company_id": 211252,
"vat_id": "B12245898",
"name": "Compañia del usuario 2 S.L.",
"postal_code": 46001,
"city": "MADRID",
"address": "Camino Mundo Nº 51",
"province": "MADRID",
"country": "ESP"
},
"name": "Isabel",
"surname": "Valero Jimenez",
"language": "es"
},
"company": {
"company_id": 211252,
"vat_id": "B12245898",
"name": "Compañia del usuario 2 S.L.",
"postal_code": 46001,
"city": "MADRID",
"address": "Camino Mundo Nº 51",
"province": "MADRID",
"country": "ESP"
},
"title": "Kilometraje - 205.33 Km",
"expense_type": {
"expense_type_id": 3,
"name": "Kilometraje"
},
"creation_date": "25/09/2017",
"expense_date": "26/01/2017",
"units": 205.33,
"unit_cost": 0.19,
"total": 39.01,
"total_euros": 39.01,
"currency": "EUR",
"country": "ESP",
"status": {
"name": "digitalizado"
},
"labels": [
{
"label_id": 272357,
"name": "Comidas"
},
{
"label_id": 236586,
"name": "Tarjeta de Empresa"
}
]
}
],
"total_entities": 2,
"entities_per_page": 20,
"page": 0,
"total_pages": 0
}
HTTP Request
GET https://api.sabbatic.es/v2/expenses/misc?json={}
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
* Obligatorio
Parámetro | Tipo | Descripción |
---|---|---|
expense_type_id * |
int | Identificador del tipo de gasto, puede usarse el servicio GET ExpenseTypes para obtener los tipos de gasto accesibles para un usuario. |
user_id |
int | Identificador numérico del usuario sobre el que se desea filtrar los gastos. |
username |
string | E-mail del usuario. solo los administradores pueden ver gastos correspondientes a otros usuarios. Ej. youruser@email.xxx |
company_id |
int | Identificador de empresa. Ej. 82828 |
company_id_custom |
string | Identificador propio y personalizable que identifica a una empresa en el sistema propio del cliente. El par company_id ,company_id_custom determina a una única empresa en Sabbatic. |
user_id_custom |
string | Identificador propio y personalizable que identifica a un usuario por empresa en el sistema del propio cliente. El par company_id ,user_id_custom determina a un único usuario en Sabbatic. |
expense_id |
array<int> | Identificador del gasto. Puede ser múltiple. Ej. [28282, 15475] |
creation_date_from |
string | Límite menor de la fecha de envío del gasto. Ej. 01/01/2017 |
creation_date_to |
string | Límite mayor de la fecha de envío del gasto.. Ej. 31/01/2017 |
expense_date_from |
string | Límite menor de la fecha del gasto. Ej. 15/01/2017 |
expense_date_to |
string | Límite mayor de la fecha del gasto. Ej. 15/02/2017 |
updated_date_from |
string | Limite menor de la fecha de modificación sobre la que se quiere consultar. Ej. 20/02/2017 |
updated_date_to |
string | Limite mayor de la fecha de modificación sobre la que se quiere consultar. Ej. 20/02/2017 |
total |
float | Total del gasto. Ej. 25.70 |
currency |
string | Acrónimo de la divisa establecido en la norma ISO 4217. Ej. EUR ,GBP |
country |
string | Acrónimo del país de la divisa establecido en la norma ISO 3166. Ej. ESP ,GBR |
status_name |
string | Parámetro para filtrar por Estado del gasto. Ej. Digitalizado , Pendiente , Rechazado , Aprobado , Confirmado |
label_id |
array<int> | Identificadores de una o más etiquetas. Ej. [ 1234, 5789, 612457 ] |
reconciled |
boolean | Indica si los gastos filtrados son conciliados true , o no conciliados false . En caso de no incluir este parámetro mostrará ambos, conciliados y no conciliados. |
entities_per_page |
int | Número de gastos a mostrar en cada página. En caso de omitir dicho parámetro, se mostrarán 20 gastos por página. Actualmente, el límite de gastos mostrados por página en Sabbatic es 100 . |
page |
int | Los resultados del servicio vienen paginados cuando se obtienen más de los especificados en entities_per_page . En caso de omitir dicho parámetro, se mostrará la página 0 . |
Create a Misc Expense
Este servicio permite crear un gasto miscelánea en Sabbatic.
Ejemplo de llamada al servicio Create a misc expense:
# Llamada desde consola Linux
curl --request POST "https://api.sabbatic.es/v2/expenses/misc"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22expense_type_id%22:3,%22expense_date%22:%2205/02/2017%22,%22units%22:89.36,%22unit_cost%22:0.19%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expenses/misc");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
expense_type_id = 3,
expense_date = "05/04/2020",
units = 2.3,
unit_cost = 0.19
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22expense_type_id%22%3A3%2C%22expense_date%22%3A%2205%2F02%2F2017%22%2C%22units%22%3A89.36%2C%22unit_cost%22%3A0.19%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expenses/misc")
.post(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expenses/misc');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"expense_type_id":3,"expense_date":"05/02/2017","units":89.36,"unit_cost":0.19}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplo de JSON de respuesta:
{
"expense_id": 312611,
"user": {
"user_id": 789,
"user_id_custom": "Usuario personalizado",
"username": "youruser@email.xxx",
"email": "youruser@email.xxx",
"company": {
"company_id": 289363,
"company_id_custom": "Id Custom",
"vat_id": "A36598523",
"name": "Empresa Usuario Nombre",
"postal_code": 40020,
"city": "VALENCIA",
"address": "Plaza Arroyo, Nº 31",
"province": "VALENCIA",
"country": "ESP"
},
"name": "Cesar",
"surname": "Garcia Atienza",
"language": "es"
},
"company": {
"company_id": 289363,
"company_id_custom": "Id Custom",
"vat_id": "A36598523",
"name": "Empresa Usuario Nombre",
"postal_code": 40020,
"city": "VALENCIA",
"address": "Plaza Arroyo, Nº 31",
"province": "VALENCIA",
"country": "ESP"
},
"title": "Kilometraje - 89.36 Km",
"expense_type": {
"expense_type_id": 3,
"name": "Kilometraje"
},
"creation_date": "26/09/2017",
"expense_date": "26/01/2017",
"units": 89.36,
"unit_cost": 0.19,
"total": 16.9784,
"total_euros": 16.9784,
"alerts": [
{
"alert_id": 123456,
"name": "Alerta limite",
"message": "El importe del gasto de 43,72€, ha sido superior a 15,00€.",
"creation_datetime": "26/07/2021 11:58:14"
}
],
"details": {
"start": {
"name": "Donostia, Gipuzkoa, Spain",
"type": "coordinate",
"value": {
"lat": 43.32,
"lng": -1.98
}
},
"end": {
"name": "Aretxabaleta, Gipuzkoa, Spain",
"type": "coordinate",
"value": {
"lat": 43.03611,
"lng": -2.50444
}
},
"units": {
"type": "decimal",
"value": 74.07
},
"unit_cost": {
"name": "Standar",
"type": "decimal",
"value": 0.4536,
"option_id": 99
}
},
"currency": "EUR",
"country": "ESP",
"status": {
"name": "digitalizado"
}
}
HTTP Request
POST https://api.sabbatic.es/v2/expenses/misc
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de datos
* Obligatorios
Parámetro | Tipo | Descripción |
---|---|---|
user_id |
int | Identificador numérico del usuario sobre el que se desea crear el gasto. |
username |
string | E-mail del usuario. Solo los administradores pueden crear gastos en nombre de otros usuarios. Ej. youruser@email.xxx |
company_id |
int | Identificador de empresa. Ej. 82828 . Si el usuario integrador dispone de identificadores propios, debe usar este parámetro para identificar un usuario o empresa en el sistema Sabbatic. |
company_id_custom |
string | Identificador personal que identifica a una empresa en el sistema propio del cliente. El par company_id |
user_id_custom |
string | Identificador personal que identifica a un usuario en el sistema del propio cliente. El par company_id |
expense_company_id |
int | Identificador de Sabbatic de la empresa a la que se asignará el nuevo gasto creado. Si el integrador tiene una configuración multi-empresa, puede asignar un gasto a una de dichas empresas. |
expense_company_id_custom |
int | Identificador propio de la empresa a la que se asignará el nuevo gasto creado. El par company_id |
image_base64 * |
string | Imagen serializada de un ticket en Base64. |
supplier_vat_id |
string | Parámetro opcional (en tickets manuales) para asignar el NIF del proveedor al gasto. Ej. A12345678 |
supplier_name |
string | Parámetro opcional (en tickets manuales) para asignar la Razón Social del proveedor al gasto. Ej. Compañía de Ejemplo, S.L |
expense_date |
string | Parámetro opcional (en tickets manuales) para asignar una fecha al gasto. Ej. 05/01/2017 |
net_price |
float | Parámetro opcional (en tickets manuales) para asignar una base imponible al gasto. Ej. 15.50 |
tax_percent |
float | Parámetro opcional (en tickets manuales) para asignar un porcentaje de impuesto al gasto. Ej. 21 |
total |
float | Parámetro opcional (en tickets manuales) para asignar un total al gasto. Ej. 25.50 |
country |
string | Parámetro opcional para asignar la divisa y país al gasto, segun la norma ISO 3166-1. Ej. ESP . En caso de no especificarlo, el parámetro por defecto es ESP |
label_id |
array<int> | Parámetro opcional para asignar etiquetas al gasto. Ej. [ 1234, 5789, 612457 ] |
notes |
string | Campo de texto libre hasta 255 carácteres, para incluir cualquier observación al ticket. |
no_response |
boolean | Parámetro para indicar si se desea recibir una notificacion con el resultado del proceso cuando haya terminado. Para recuperar los datos hay que hacer GET expenses/receipts |
Edit a Misc Expense
Este servicio permite editar un gasto miscelánea en Sabbatic. Cabe destacar que dependiendo del usuario y del flujo de aprobación algunos campos no son editables. En su caso, se modificarán los valores de aquellos parámetros que se envíen en la llamada.
Ejemplo de llamada al servicio Edit a misc expense:
# Llamada desde consola Linux
curl --request PUT "https://api.sabbatic.es/v2/expenses/misc"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22expense_type%22:3,%22expense_id%22:[289203],%22units%22:123.45%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expenses/misc");
var request = new RestRequest(Method.PUT);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
expense_id = 1234,
units = 2.3
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22expense_id%22%3A%5B289203%5D%2C%22expense_type_id%22%3A3%2C%C2%A1%2C%22units%22%3A123.45%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expenses/misc")
.put(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expenses/misc');
$request->setMethod(HTTP_METH_PUT);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"expense_id":[289203],"expense_type_id":3,¡,"units":123.45}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
PUT https://api.sabbatic.es/v2/expenses/misc
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
expense_id |
string | Identificadores de los gastos misc que se desean editar. Puede ser múltiple. Ej. [ 100101,100102,100103 ] |
Parámetros de datos
Parámetro | Tipo | Descripción |
---|---|---|
expense_date |
string | Fecha del gasto misc en formato dd/mm/aaaa. Ej. [ 15/02/2017 ] |
units |
float | Número de unidades asignadas. Ej. [ 125.50 ] |
unit_cost |
float | Número del coste por unidad de medida, en este caso, coste por kilometro. El total del gasto se calculará multiplicando mileage por unit_cost . |
status_name |
string | Estado del gasto. Ej. Rechazado , Aprobado , Confirmado |
label_id |
array<int> | Identificadores de una o más etiquetas. Se sobreescribirá la totalidad de las mismas. Ej. [ 1234, 5789, 612457 ] |
notes |
string | Campo de texto libre hasta 255 carácteres, para incluir cualquier observación al ticket que se desee. |
Delete a Misc Expense
Este servicio permite eliminar un gasto miscelánea en Sabbatic.
Ejemplo de llamada al servicio "Delete a misc expense":
# Llamada desde consola Linux
curl --request DELETE "https://api.sabbatic.es/v2/expenses/misc"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22expense_type_id%22:3,%22expense_id%22:[287345]%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expenses/misc");
var request = new RestRequest(Method.DELETE);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
expense_id = new Int[]{
1234
}
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22expense_id%22%3A%5B287345%5D%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expenses/misc")
.delete(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expenses/misc');
$request->setMethod(HTTP_METH_DELETE);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"expense_id":[287345]}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
DELETE https://api.sabbatic.es/v2/expenses/misc
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
expense_id |
array<int> | Identificadores de los gastos que se desean eliminar. Ej. [ 100101,100102,100103,... ] |
Categories
La entidad Categories
(categoría) es la entidad contenedora que utiliza Sabbatic para agrupar diferentes etiquetas. Las categorías siempre están relacionadas con una única empresa. Esta entidad permite las operaciones GET
, POST
, PUT
, DELETE
sobre las categorías creadas por el administrador. Las acciones POST
, PUT
y DELETE
están solo disponibles para los administradores.
Adicionalmente un usuario Integrador multi-empresa podrá gestionar y visualizar categorías pertenecientes a sus empresas.
List all categories
Este servicio permite listar las categorías de Sabbatic.
Ejemplo de llamada al servicio List all categories:
# Llamada desde consola Linux
curl --request GET "https://api.sabbatic.es/v2/categories?json=%7B%7D"
-H "session_id:YOURSESSIONID"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/categories");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/categories?json=%7B%7D")
.get()
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/categories');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'json' => '%7B%7D'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplo de JSON de respuesta:
{
"entities_list": [
{
"category_id": 233447,
"name": "Proyecto",
"company": {
"company_id": 289363,
"company_id_custom": "Id Custom",
"vat_id": "A36598523",
"name": "Empresa Usuario Nombre",
"postal_code": 40020,
"city": "VALENCIA",
"address": "Plaza Arroyo, Nº 31",
"province": "VALENCIA",
"country": "ESP"
},
"labels": [
{
"label_id": 281208,
"name": "Tren",
"category_id": 233447,
"closed": false
},
{
"label_id": 288209,
"name": "Avión",
"category_id": 233447,
"closed": false
}
],
"required": false,
"closed": true,
"multivalue": false,
"permissions": {
"users": [
{
"user_id": 389,
"user_id_custom": "JSP232"
},
{
"user_id": 2357,
"user_id_custom": "JSP4236"
}
]
}
},
{
"category_id": 283997,
"category_id_custom": "Cuenta08",
"name": "Forma de Pago",
"company": {
"company_id": 289363,
"company_id_custom": "Id Custom",
"vat_id": "A36598523",
"name": "Empresa Usuario Nombre",
"postal_code": 40020,
"city": "VALENCIA",
"address": "Plaza Arroyo, Nº 31",
"province": "VALENCIA",
"country": "ESP"
},
"labels": [
{
"label_id": 222238,
"name": "Efectivo",
"category_id": 283997,
"closed": false
},
{
"label_id": 222239,
"name": "Tarjeta",
"category_id": 283997,
"closed": false
}
],
"required": false,
"closed": false,
"multivalue": false,
"permissions": {
"users": [
{
"user_id": 5959
}
],
"groups": [
{
"group_id": 397189,
"group_id_custom": "Ext0545"
},
{
"group_id": 397190,
"group_id_custom": "Ext0546"
}
]
}
}
]
}
HTTP Request
GET https://api.sabbatic.es/v2/categories?json={}
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
company_id |
int | Identificador de empresa. Ej. 82828 |
company_id_custom |
string | Identificador personal que identifica a una empresa en el sistema propio del cliente. El par company_id ,company_id_custom determina a una única empresa en Sabbatic. |
required |
boolean | Indica si los usuarios deben indicar una etiqueta de dicha categoría en cada ticket que se digitalice. Puede contener true o false . |
closed |
boolean | Indica si la categoría está cerrada o no, y por lo tanto, si son o no visibles para los usuarios. Puede contener true o false . |
category_id |
array<int> | Identificador de categoría. Permite múltiple. Ej. [ 28282, 15475 ] |
category_id_custom |
array<string> | Identificador personal que identifica a una categoría en el entorno del equipo cliente, el integrador puede utilizar sus propias claves para identificar a una categoría previamente creada en Sabbatic, ej: "653236" o "Marketing-23" |
user_id |
int | Identificador numérico del usuario sobre el que se desea filtrar las categorías. |
user_id_custom |
string | Identificador personal que identifica a un usuario por empresa en el sistema del propio cliente. El par company_id ,user_id_custom determina a un único usuario en Sabbatic. |
username |
string | E-mail del usuario. Solo los administradores pueden ver categorías correspondientes a otros usuarios. Ej. youruser@email.xxx |
multivalue |
boolean | Filtra las categorías (true o false ) que permite seleccionar más de un etiqueta y por tanto son multi-valor. |
Create a category
Este servicio permite crear una categoría de Sabbatic.
Ejemplo de llamada al servicio Create a category:
# Llamada desde consola Linux
curl --request POST "https://api.sabbatic.es/v2/categories"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22name%22:%22Servicios adicionales%22,%22category_id_custom%22:%22cod_2341%22,%22required%22:1,%22closed%22:false,%22permissions%22:%7B%22users%22:[2369,5959]%7D,%22parent_labels%22:[%7B%22company_id%22:289363,%22label_id_custom%22:%22Lbl056%22%7D],%22required_expense_type_id%22:[1,3]%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/categories");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
name = "Cat1",
category_id_custom = "cod_123",
required = true
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22name%22%3A%22Servicios%20adicionales%22%2C%22category_id_custom%22%3A%22cod_2341%22%2C%22required%22%3A1%2C%22closed%22%3Afalse%2C%22permissions%22%3A%7B%22users%22%3A%5B2369%2C5959%5D%7D%2C%22parent_labels%22%3A%5B%7B%22company_id%22%3A289363%2C%22label_id_custom%22%3A%22Lbl056%22%7D%5D%2C%22required_expense_type_id%22%3A%5B1%2C3%5D%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/categories")
.post(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/categories');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"name":"Servicios adicionales","category_id_custom":"cod_2341","required":1,"closed":false,"permissions":{"users":[2369,5959]},"parent_labels":[{"company_id":289363,"label_id_custom":"Lbl056"}],"required_expense_type_id":[1,3]}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplo de JSON de respuesta:
{
"category_id": 311631,
"category_id_custom": "cod_2341",
"name": "Servicios adicionales",
"company": {
"company_id": 289363,
"company_id_custom": "Id Custom",
"vat_id": "A36598523",
"name": "Empresa Usuario Nombre",
"postal_code": 40020,
"city": "VALENCIA",
"address": "Plaza Arroyo, Nº 31",
"province": "VALENCIA",
"country": "ESP"
},
"required": true,
"closed": false,
"multivalue": false,
"permissions": {
"users": [
{
"user_id": 2369
},
{
"user_id": 5959
}
]
},"parent_labels": [
{
"label_id": 302194,
"label_id_custom": "Lbl056",
"name": "Transporte"
}
],
"required_expense_type": [
{
"expense_type_id":1
},
{
"expense_type_id":3
}
]
}
HTTP Request
POST https://api.sabbatic.es/v2/categories
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de datos
* Obligatorios
Parámetro | Tipo | Descripción |
---|---|---|
name * |
string | Nombre de la categoría. Ej. "Tipo de gasto" |
company_id |
int | Identificador de empresa en la que se quiere crear la nueva categoría. Solo apto para administradores con funciones de integración de varias empresas. |
company_id_custom |
string | Identificador personal que identifica a una empresa en el sistema propio del cliente. El par company_id ,company_id_custom determina a una única empresa en Sabbatic. |
category_id_custom |
string | Identificador personal de una categoría en el entorno del equipo cliente, el integrador puede utilizar sus propias claves para identificar a una categoría previamente creada en Sabbatic, ej: "653236" o "Marketing-23" . |
required |
int | Asigna a la categoría a crear si empezará como obligatoria (true o false ). Por aquellas que son obligatorias se entiende que tienen que tener alguna etiqueta seleccionada por el usuario cuando se realiza una creación o edición de un gasto. |
closed |
int | Asigna a la categoría a crear si empezará como cerrada (true/false). Por aquellas que están cerradas se entiende que son visibles o no por un usuario que no sea administrador. No se podrá crear o editar etiquetas de una categoría que esté cerrada. |
multivalue |
int | Asigna a la categoría a crear si empezará como multi-valor (true/false). Por aquellas que son multi-valor se entiende que permite seleccionar más de un etiqueta. |
permissions |
object<permission> | Objeto que representa una estructura de permisos para usuarios |
parent_labels |
array<label> | Sabbatic permite especificar una jerarquía de anidación entre categorías, de tal modo que solo se despliegue o se haga visible una categoría cuando otra (denominada padre) haya sido seleccionada previamente. Esta anidación es visible en las plataformas móviles y en la API supone una capa extra de permisos sobre que categorías se pueden editar o asignar dentro de un gasto. Ej: Considerando la categoría {"id":423652, "name":"Viajes representación"} , las categorías {"id":468532, "name":"Barcelona", "parent_labels":[{"label_id":423652}]}, {"id":325112,"name":"Madrid","parent_labels":[{"label_id":423652}]} permitiria mostrar únicamente estas 2 cuando la categoría padre haya sido seleccionada en un entorno móvil, o bien no permitir crear o editar un gasto en la API si no se cumple todos los requisitos de dependencia. |
required_expense_type_id |
array<int> | Este parámetro establece para que tipo/s de gasto/s aparece o es utilizable esta categoría en el entorno Sabbatic. Si no se especifica nada en este campo, dicha categoría es accesible para todos los tipos de gasto, pero si se establece uno o varios tipos de gasto obligatorios, entonces dichas categorías solo son accesibles para los tipos especificados. Ej: Si se establece "required_expense_type_id":[1,2,3] entonces dicha categoría solo esta disponible para Tickets, Facturas y Kilometrajes. Las id de los tipos de gasto son consultables en el servicio GET Expense Types . |
Edit a category
Este servicio permite editar una categoría de Sabbatic.
Ejemplo de llamada al servicio Edit a category:
# Llamada desde consola Linux
curl --request PUT "https://api.sabbatic.es/v2/categories"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22category_id%22:[289203], %22name%22:%22Nuevo titulo%22,%22permissions%22:%7B%22users%22:[%7B%22user_id%22:529%7D,%7B%22user_id%22: 441%7D]%7D,%22parent_labels%22:[%7B%22label_id%22:302194%7D],%22required_expense_type_id%22:[2]%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/categories");
var request = new RestRequest(Method.PUT);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
category_id = 1234,
name = "Cat1.1"
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22category_id%22%3A%5B289203%5D%2C%20%22name%22%3A%22Nuevo%20titulo%22%2C%22permissions%22%3A%7B%22users%22%3A%5B%7B%22user_id%22%3A529%7D%2C%7B%22user_id%22%3A%20441%7D%5D%7D%2C%22parent_labels%22%3A%5B%7B%22label_id%22%3A302194%7D%5D%2C%22required_expense_type_id%22%3A%5B2%5D%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/categories")
.put(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/categories');
$request->setMethod(HTTP_METH_PUT);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"category_id":[289203], "name":"Nuevo titulo","permissions":{"users":[{"user_id":529},{"user_id": 441}]},"parent_labels":[{"label_id":302194}],"required_expense_type_id":[2]}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
PUT https://api.sabbatic.es/v2/categories
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
category_id |
array<int> | Identificadores de las categorías que se desea editar. Ej. [ 100101,100102,100103,... ] |
company_id |
int | Identificador de empresa en la que se quiere editar la nueva categoría. solo apto para administradores con funciones de integración de varias empresas. |
company_id_custom |
string | Identificador propio y personalizable que identifica a una empresa en el sistema propio del cliente. El par "company_id","company_id_custom" determina a una única empresa en Sabbatic. |
category_id_custom |
string | Identificador (string alfanumérico) que identifica a una categoría en el entorno del equipo cliente, el integrador puede utilizar sus propias claves para identificar a una categoría previamente creada en Sabbatic, ej: "653236" o "Marketing-23". |
Parámetros de datos
Parámetro | Tipo | Descripción |
---|---|---|
name |
string | Nombre de la categoría. |
required |
boolean | Editará si la categoría es obligatoria (true/false). Por aquellas que son obligatorias se entiende que tienen que tener alguna etiqueta seleccionada por el usuario cuando se realiza una creación o edición de un gasto. |
closed |
boolean | Editará si la categoría es cerrada (true/false). Por aquellas que están cerradas se entiende que son visibles o no por un usuario que no sea administrador. No se podrá crear o editar etiquetas de una categoría que esté cerrada. |
multivalue |
boolean | Editará si la categoría es multi-valor (true/false). Por aquellas que son multi-valor se entiende que permite seleccionar más de un etiqueta. |
permissions |
object<permission> | Objeto que representa una estructura de permisos para usuarios |
parent_labels |
array<label> | Sabbatic permite especificar una jerarquía de anidación entre categorías, de tal modo que solo se despliegue o se haga visible una categoría cuando otra (denominada padre) haya sido seleccionada previamente. Esta anidación es visible en las plataformas móviles y en la API supone una capa extra de permisos sobre que categorías se pueden editar o asignar dentro de un gasto. Ej: Considerando la categoría {"id":423652, "name":"Viajes representación"} , las categorías {"id":468532, "name":"Barcelona", "parent_labels":[{"label_id":423652}]}, {"id":325112,"name":"Madrid","parent_labels":[{"label_id":423652}]} permitiria mostrar únicamente estas 2 cuando la categoría padre haya sido seleccionada en un entorno móvil, o bien no permitir crear o editar un gasto en la API si no se cumple todos los requisitos de dependencia. |
required_expense_type_id |
array<int> | Este parámetro establece para que tipo/s de gasto/s aparece o es utilizable esta categoría en el entorno Sabbatic. Si no se especifica nada en este campo, dicha categoría es accesible para todos los tipos de gasto, pero si se establece uno o varios tipos de gasto obligatorios, entonces dichas categorías solo son accesibles para los tipos especificados. Ej: Si se establece "required_expense_type_id":[1,2,3] entonces dicha categoría solo esta disponible para Tickets, Facturas y Kilometrajes. Las id de los tipos de gasto son consultables en el servicio GET Expense Types . |
Delete a category
Este servicio permite eliminar una categoría Sabbatic.
Ejemplo de llamada al servicio Delete a category:
# Llamada desde consola Linux
curl --request DELETE "https://api.sabbatic.es/v2/categories"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22category_id%22:[287345]%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/categories");
var request = new RestRequest(Method.DELETE);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new Int[]{
category_id = 1234
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22category_id%22%3A%5B287345%5D%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/categories")
.delete(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/categories');
$request->setMethod(HTTP_METH_DELETE);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"category_id":[287345]}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
DELETE https://api.sabbatic.es/v2/categories
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
category_id |
array<int> | Identificadores de las categorías que se desea eliminar. Ej. [ 100101,100102,100103,... ] |
category_id_custom |
string | Identificador personal de una categoría en el entorno del cliente, el integrador puede utilizar sus propias claves para identificar a una categoría previamente creada en Sabbatic, ej: "653236" o "Marketing-23" |
Labels
La entidad Labels
(Etiquetas) es la entidad que utiliza Sabbatic para categorizar los diferentes tipos de gasto.
Una etiqueta siempre está relacionada con una única categoría. Esta entidad permite las operaciones GET
, POST
, PUT
, DELETE
sobre las etiquetas creadas por el administrador de empresa.
Las acciones POST
, PUT
y DELETE
están solo disponibles para los administradores de empresa.
List all labels
Listado de etiquetas
Ejemplo de llamada al servicio List all labels:
# Llamada desde consola Linux
curl --request GET "https://api.sabbatic.es/v2/labels?json=%7B%7D"
-H "session_id:YOURSESSIONID"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/labels");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/labels?json=%7B%7D")
.get()
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/labels');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'json' => '%7B%7D'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplos de JSON de respuesta:
{
"entities_list": [
{
"label_id": 222238,
"name": "Efectivo",
"category_id": 283997,
"company": {
"company_id": 289363,
"name": "Empresa usuario nombre"
},
"closed": false,
"permissions": {
"users": [
{
"user_id": 5932
}
]
}
},
{
"label_id": 222239,
"label_id_custom": "Etiqueta personalizada",
"name": "Tarjeta",
"category_id": 283997,
"company": {
"company_id": 289363,
"name": "Empresa usuario nombre"
},
"closed": true
},
{
"label_id": 314605,
"name": "Intérpretes",
"category_id": 283997,
"company": {
"company_id": 289363,
"name": "Empresa usuario nombre"
},
"closed": true,
"permissions": {
"users": [
{
"user_id": 4948
}
],
"groups": [
{
"group_id": 391186,
"group_id_custom": "Ext0545"
}
],
"companies": [
{
"company_id": 253698
}
]
}
}
]
}
HTTP Request
GET https://api.sabbatic.es/v2/labels?json={}
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
company_id |
int | Identificador de empresa. Ej. 82828 . |
company_id_custom |
string | Identificador personal de una empresa en el sistema propio del cliente. El par company_id , company_id_custom determina a una única empresa en Sabbatic. |
user_id |
int | Identificador numérico del usuario sobre el que se desea filtrar las etiquetas. |
user_id_custom |
string | Identificador personall de un usuario por empresa. El par company_id ,user_id_custom determinan a un único usuario en Sabbatic. |
username |
string | E-mail del usuario. solo los administradores pueden ver gastos correspondientes a otros usuarios. Ej. youruser@email.xxx . |
label_id |
array<int> | Identificador de etiquetas. Permite múltiple. Ej. [ 28282, 15475 ] |
label_id_custom |
array<string> | Array de cadena de texto libre que designa la identificación de la etiqueta en la empresa del cliente. Si se utiliza este campo tambien debes de indicar company_id . |
category_id |
int | Identificadores de categorías que contienen dichas etiquetas. Permite múltiple. Ej. [ 100100,100101,100102,... ] |
closed |
boolean | Filtra las etiquetas ( true o false ) por aquellas que están cerradas o no, y por lo tanto son visibles o no por un usuario que no sea administrador. |
Create a label
Envío de una nueva etiqueta a Sabbatic.
Ejemplo de llamada al servicio
Create a label
:
# Llamada desde consola Linux
curl --request POST "https://api.sabbatic.es/v2/labels"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22name%22:%22Comidas%22,%22category_id%22:314605,%22parent_labels%22:[%7B%22label_id%22:302194%7D],%22required_expense_type_id%22:[1,3]%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/labels");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
name = "Comidas",
category_id = 1234
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22name%22:%22Comidas%22,%22category_id%22:314605,%22parent_labels%22:[%7B%22label_id%22:302194%7D],%22required_expense_type_id%22:[1,3]%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/labels")
.post(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/labels');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"category_id":"314605","name":"Comidas","parent_labels":[{"label_id":302194}],"required_expense_type_id":[1,3]}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplo de JSON de respuesta:
{
"label_id": 314605,
"name": "Comidas",
"category_id": 289632,
"company": {
"company_id": 289363,
"name": "Empresa usuario nombre"
},
"closed": false,
"permissions": {
"groups": [
{
"group_id": 391186,
"group_id_custom": "Ext0545"
}
]
},"parent_labels": [
{
"label_id": 302194,
"label_id_custom": "Lbl056",
"name": "Transporte"
}
],
"required_expense_type": [
{
"expense_type_id":1
},
{
"expense_type_id":3
}
]
}
HTTP Request
POST https://api.sabbatic.es/v2/labels
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de datos
*Obligatorios
Parámetro | Tipo | Descripción |
---|---|---|
name * |
string | Asigna el titulo de la etiqueta que se va a crear. |
category_id * |
int | Asigna el identificador de la categoría de la que cuelga la etiqueta que se va a crear. Dicha categoría no debe estar cerrada. |
closed |
boolean | Asigna si la etiqueta se creará de inicio con el estado cerrado (true/false). Las etiquetas cerradas son visibles o no por un usuario que no sea administrador. |
label_id_custom |
string | Cadena de texto libre que designa la identificación de la etiqueta en la empresa del cliente, puede definirse en el momento de su creación o editando más tarde la etiqueta |
permissions |
object<permission> | Objeto que representa una estructura de permisos para usuarios |
parent_labels |
array<label> | Sabbatic permite especificar una jerarquía de anidación entre etiquetas, de tal modo que solo se despliegue o se haga visible una etiqueta cuando otra (denominada padre) haya sido seleccionada previamente. Esta anidación es visible en las plataformas móviles y en la API supone una capa extra de permisos sobre que etiquetas se pueden editar o asignar dentro de un gasto. Ej: Considerando la etiqueta {“id”:423652,“name”:“Viaje”} , las etiquetas {“id”:468532, “name”:“Barcelona”,“parent_labels”: [{“label_id”:423652}]}, {“id”:325112,“name”:“Madrid”,“parent_labels”:[{“label_id”:423652}] } permitiría mostrar únicamente estas 2 cuando la etiqueta padre haya sido seleccionada en un entorno móvil, o bien no permitir crear o editar un gasto en la API si no se cumple todos los requisitos de dependencia. |
required_expense_type_id |
array<int> | Este parámetro establece para que tipo/s de gasto/s aparece o es utilizable esta etiqueta en el entorno Sabbatic. Si no se especifica nada en este campo, dicha categoría es accesible para todos los tipos de gasto, pero si se establece uno o varios tipos de gasto obligatorios, entonces dichas etiquetas solo son accesibles para los tipos especificados. Ej: Si se establece "required_expense_type_id":[1,2,3] entonces dicha etiqueta solo esta disponible para Tickets, Facturas y Kilometrajes. Las id de los tipos de gasto son consultables en el servicio GET Expense Types . |
Edit a label
Edición de una etiqueta en Sabbatic.
Ejemplo de llamada al servicio Edit a label:
# Llamada desde consola Linux
curl --request PUT "https://api.sabbatic.es/v2/label"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22label_id%22:[289203], %22name%22:%22Nuevo titulo%22,%22parent_labels%22:[%7B%22label_id%22:302194%7D],%22required_expense_type_id%22:[1]%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/label");
var request = new RestRequest(Method.PUT);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
label_id = 1234,
name = "Cenas"
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22label_id%22:[289203], %22name%22:%22Nuevo titulo%22,%22parent_labels%22:[%7B%22label_id%22:302194%7D],%22required_expense_type_id%22:[1]%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/label")
.put(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/label');
$request->setMethod(HTTP_METH_PUT);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"label_id":[289203], "name":"Nuevo titulo","parent_labels":[{"label_id":302194}],"required_expense_type_id":[2]}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
PUT https://api.sabbatic.es/v2/labels
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
label_id | array<int> | Identificadores de las etiquetas que se desea editar. Puede ser múltiple. Ej. [100101,100102,100103,...] |
label_id_custom | array<string> | Array de cadena de texto libre que designa la identificación de la etiqueta en la empresa del cliente, se puede editar varias etiquetas de una sola llamada. |
company_id | int | Identificador de empresa donde se está tratando de editar la etiqueta. |
company_id_custom | string | Identificador propio y personalizable que identifica a una empresa en el sistema propio del cliente. El par "company_id","company_id_custom" determina a una única empresa en Sabbatic. |
Parámetros de datos
Parámetro | Tipo | Descripción |
---|---|---|
new_label_id_custom | string | Parámetro para dar un nuevo nombre a una etiqueta personalizada y a la vez utilizar "label_id_custom" para seleccionar a cual de ella nos referimos. |
name | string | Editará un nombre por el cual se conoce a la etiqueta. |
closed | boolean | Editará si la etiqueta está cerrada (true/false). Las etiquetas que tengan "true" en este parámetro no serán visibles para los usuarios. |
permissions | object<permission> | Objeto que representa una estructura de permisos para usuarios |
parent_labels | array<label> | Sabbatic permite especificar una jerarquía de anidación entre etiquetas, de tal modo que solo se despliegue o se haga visible una etiqueta cuando otra (denominada padre) haya sido seleccionada previamente. Esta anidación es visible en las plataformas móviles y en la API supone una capa extra de permisos sobre que etiquetas se pueden editar o asignar dentro de un gasto. Ej: Considerando la etiqueta {“id”:423652,“name”:“Viaje”} , las etiquetas {“id”:468532, “name”:“Barcelona”,“parent_labels”: [{“label_id”:423652}]}, {“id”:325112,“name”:“Madrid”,“parent_labels”:[{“label_id”:423652}] } permitiría mostrar únicamente estas 2 cuando la etiqueta padre haya sido seleccionada en un entorno móvil, o bien no permitir crear o editar un gasto en la API si no se cumple todos los requisitos de dependencia. |
required_expense_type_id | array<int> | Este parámetro establece para que tipo/s de gasto/s aparece o es utilizable esta etiqueta en el entorno Sabbatic. Si no se especifica nada en este campo, dicha categoría es accesible para todos los tipos de gasto, pero si se establece uno o varios tipos de gasto obligatorios, entonces dichas etiquetas solo son accesibles para los tipos especificados. Ej: Si se establece "required_expense_type_id":[1,2,3] entonces dicha etiqueta solo esta disponible para Tickets, Facturas y Kilometrajes. Las id de los tipos de gasto son consultables en el servicio GET Expense Types . |
Delete a label
Eliminación de una etiqueta en Sabbatic.
Ejemplo de llamada al servicio Delete a label:
curl --request DELETE "https://api.sabbatic.es/v2/labels"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22label_id%22:[287345]%7D"
# Llamada desde consola Linux
curl --request DELETE "https://api.sabbatic.es/v2/labels"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22label_id%22:[287345]%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/labels");
var request = new RestRequest(Method.DELETE);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
label_id = new Int[]{
1234
}
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22label_id%22:[287345]%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/labels")
.delete(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/labels');
$request->setMethod(HTTP_METH_DELETE);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"label_id":[287345]}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
DELETE https://api.sabbatic.es/v2/labels
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
label_id |
array<int> | Identificadores de las etiquetas que se desea eliminar. Ej. [ 100101,100102,100103,... ] |
label_id_custom |
array<string> | Array de string que designa la identificación de la etiqueta en la empresa del cliente, se puede eliminar varias etiquetas de una sola llamada. |
Update labels
Update labels proporciona la posibilidad de sincronizar el listado de categorías/etiquetas de Sabbatic con el listado existente en los sistemas del cliente. Para ello, es necesario que la llamada incluya la totalidad de categorías/etiquetas activas en dicho momento, dejando a Sabbatic las operaciones de alta, baja y modificaciones necesarias para sincronizar el listado existente en Sabbatic.
Debido a la considerable carga que puede soportar dicho servicio, la respuesta del mismo se realizará en el momento de validar la petición, antes de que se ejecute la operación. Una vez validada dicha petición, Sabbatic procederá a la ejecución de los cambios y sólo en caso de que dicha ejecución sea errónea se notificará al usuario a través de un e-mail.
Este servicio permite únicamente una llamada simultánea.
Ejemplo de llamada al servicio "Labels update":
# Llamada desde consola Linux
curl --request POST "https://api.sabbatic.es/v2/labels_update"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22categories%22%3A%5B%7B%22category_id%22%3A236987%2C%22labels%22%3A%5B%7B%22name%22%3A%22Label1%22%2C%22label_id%22%3A356325%7D%2C%7B%22name%22%3A%22Label2%22%2C%22label_id%22%3A412323%7D%2C%7B%22name%22%3A%22Label3%22%2C%22label_id_custom%22%3A%22Lbl3%22%7D%5D%7D%2C%7B%22category_id_custom%22%3A%22CategoryCustom2%22%2C%22labels%22%3A%5B%7B%22name%22%3A%22TestCenter1%22%2C%22label_id_custom%22%3A%22TC1%22%7D%2C%7B%22name%22%3A%22TestCenter2%22%2C%22label_id_custom%22%3A%22TC2%22%2C%22parent_labels%22%3A%5B%7B%22label_id%22%3A356325%7D%5D%7D%5D%7D%5D%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/labels_update");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
categories = [
{
category_id = 1234,
labels = [
{
name = "label1",
required = true
},
...
]
},
...
]
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22categories%22%3A%5B%7B%22category_id%22%3A236987%2C%22labels%22%3A%5B%7B%22name%22%3A%22Label1%22%2C%22label_id%22%3A356325%7D%2C%7B%22name%22%3A%22Label2%22%2C%22label_id%22%3A412323%7D%2C%7B%22name%22%3A%22Label3%22%2C%22label_id_custom%22%3A%22Lbl3%22%7D%5D%7D%2C%7B%22category_id_custom%22%3A%22CategoryCustom2%22%2C%22labels%22%3A%5B%7B%22name%22%3A%22TestCenter1%22%2C%22label_id_custom%22%3A%22TC1%22%7D%2C%7B%22name%22%3A%22TestCenter2%22%2C%22label_id_custom%22%3A%22TC2%22%2C%22parent_labels%22%3A%5B%7B%22label_id%22%3A356325%7D%5D%7D%5D%7D%5D%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/labels_update")
.post(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/labels_update');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"categories":[{"category_id":236987,"labels":[{"name":"Label1","label_id":356325},{"name":"Label2","label_id":412323},{"name":"Label3","label_id_custom":"Lbl3"}]},{"category_id_custom":"CategoryCustom2","labels":[{"name":"TestCenter1","label_id_custom":"TC1"},{"name":"TestCenter2","label_id_custom":"TC2","parent_labels":[{"label_id":356325}]}]}]}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "The parameter 'company_id' is not valid or does not exists"
}
Ejemplo de un json de mantenimiento de etiquetas:
{
"categories":[
{
"category_id":236987,
"labels":[
{
"name":"Label1",
"label_id":356325
},
{
"name":"Label2",
"label_id":412323
},
{
"name":"Label3",
"label_id_custom":"Lbl3"
}
]
},
{
"category_id_custom":"CategoryCustom2",
"labels":[
{
"name":"TestCenter1",
"label_id_custom":"TC1"
},
{
"name":"TestCenter2",
"label_id_custom":"TC2",
"parent_labels":[
{
"label_id":356325
}
]
}
]
}
]
}
HTTP Request
POST https://api.sabbatic.es/v2/labels_update
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de datos
Parámetro | Tipo | Descripción |
---|---|---|
categories |
array<category> | Array de objetos category . Identifica la lista de categorías/etiquetas del integrador. Todas las etiquetas deben pertenecer a alguna categoría para poder estar integrados en Sabbatic. |
Users
La entidad Users
(Usuarios) es la entidad que utiliza Sabbatic para identificar las cuentas de los usuarios registrados en el sistema, estos usuarios pueden emplear la misma cuenta tanto para la web de Sabbatic como en su app móvil.
Esta entidad permite las operaciones GET
, POST
, PUT
, DELETE
sobre las cuentas de usuarios creadas por el administrador de empresa. Las acciones POST
, PUT
y DELETE
están solo disponibles para los administradores.
List all users
Listado de usuarios
Ejemplo de llamada al servicio List all users:
# Llamada desde consola Linux
curl --request GET "https://api.sabbatic.es/v2/users?json=%7B%7D"
-H "session_id:YOURSESSIONID"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/users");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/users?json=%7B%7D")
.get()
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/users');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'json' => '%7B%7D'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplos de JSON de respuesta:
{
"entities_list": [
{
"user_id": 469,
"username": "email1@sabbatic.es",
"email": "email1@sabbatic.es",
"company": {
"company_id": 289363,
"name": "Empresa usuario nombre"
},
"name": "Carlos",
"surname": "García",
"language": "es"
},
{
"user_id": 594,
"user_id_custom":"User_543",
"username": "ivansanchez@gmail.com",
"email": "ivansanchez@gmail.com",
"company": {
"company_id": 289363,
"name": "Empresa usuario nombre"
},
"name": "Ivan",
"surname": "Sanchez",
"language": "es"
},
{
"user_id": 742,
"user_id_custom":"FerMartinez236",
"username": "correocorporativo1@company.com",
"email": "fernandomartinez@gmail.com",
"company": {
"company_id": 289363,
"name": "Empresa usuario nombre"
},
"name": "Fernando",
"surname": "Martinez",
"language": "es"
}
]
}
HTTP Request
GET https://api.sabbatic.es/v2/users?json={}
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
user_id |
array<int> | Identificador de usuario propio del sistema de Sabbatic. Ej. 594 |
username |
array<string> | Nombre de la cuenta del usuario que utilizará para conectarse tanto en la app como a la web de Sabbatic o API. |
user_id_custom |
array<string> | Identificador personal de un usuario por empresa en el sistema propio del cliente. El par company_id ,`user_id_custom determinan a un único usuario en Sabbatic. |
company_id |
int | Identificador de empresa a la que pertenece el usuario |
email |
string | Cuenta de correo electrónico donde se enviarán notificaciones e información adicional al usuario o donde recuperar su contraseña. |
language |
string | Prefijo que designa el idioma preferido del usuario, tanto en la app como en la web de Sabbatic. Ej.: es , en-gb . |
Create a user
Creación de una nueva cuenta de usuario en Sabbatic.
Ejemplo de llamada al servicio "Create a user":
curl --request POST "https://api.sabbatic.es/v2/users"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22email%22%3A%22email4%40sabbatic.es%22%2C%22name%22%3A%22Juan%22%2C%22surname%22%3A%22Perez%22%2C%22company_id%22%3A289363%7D"
# Llamada desde consola Linux
curl --request POST "https://api.sabbatic.es/v2/users"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22email%22%3A%22email4%40sabbatic.es%22%2C%22name%22%3A%22Juan%22%2C%22surname%22%3A%22Perez%22%2C%22company_id%22%3A289363%7D
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/users");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
email = "user@email.com",
name = "User",
surname = "Test"
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22email%22%3A%22email4%40sabbatic.es%22%2C%22name%22%3A%22Juan%22%2C%22surname%22%3A%22Perez%22%2C%22company_id%22%3A289363%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/users")
.post(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/users');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"email":"email4@sabbatic.es","name":"Juan","surname":"Perez","company_id":289363}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplo de JSON de respuesta:
{
"user_id": 4896,
"username": "juanperez@gmail.com",
"email": "juanperez@gmail.com",
"company": {
"company_id": 289363,
"name": "Empresa usuario nombre"
},
"name": "Juan",
"surname": "Perez"
}
HTTP Request
POST https://api.sabbatic.es/v2/users
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de datos
* Obligatorios
Parámetro | Tipo | Descripción |
---|---|---|
email * |
string | Correo electrónico asociado a la cuenta a crear, el username se generará a partir de este parámetro. Se utilizará para notificaciones al usuario. |
company_id * |
int | Identificador de la empresa asignada donde se creará el usuario. |
user_id_custom |
string | Identificador personal que identifica a un usuario en la empresa en el sistema del cliente. El par company_id , user_id_custom determinan a un único usuario en Sabbatic. |
name * |
string | Nombre del usuario. |
surname * |
string | Apellido/s del usuario. |
language |
string | Prefijo que designa el idioma preferido del usuario, tanto en la app como en la web de Sabbatic. Por defecto es español "es" . |
Edit a user
Edición de una cuenta de usuario en Sabbatic.
Ejemplo de llamada al servicio Edit a user:
# Llamada desde consola Linux
curl --request PUT "https://api.sabbatic.es/v2/users"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22user_id%22%3A869%2C%20%22surname%22%3A%22Martinez%22%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/users");
var request = new RestRequest(Method.PUT);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
user_id = 1234,
name = "Testing"
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22user_id%22%3A869%2C%20%22surname%22%3A%22Martinez%22%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/users")
.put(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/users');
$request->setMethod(HTTP_METH_PUT);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"user_id":869, "surname":"Martinez"}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
PUT https://api.sabbatic.es/v2/users
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
user_id |
int | Identificador del usuario que desea editar. Ej. 123 |
user_id_custom |
string | Identificador personal que identifica a un usuario en la empresa en el sistema del cliente. El par company_id , user_id_custom determinan a un único usuario en Sabbatic. |
email |
string | Identificador de la cuenta. |
company_id |
int | Identificador de la empresa asignada donde se creará el usuario. |
company_id_custom |
string | Identificador personal que dentifica a una empresa en el sistema del cliente. El par company_id , company_id_custom determina a una única empresa en Sabbatic. |
Parámetros de datos
Parámetro | Tipo | Descripción |
---|---|---|
new_email |
string | Correo electrónico(username), se utilizará en el login tanto en la web, app móvil o API. |
new_user_id_custom |
string | Si se desea cambiar el user_id_custom del usuario, se debe utilizar este parámetro para diferenciarlo del que se ha utilizado para localizar e identificar el usuario. |
new_company_id |
int | Identificador de empresa donde se creará el grupo de usuarios. |
new_company_id_custom |
string | Identificador personal que identifica a una empresa en el sistema del cliente. El par company_id , company_id_custom determina a una única empresa en Sabbatic. |
name |
string | Nombre del usuario. |
surname |
string | Apellido/s del usuario. |
language |
string | Prefijo que designa el idioma preferido del usuario, tanto en la app como en la web de Sabbatic. Por defecto es español "es" . |
active |
boolean | Estado del usuario que indica si está activo( true o false ). |
Delete a user
Eliminación de una cuenta de usuario en Sabbatic.
Ejemplo de llamada al servicio Delete a user:
# Llamada desde consola Linux
curl --request DELETE "https://api.sabbatic.es/v2/users"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22user_id%22%3A869%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/users");
var request = new RestRequest(Method.DELETE);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
user_id = [
1234,
...
]
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22user_id%22%3A869%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/users")
.delete(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/users');
$request->setMethod(HTTP_METH_DELETE);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"user_id":869}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
DELETE https://api.sabbatic.es/v2/users
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
user_id |
int | Identificador de usuario que se desea eliminar. Ej. 594 |
username |
string | Nombre de la cuenta del usuario que se desea eliminar. Ej. "user1@email1.com" |
company_id |
int | Identificador de la empresa del user_id_custom . |
user_id_custom |
string | Identificador personal que identifica a un usuario en la empresa. El par company_id ,user_id_custom determinan a un único usuario en Sabbatic. |
Update users
Update users proporciona la posibilidad de sincronizar el listado de usuarios de Sabbatic con el listado existente en los sistemas del cliente. Para ello, es necesario que la llamada incluya la totalidad de usuarios activos en dicho momento, dejando a Sabbatic las operaciones de alta, baja y modificaciones necesarias para sincronizar el listado existente. Debido a la considerable carga que puede soportar dicho servicio, la respuesta del mismo se realizará en el momento de validar la petición, antes de que se ejecute la operación. Una vez validada dicha petición, Sabbatic procederá a la ejecución de los cambios y sólo en caso de que dicha ejecución sea errónea se notificará al usuario a través de un e-mail.
Este servicio permite únicamente una llamada simultánea.
Ejemplo de llamada al servicio Users update:
# Llamada desde consola Linux
curl --request POST "https://api.sabbatic.es/v2/users_update"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22companies%22%3A%5B%7B%22company_id%22%3A%22163523%22%2C%22users%22%3A%5B%7B%22user_id_custom%22%3A%2271102%22%2C%22name%22%3A%22NameExample1%22%2C%22surname%22%3A%22SurnameExample1%22%2C%22email%22%3A%22example1%40gmail.es%22%7D%2C%7B%22user_id%22%3A%22AlphaNumeric2%22%2C%22name%22%3A%22NameExample2%22%2C%22surname%22%3A%22SurnameExample2%22%2C%22email%22%3A%22example2%40gmail.es%22%2C%22admin%22%3A1%7D%2C%7B%22user_id%22%3A%22AlphaNumeric3%22%2C%22name%22%3A%22NameExample3%22%2C%22surname%22%3A%22SurnameExample3%22%2C%22email%22%3A%22example3%40gmail.es%22%7D%5D%7D%5D%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/users_update");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
companies = [
{
company_id = 1234,
users = [
{
user_id = 1234,
name = "Test3"
},
...
]
},
...
]
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22companies%22%3A%5B%7B%22company_id%22%3A%22163523%22%2C%22users%22%3A%5B%7B%22user_id_custom%22%3A%2271102%22%2C%22name%22%3A%22NameExample1%22%2C%22surname%22%3A%22SurnameExample1%22%2C%22email%22%3A%22example1%40gmail.es%22%7D%2C%7B%22user_id%22%3A%22AlphaNumeric2%22%2C%22name%22%3A%22NameExample2%22%2C%22surname%22%3A%22SurnameExample2%22%2C%22email%22%3A%22example2%40gmail.es%22%2C%22admin%22%3A1%7D%2C%7B%22user_id%22%3A%22AlphaNumeric3%22%2C%22name%22%3A%22NameExample3%22%2C%22surname%22%3A%22SurnameExample3%22%2C%22email%22%3A%22example3%40gmail.es%22%7D%5D%7D%5D%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/users_update")
.post(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/users_update');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"companies":[{"company_id":"163523","users":[{"user_id_custom":"71102","name":"NameExample1","surname":"SurnameExample1","email":"example1@gmail.es"},{"user_id":"AlphaNumeric2","name":"NameExample2","surname":"SurnameExample2","email":"example2@gmail.es","admin":1},{"user_id":"AlphaNumeric3","name":"NameExample3","surname":"SurnameExample3","email":"example3@gmail.es"}]}]}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "The parameter 'company_id' is not valid or does not exists"
}
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "The parameter 'company_id' is not valid or does not exists"
}
Ejemplo de un json de mantenimiento de usuarios:
{
"companies":[
{
"company_id":"163523",
"users":[
{
"user_id_custom":"71102",
"name":"NameExample1",
"surname":"SurnameExample1",
"email":"example1@gmail.es"
},
{
"user_id":"AlphaNumeric2",
"name":"NameExample2",
"surname":"SurnameExample2",
"email":"example2@gmail.es",
"admin":1
},
{
"user_id":"AlphaNumeric3",
"name":"NameExample3",
"surname":"SurnameExample3",
"email":"example3@gmail.es"
}
]
},
{
"company_id_custom":"MN-561",
"users":[
{
"user_id_custom":"FWE-423",
"name":"NameExample4",
"surname":"SurnameExample4",
"email":"example4@gmail.es"
}
]
}
]
}
HTTP Request
POST https://api.sabbatic.es/v2/users_update
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de datos
Parámetro | Tipo | Descripción |
---|---|---|
companies |
array<company> | Array de objetos company . Identifica la lista de empresas a las que el integrador tiene acceso. Si el integrador solo tiene una hay que incluirlo igualmente. Todos los usuarios deben pertenecer a alguna empresa para poder estar integrados en Sabbatic. |
Groups
La entidad Groups
(Grupos) es la entidad que utiliza Sabbatic para agrupar uno o varios usuarios en un mismo conjunto. De tal manera que se les puede asignar permisos sobre categorías o etiquetas de una manera más sencilla que tener que ir uno a uno. Estos usuarios pueden pertenecer a una o varias empresas segun la configuración del usuario integrador.
Esta entidad permite las operaciones GET
, POST
, PUT
, DELETE
sobre los grupos de usuarios de una o varias empresas.
List all groups
Listado de grupos de usuarios
Ejemplo de llamada al servicio List all groups:
# Llamada desde consola Linux
curl --request GET "https://api.sabbatic.es/v2/groups?json=%7B%7D"
-H "session_id:YOURSESSIONID"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/groups");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/groups?json=%7B%7D")
.get()
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/groups');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'json' => '%7B%7D'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplos de JSON de respuesta:
{
"entities_list": [
{
"group_id": 389818,
"name": "Contabilidad",
"active": true,
"company": {
"company_id": 276636,
"company_id_custom": "Id Central",
"name": "Empresa central",
"vat_id": "A36598523",
"name": "Empresa Usuario Nombre",
"postal_code": 28001,
"city": "MADRID",
"address": "Plaza Arroyo, Nº 31",
"province": "MADRID",
"country": "ESP"
},
"users": [
{
"user_id": 469,
"username": "email1@sabbatic.es",
"email": "email1@sabbatic.es",
"company": {
"company_id": 289363,
"name": "Empresa usuario nombre"
},
"name": "Carlos",
"surname": "García",
"language": "es"
},
{
"user_id": 594,
"user_id_custom":"User_543",
"username": "ivansanchez@gmail.com",
"email": "ivansanchez@gmail.com",
"company": {
"company_id": 289363,
"name": "Empresa usuario nombre"
},
"name": "Ivan",
"surname": "Sanchez",
"language": "es"
}
]
}
]
}
HTTP Request
GET https://api.sabbatic.es/v2/groups?json={}
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
group_id |
array<int> | Identificadores de los grupos de usuarios. Puede ser múltiple. Ej. [ 100101,100102,100103,... ] |
group_id_custom |
array<string> | Array de cadena de texto libre que designa el identificador personal de grupos de usuario en el sistema del cliente. |
company_id |
int | Identificador de empresa. |
company_id_custom |
string | Identificador personal que identifica a una empresa en el sistema del cliente. El par company_id , company_id_custom determina a una única empresa en Sabbatic. |
name |
string | El nombre por el cual se conoce al grupo de usuarios. |
active |
boolean | Filtro de grupos estado activo de grupos (true o false ). |
Create a group
Envío de un nuevo grupo de usuarios a Sabbatic.
Ejemplo de llamada al servicio Create a group:
# Llamada desde consola Linux
curl --request POST "https://api.sabbatic.es/v2/groups"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22name%22%3A%22Marketing%22%2C%22group_id_custom%22%3A%22Markt022%22%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/groups");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
name = "Marketing"
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22name%22%3A%22Marketing%22%2C%22group_id_custom%22%3A%22Markt022%22%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/groups")
.post(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/groups');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"name":"Marketing","group_id_custom":"Markt022"}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplo de JSON de respuesta:
{
"group_id": 311402,
"group_id_custom": "Markt022",
"name": "Marketing",
"active": true,
"company": {
"company_id": 289363,
"name": "Empresa usuario nombre"
}
}
HTTP Request
POST https://api.sabbatic.es/v2/groups
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de datos
*Obligatorios
Parámetro | Tipo | Descripción |
---|---|---|
name * |
string | El nombre por el cual se conoce al grupo de usuarios. |
active |
array<string> | Si el grupo de usuarios está activo o no ( true o false ). Los grupos de usuarios que tengan false en este parámetro no podrán ser utilizados ni serán visibles para los usuarios. |
company_id |
int | Identificador de empresa donde se creará el grupo de usuarios. |
company_id_custom |
string | Identificador personal que identifica a una empresa en el sistema del cliente. El par company_id , company_id_custom determina a una única empresa en Sabbatic. |
group_id_custom |
array<string> | Array de cadena de texto libre que designa la identificación personal de los grupos de usuario en el sistema del cliente. |
Edit a group
Edición de un grupo de usuarios en Sabbatic.
Ejemplo de llamada al servicio Edit a group:
# Llamada desde consola Linux
curl --request PUT "https://api.sabbatic.es/v2/groups"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22group_id%22%3A%5B289203%5D%2C%20%22name%22%3A%22Nuevo%20titulo%22%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/groups");
var request = new RestRequest(Method.PUT);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
group_id = 1234,
name = "Marketing - Todos"
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22group_id%22%3A%5B289203%5D%2C%20%22name%22%3A%22Nuevo%20titulo%22%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/groups")
.put(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/groups');
$request->setMethod(HTTP_METH_PUT);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"group_id":[289203], "name":"Nuevo titulo"}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
PUT https://api.sabbatic.es/v2/groups
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
group_id |
array<int> | Identificadores de los grupos de usuarios que se desea editar. Puede ser múltiple. Ej. [100101,100102,100103,...] |
group_id_custom |
array<string> | Array de cadena de texto libre que designa la identificación de los grupos de usuario en el sistema del cliente, se puede editar varias grupos en una sola llamada. |
company_id |
int | Identificador de empresa donde se está tratando de editar el grupo de usuarios. |
company_id_custom |
string | Identificador personal que identifica a una empresa en el sistema del cliente. El par company_id , company_id_custom determina a una única empresa en Sabbatic. |
Parámetros de datos
Parámetro | Tipo | Descripción |
---|---|---|
name |
string | El nombre por el cual se conoce al grupo de usuarios. |
active |
boolean | Estado de el grupo de usuarios que indica si está activo( true o false ). Los grupos de usuarios que tengan false en este parámetro no podrán ser utilizados ni serán visibles para los usuarios. |
users |
array<user> | Array de objetos user que van a pertenecer al grupo. |
group_manager_users |
array<user> | Array de objetos user que van a ser supervisores del grupo. |
Delete a group
Eliminación de un grupo de usuarios en Sabbatic.
Ejemplo de llamada al servicio Delete a group:
# Llamada desde consola Linux
curl --request DELETE "https://api.sabbatic.es/v2/groups"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22group_id%22%3A%5B284349%5D%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/groups");
var request = new RestRequest(Method.DELETE);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
group_id = new Int[]{
1234
}
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22group_id%22%3A%5B284349%5D%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/groups")
.delete(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/groups');
$request->setMethod(HTTP_METH_DELETE);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"group_id":[284349]}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
DELETE https://api.sabbatic.es/v2/groups
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
group_id |
array<int> | Identificadores de los grupos de usuarios. Puede ser múltiple. Ej. [100101,100102,100103,...] |
group_id_custom |
array<string> | Array de cadena de texto libre que identifica los grupos de usuario en el sistema del cliente. |
company_id |
int | Identificador de empresa. |
company_id_custom |
string | Identificador personal que identifica a una empresa en el sistema del cliente. El par company_id , company_id_custom determina a una única empresa en Sabbatic. |
Update groups
Update groups proporciona la posibilidad de sincronizar el listado de grupos de usuarios de Sabbatic con el listado existente en los sistemas del cliente. Para ello, es necesario que la llamada incluya la totalidad de grupos de usuarios activos en dicho momento, dejando a Sabbatic las operaciones de alta, baja y modificaciones necesarias para sincronizar el listado. Debido a la considerable carga que puede soportar dicho servicio, la respuesta del mismo se realizará en el momento de validar la petición, antes de que se ejecute la operación. Una vez validada dicha petición, Sabbatic procederá a la ejecución de los cambios y sólo en caso de que dicha ejecución sea errónea se notificará al usuario a través de un e-mail.
Este servicio permite únicamente una llamada simultánea.
Ejemplo de llamada al servicio Groups update:
# Llamada desde consola Linux
curl --request POST "https://api.sabbatic.es/v2/groups_update"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22groups%22%3A%5B%7B%22group_id%22%3A589637%2C%22name%22%3A%22SAT%20Service%22%2C%22company_id%22%3A269632%2C%22users%22%3A%5B%7B%22user_id%22%3A4257%7D%2C%7B%22user_id%22%3A2369%7D%5D%2C%22group_manager_users%22%3A%5B%7B%22user_id%22%3A4257%7D%2C%7B%22user_id%22%3A2369%7D%5D%2C%22autoconfirm_users%22%3A%5B%7B%22user_id%22%3A4257%7D%5D%7D%2C%7B%22group_id_custom%22%3A%22Company%20Custom%20ID%22%2C%22name%22%3A%22Development%22%2C%22users%22%3A%5B%7B%22user_id%22%3A4257%7D%5D%7D%5D%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/groups_update");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
groups = [
{
group_id = 1234,
name = "Mark - All"
},
...
]
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22groups%22%3A%5B%7B%22group_id%22%3A589637%2C%22name%22%3A%22SAT%20Service%22%2C%22company_id%22%3A269632%2C%22users%22%3A%5B%7B%22user_id%22%3A4257%7D%2C%7B%22user_id%22%3A2369%7D%5D%2C%22group_manager_users%22%3A%5B%7B%22user_id%22%3A4257%7D%2C%7B%22user_id%22%3A2369%7D%5D%2C%22autoconfirm_users%22%3A%5B%7B%22user_id%22%3A4257%7D%5D%7D%2C%7B%22group_id_custom%22%3A%22Company%20Custom%20ID%22%2C%22name%22%3A%22Development%22%2C%22users%22%3A%5B%7B%22user_id%22%3A4257%7D%5D%7D%5D%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/groups_update")
.post(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/groups_update');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"groups":[{"group_id":589637,"name":"SAT Service","company_id":269632,"users":[{"user_id":4257},{"user_id":2369}],"group_manager_users":[{"user_id":4257},{"user_id":2369}],"autoconfirm_users":[{"user_id":4257}]},{"group_id_custom":"Company Custom ID","name":"Development","users":[{"user_id":4257}]}]}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "The parameter 'user_id' is not valid or does not exists"
}
Ejemplo de un json de mantenimiento de usuarios:
{
"groups":[
{
"group_id":589637,
"name":"SAT Service",
"company_id":269632,
"users":[
{
"user_id":4257
},
{
"user_id":2369
}
],
"group_manager_users":[
{
"user_id":4257
},
{
"user_id":2369
}
],
"autoconfirm_users":[
{
"user_id":4257
}
]
},
{
"group_id_custom":"Company Custom ID",
"name":"Development",
"users":[
{
"user_id":4257
}
]
}
]
}
HTTP Request
POST https://api.sabbatic.es/v2/groups_update
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de datos
Parámetro | Tipo | Descripción |
---|---|---|
groups |
array<group> | Array de objetos group . Identifica y determina la lista de grupos de usuarios del integrador. Los usuarios a asignar a cada grupo deben estar creados previamente en el sistema Sabbatic. |
Companies
La entidad Companies (Empresas) es la entidad que utiliza Sabbatic para identificar las empresas a las que pertenecen los usuarios registrados.
Un administrador puede tener acceso a una única empresa o a varias según su configuración.
Sabbatic permite integrar varias empresas y gestionarlas desde una única cuenta de usuario que tenga privilegios de administrador. Si desea conocer más información sobre esta funcionalidad, por favor contacte con Sabbatic.
Esta entidad permite las operaciones GET
,POST
,'PUT' Y 'DELETE'.
List all companies
Listado de empresas
Ejemplo de llamada al servicio List all companies:
# Llamada desde consola Linux
curl --request GET "https://api.sabbatic.es/v2/companies?json=%7B%7D"
-H "session_id:YOURSESSIONID"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/companies");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/companies?json=%7B%7D")
.get()
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/companies');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'json' => '%7B%7D'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplos de JSON de respuesta:
{
"entities_list": [
{
"company_id": 276636,
"company_id_custom": "Id Central",
"name": "Empresa central",
"vat_id": "A36598523",
"name": "Empresa Usuario Nombre",
"postal_code": 28001,
"city": "MADRID",
"address": "Plaza Arroyo, Nº 31",
"province": "MADRID",
"country": "ESP",
"type": "matriz"
},
{
"company_id": 223569,
"company_id_custom": "Id Filial",
"name": "Empresa filial 1",
"vat_id": "B23652369",
"name": "Otro nombre de empresa usuario",
"postal_code": 08007,
"city": "BARCELONA",
"address": "Gran Via, Nº 45",
"province": "BARCELONA",
"country": "ESP",
"type": "filial",
"parent": {
"company_id": 276636,
"company_id_custom": "Id Central",
"name": "Empresa central",
"vat_id": "A36598523",
"name": "Empresa Usuario Nombre",
"postal_code": 28001,
"city": "MADRID",
"address": "Plaza Arroyo, Nº 31",
"province": "MADRID",
"country": "ESP",
"type": "matriz"
}
},
{
"company_id": 223569,
"company_id_custom": "Id Integrada",
"name": "Empresa integrada 1",
"vat_id": "B123456",
"name": "Otro nombre de empresa usuario",
"postal_code": 08007,
"city": "BARCELONA",
"address": "Gran Via, Nº 45",
"province": "BARCELONA",
"country": "ESP",
"type": "integrada",
"integrator": {
"company_id": 276636,
"company_id_custom": "Id Central",
"name": "Empresa central",
"vat_id": "A36598523",
"name": "Empresa Usuario Nombre",
"postal_code": 28001,
"city": "MADRID",
"address": "Plaza Arroyo, Nº 31",
"province": "MADRID",
"country": "ESP",
"type": "matriz"
}
}
]
}
HTTP Request
GET https://api.sabbatic.es/v2/companies?json={}
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
company_id |
int | Identificador de empresa opcional por la que se desea filtrar, si el parámetro no se proporciona se listará todas a las que tiene acceso el usuario. |
company_id_custom |
string | Identificador personal que identifica a una empresa en el sistema del cliente. El par company_id , company_id_custom determina a una única empresa en Sabbatic. |
Create a company
Creación de una nueva empresa en Sabbatic. Esta acción solo puede realizarla un administrador de empresa de una empresa matrix o integradora. Dicha nueva empresa pasará a ser parte del grupo de empresas que administra el usuario como empresa filial o integrada, las cuales pueden crear sus propios usuarios, categorías y etiquetas como la empresa original. Las empresas integradoras, solo podrán crear empresas integradas. No podrán generar filiales. Un administrador de empresa de una de estas empresas filiales o integradas no puede a su vez crear más empresas.
Ejemplo de llamada al servicio Create a company:
# Llamada desde consola Linux
curl --request POST "https://api.sabbatic.es/v2/companies"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22vat_id%22%3A%22B223412312%22%2C%22name%22%3A%22Testing%20Company%22%2C%22company_id_custom%22%3A%22CustomID%22%2C%22address%22%3A%22CustomAddress%22%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/companies");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
vat_id = "B223412312",
name = "TestComp"
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22vat_id%22%3A%22B223412312%22%2C%22name%22%3A%22Testing%20Company%22%2C%22company_id_custom%22%3A%22CustomID%22%2C%22address%22%3A%22CustomAddress%22%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/companies")
.post(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/companies');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"vat_id":"B223412312","name":"Testing Company","company_id_custom":"CustomID","address":"CustomAddress"}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplo de JSON de respuesta:
{
"company_id": 489623,
"company_id_custom": "CustomID",
"vat_id": "B22341231",
"name": "Testing Company",
"address": "CustomAddress"
}
HTTP Request
POST https://api.sabbatic.es/v2/companies
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de datos
*Obligatorios
Parámetro | Tipo | Descripción |
---|---|---|
vat_id * |
string | Código o número de identificación fiscal de la empresa donde reside. En el caso de España se corresponde al NIF. |
company_id_custom |
string | Identificador propio y personalizable que identifica a una empresa en el sistema propio del cliente. |
name * |
string | Nombre o razón social de la empresa. |
address |
string | Dirección física de la empresa, calle, avenida, número o piso. Campo de texto libre. |
Edit a company
Edición de una empresa en Sabbatic.
Ejemplo de llamada al servicio "Edit a company":
# Llamada desde consola Linux
curl --request PUT "https://api.sabbatic.es/v2/companies"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22company_id%22%3A289203%2C%22new_company_id_custom%22%3A%22NuevoIdCustom%22%2C%22name%22%3A%22Nuevo%20titulo%22%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/companies");
var request = new RestRequest(Method.PUT);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {
company_id = 1234,
name = "TestComp - 2"
};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22company_id%22%3A289203%2C%22new_company_id_custom%22%3A%22NuevoIdCustom%22%2C%22name%22%3A%22Nuevo%20titulo%22%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/companies")
.put(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/companies');
$request->setMethod(HTTP_METH_PUT);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"company_id":289203,"new_company_id_custom":"NuevoIdCustom","name":"Nuevo titulo"}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
PUT https://api.sabbatic.es/v2/companies
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
company_id |
int | Identificador de empresa que se está tratando de editar. |
company_id_custom |
string | Identificador propio y personalizable que identifica a una empresa en el sistema propio del cliente. El par "company_id","company_id_custom" determina a una única empresa en Sabbatic. |
Parámetros de datos
Parámetro | Tipo | Descripción |
---|---|---|
vat_id |
string | Código que identifica fiscalmente a una empresa. En España es el parámetro correspondiente al NIF. |
name |
string | Editará el nombre por el cual se conoce a la empresa. |
new_company_id_custom |
string | Nuevo identificador propio de la empresa cliente que se trata de editar. El parámetro 'company_id_custom' puede utilizarse para seleccionar la empresa a editar y el parámetro 'new_company_id_custom' es el nuevo valor que se desea asignar. |
address |
string | Texto libre para la dirección física de la empresa, avenida, calle, paseo, etc... seguido del número o piso. |
Expense Types
La entidad Expense Types
(Tipos de Gasto) es la entidad que utiliza Sabbatic para englobar de una forma abstracta los diversos tipos de gasto que pueda tener una empresa.
Este modelo flexible permite personalizar cada empresa para que muestre y gestiona únicamente los tipos de gasto que vaya a utilizar.
Ejemplos de tipos de gasto son Tickets
, Facturas
, Kilometrajes
, Dietas
, Pernoctaciones
, etc..
Esta entidad permite las operaciones GET
, PUT
sobre los tipos de gasto gestionados por el administrador de empresa.
La acción PUT
está solo disponible para los administradores.
List all expense types
Listado de tipos de gasto por empresas
Ejemplo de llamada al servicio List all expense types:
# Llamada desde consola Linux
curl --request GET "https://api.sabbatic.es/v2/expensetypes?json=%7B%7D"
-H "session_id:YOURSESSIONID"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expensetypes");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expensetypes?json=%7B%7D")
.get()
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expensetypes');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'json' => '%7B%7D'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplos de JSON de respuesta:
{
"entities_list": [
{
"expense_type_id": 1,
"name": "Ticket",
"measure_unit": "Unidad",
"image": true,
"custom_amounts": true,
"active": true
},
{
"expense_type_id": 2,
"name": "Factura",
"measure_unit": "Unidad",
"image": true,
"custom_amounts": true,
"active": false
},
{
"expense_type_id": 3,
"name": "Kilometraje",
"measure_unit": "Km",
"image": false,
"custom_amounts": true,
"active": true
},
{
"expense_type_id": 4,
"name": "Dieta",
"measure_unit": "Dieta(s)",
"image": true,
"custom_amounts": true,
"active": true
},
{
"expense_type_id": 5,
"name": "Pernoctación",
"measure_unit": "Noche(s)",
"image": true,
"custom_amounts": true,
"active": true
}
]
}
HTTP Request
GET https://api.sabbatic.es/v2/expensetypes?json={}
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
company_id |
int | Identificador de empresa de la que deseamos listar sus tipos de gasto. |
Edit an expense type
Edición de un tipo de gasto para un empresa en Sabbatic.
Ejemplo de llamada al servicio Edit an expense type:
# Llamada desde consola Linux
curl --request PUT "https://api.sabbatic.es/v2/expensetypes"
-H "session_id:YOURSESSIONID"
--data "json=%7B%22expense_type_id%22%3A5%2C%20%22active%22%3Afalse%7D"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/expensetypes");
var request = new RestRequest(Method.PUT);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "json=%7B%22expense_type_id%22%3A5%2C%20%22active%22%3Afalse%7D");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/expensetypes")
.put(body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/expensetypes');
$request->setMethod(HTTP_METH_PUT);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'Content-Type' => 'application/x-www-form-urlencoded',
'session_id' => 'YOURSESSIONID'
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
'json' => '{"expense_type_id":5, "active":false}'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": "Entities id parameter not valid or some elements do not exist"
}
HTTP Request
PUT https://api.sabbatic.es/v2/expensetypes
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
expense_type_id * |
int | Identificador de cada tipo de gasto en una empresa |
company_id |
int | Identificador de la empresa asignada donde se editará el tipo de gasto. |
company_id_custom |
string | Identificador personal de una empresa en el sistema del cliente. El par company_id , company_id_custom determina a una única empresa en Sabbatic. |
Parámetros de datos
*Obligatorios
Parámetro | Tipo | Descripción |
---|---|---|
image |
boolean | true o false para decidir si ese tipo de gasto debe llevar una imagen adjunta o no. |
active |
boolean | true o false para decidir si la categoría está actualmente activa y por tanto los usuarios pueden seguir introduciendo gastos de dicha categoría. |
Countries
La entidad Countries
(Paises) es la entidad que utiliza Sabbatic para identificar los paises y su relación con la divisa oficial de dicho país, el país-divisa por defecto para todos los gastos es España-Euro, pero si se desea especificar otro país y divisa habrá que referenciarlos con los identificadores que proporciona Sabbatic.
El sistema asume que un país solo tiene una única divisa oficial.
Esta entidad permite las operaciones GET
para listar información de paises y sus divisas correspondientes.
List all countries
Listado de paises-divisas.
Ejemplo de llamada al servicio List all countries:
# Llamada desde consola Linux
curl --request GET "https://api.sabbatic.es/v2/countries?json=%7B%7D"
-H "session_id:YOURSESSIONID"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/countries");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/countries?json=%7B%7D")
.get()
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/countries');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'json' => '%7B%7D'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplos de JSON de respuesta:
{
"entities_list": [
{
"country_id": 1,
"name": "Andorra",
"acronym": "AND",
"official_currency": {
"currency_id": 1,
"name": "Euro",
"acronym": "EUR"
}
},
{
"country_id": 2,
"name": "Emiratos Árabes Unidos",
"acronym": "ARE",
"official_currency": {
"currency_id": 2,
"name": "Dirham de los Emiratos Árabes Unidos",
"acronym": "AED"
}
},
{
"country_id": 3,
"name": "Afganistán",
"acronym": "AFG",
"official_currency": {
"currency_id": 3,
"name": "Afgani afgano",
"acronym": "AFN"
}
},
......
......
......
]
}
HTTP Request
GET https://api.sabbatic.es/v2/countries?json={}
El campo acronym
utiliza el estandar ISO 3166;
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|
Currencies
La entidad Currencies
(Divisas) es la entidad que utiliza Sabbatic para identificar las distintas divisas introducidas en el sistema asi como sus acronimos.
El sistema asume que un país solo tiene una única divisa oficial, pero una divisa oficial puede existir en varios paises.
Esta entidad permite las operaciones GET
para listar información de divisas.
List all currencies
Listado de divisas
Ejemplo de llamada al servicio List all currencies:
# Llamada desde consola Linux
curl --request GET "https://api.sabbatic.es/v2/currencies?json=%7B%7D"
-H "session_id:YOURSESSIONID"
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/currencies");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("session_id", "YOURSESSIONID");
var json = new {};
var jsonText = JsonConvert.SerializeObject( json, Formatting.None );
request.AddParameter("json", jsonText);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/currencies?json=%7B%7D")
.get()
.addHeader("session_id", "YOURSESSIONID")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
$request = new HttpRequest();
$request->setUrl('https://api.sabbatic.es/v2/currencies');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'json' => '%7B%7D'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'session_id' => 'YOURSESSIONID'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
?>
Ejemplos de JSON de respuesta:
{
"entities_list": [
{
"currency_id": 1,
"name": "Euro",
"acronym": "EUR"
},
{
"currency_id": 2,
"name": "Dirham de los Emiratos Árabes Unidos",
"acronym": "AED"
},
{
"currency_id": 3,
"name": "Afgani afgano",
"acronym": "AFN"
},
.....
.....
.....
]
}
HTTP Request
GET https://api.sabbatic.es/v2/currencies?json={}
El campo acronym
utiliza el estandar ISO 4217.
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/x-www-form-urlencoded |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|
Attachment
La entidad Attachment
(Adjunto) es la entidad que utiliza Sabbatic para representar un archivo adjuntado a un gasto.
Esta entidad permite las operaciones GET
, POST
, PUT
, DELETE
sobre el adjunto de un gasto.
Get an attachment
Recuperación de un adjunto
Ejemplo de llamada al servicio get attachment:
# Llamada desde consola Linux
curl --location --request GET 'https://api.sabbatic.es/v2/attachment' \
--header 'session_id: YOURSESSIONID' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": ATTACHMENTID
}'
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/attachment");
var request = new RestRequest(Method.GET);
request.AddHeader("session_id", "YOURSESSIONID");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n \"id\": ATTACHMENTID\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/attachment")
.method("GET", null)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.sabbatic.es/v2/attachment');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'session_id' => 'YOURSESSIONID',
'Content-Type' => 'application/json'
));
$request->setBody('{\n "id": ATTACHMENTID\n}');
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
?>
Ejemplos de JSON de respuesta:
{
"id": 3027816,
"type": {
"id": 5,
"name": "test"
},
"url": "https://app.sabbatic.es/es/system/files/attachments/{{entity_id}}/realPNG.png?token=fea84f3351e265de8582774c4c03924f00e2179fe4970af763377b4d293504c5"
}
HTTP Request
GET https://api.sabbatic.es/v2/attachment
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/json |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
*Obligatorios
Parámetro | Tipo | Descripción |
---|---|---|
id * |
int | Identificador del adjunto del gasto |
Create an attachment
Envío de un nuevo adjunto a un gasto de Sabbatic.
Ejemplo de llamada al servicio Create an attachment:
# Llamada desde consola Linux
curl --location --request POST 'https://api.sabbatic.es/v2/attachment' \
--header 'session_id: YOURSESSIONID' \
--header 'Content-Type: application/json' \
--data-raw '{
"file": {{attachment_file_base64_content}},
"type_id": {{attachment_type_id}},
"entity_id": {{entity_id}},
"name": {{attachment_file_name}}
}'
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/attachment");
var request = new RestRequest(Method.POST);
request.AddHeader("session_id", "YOURSESSIONID");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n \"file\": {{attachment_file_base64_content}},\n \"type_id\": {{attachment_type_id}},\n \"entity_id\": {{entity_id}},\n \"name\": {{attachment_file_name}}\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"file\": {{attachment_file_base64_content}},\n \"type_id\": {{attachment_type_id}},\n \"entity_id\": {{entity_id}},\n \"name\": {{attachment_file_name}}\n}");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/attachment")
.method("POST", body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.sabbatic.es/v2/attachment');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'session_id' => 'YOURSESSIONID',
'Content-Type' => 'application/json'
));
$request->setBody('{\n "file": {{attachment_file_base64_content}},\n "type_id": {{attachment_type_id}},\n "entity_id": {{entity_id}},\n "name": {{attachment_file_name}}\n}');
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
?>
Ejemplos de JSON de respuesta:
{
"id": 3027816,
"type": {
"id": 5,
"name": "test"
},
"url": "https://app.sabbatic.es/es/system/files/attachments/{{entity_id}}/realPNG.png?token=fea84f3351e265de8582774c4c03924f00e2179fe4970af763377b4d293504c5"
}
HTTP Request
POST https://api.sabbatic.es/v2/attachment
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/json |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de datos
*Obligatorios
Parámetro | Tipo | Descripción |
---|---|---|
name * |
string | El nombre que se quiere dar al adjunto. Nombre completo con extension. |
type_id * |
int | El id del tipo de adjunto. Tiene que existir previamente. |
entity_id * |
int | Identificador de gasto(Ticket,Factura,Kilometraje...). |
file * |
string | Archivo serializado en Base64. |
description |
string | Descripción del adjunto. Máximo 255 caracteres. |
Edit an attachment
Edición de un adjunto de un gasto en Sabbatic. En un adjunto solo se pueden cambiar el tipo y la descripción.
Ejemplo de llamada al servicio Edit an attachment:
# Llamada desde consola Linux
curl --location --request PUT 'https://api.sabbatic.es/v2/attachment' \
--header 'session_id: YOURSESSIONID' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": {{attachment_id}},
"description": "Lorem Ipsum is simply dummy text of the printing and typesetting industry"
}'
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/attachment");
var request = new RestRequest(Method.PUT);
request.AddHeader("session_id", "YOURSESSIONID");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n \"id\": {{attachment_id}},\n \"description\": \"Lorem Ipsum is simply dummy text of the printing and typesetting industry\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"id\": {{attachment_id}},\n \"description\": \"Lorem Ipsum is simply dummy text of the printing and typesetting industry\"\n}");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/attachment")
.method("PUT", body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.sabbatic.es/v2/attachment');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'session_id' => 'YOURSESSIONID',
'Content-Type' => 'application/json'
));
$request->setBody('{\n "id": {{attachment_id}},\n "description": "Lorem Ipsum is simply dummy text of the printing and typesetting industry"\n}');
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
?>
Ejemplos de JSON de respuesta:
{
"id": 3027816,
"type": {
"id": 5,
"name": "test"
},
"url": "https://app.sabbatic.es/es/system/files/attachments/{{entity_id}}/realPNG.png?token=fea84f3351e265de8582774c4c03924f00e2179fe4970af763377b4d293504c5"
}
HTTP Request
PUT https://api.sabbatic.es/v2/attachment
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/json |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
*Obligatorios
Parámetro | Tipo | Descripción |
---|---|---|
id * |
int | Identificador del adjunto del gasto |
Parámetros de datos
Parámetro | Tipo | Descripción |
---|---|---|
type_id |
int | El id del tipo de adjunto. Tiene que existir previamente. |
description |
string | Descripción del adjunto. Máximo 255 caracteres. |
Delete an attachment
Eliminación de un adjunto de un gasto en Sabbatic.
Ejemplo de llamada al servicio Delete an attachment:
# Llamada desde consola Linux
curl --location --request DELETE 'https://api.sabbatic.es/v2/attachment' \
--header 'session_id: YOURSESSIONID' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": {{attachment_id}}
}'
// Cliente RestSharp, según la versión el código puede variar
var client = new RestClient("https://api.sabbatic.es/v2/attachment");
var request = new RestRequest(Method.DELETE);
request.AddHeader("session_id", "YOURSESSIONID");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n \"id\": {{attachment_id}}\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
// Cliente OK Http, según la versión el código puede variar
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"id\": {{attachment_id}}\n}");
Request request = new Request.Builder()
.url("https://api.sabbatic.es/v2/attachment")
.method("DELETE", body)
.addHeader("session_id", "YOURSESSIONID")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
// Cliente HttpRequest, según la versión el código puede variar
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.sabbatic.es/v2/attachment');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'session_id' => 'YOURSESSIONID',
'Content-Type' => 'application/json'
));
$request->setBody('{\n "id": {{attachment_id}}\n}');
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
?>
La respuesta devolverá el código de respuesta de la operación de éxito o fracaso:
{
"code": "200",
"reason": "OK"
}
{
"code": "400",
"message": "Bad Request",
"description": ""
}
HTTP Request
DELETE https://api.sabbatic.es/v2/attachment
HEADER Parámetros
Parámetro | Descripción |
---|---|
content-type |
application/json |
session_id |
Identificador de sistema devuelto por el servicio de Autenticación. |
Parámetros de filtrado
Parámetro | Tipo | Descripción |
---|---|---|
id * |
int | Identificador del adjunto del gasto |
Objects
Objetos JSON que se utilizan en las llamadas de API.
Todas las claves de los objetos no son obligatorias.
user
Ejempo del objeto user:
{
"user_id":1234,
"user_id_custom":"u-1234",
"name": "Soy",
"surname": "Anonimo 1",
"email": "soy@anonimo.com",
"admin": false
}
Parámetro | Tipo | Descripción |
---|---|---|
user_id |
int | Identificador numérico (entero) que identifica a un usuario en el entorno Sabbatic, ej: 2368 |
user_id_custom |
string | Identificador (string alfanumérico) que identifica a un usuario en el entorno del equipo cliente, el integrador puede utilizar sus propias claves para identificar a una usuario en Sabbatic, ej: "188" o "BAR-188" |
name |
string | Nombre del usuario. |
surname |
string | Apellido del usuario. |
email |
string | Correo electrónico del usuario utilizado para enviar alertas o avisos a dicho usuario. No tiene porque coincidir con el username propio que permite hacer log in en la web de Sabbatic, pero es coincidente en muchos casos. |
admin |
boolean | Booleano true o false que indica y determina si ese usuario es administrador. |
group
Ejempo del objeto group:
{
"group_id":1234,
"group_id_custom":"g-1234",
"name": "Grupo 1",
"company_id": 1234,
"company_id_custom": "c-1234",
"users": [
{
"user_id":1234,
"user_id_custom":"u-1234",
"name": "Soy",
"surname": "Anonimo 1",
"email": "soy@anonimo.com",
"admin": false
}
],
"group_manager_users": [
{
"user_id":1234,
"user_id_custom":"u-1234",
"name": "Soy",
"surname": "Anonimo 1",
"email": "soy@anonimo.com",
"admin": false
}
],
"autoconfirm_users": [
{
"user_id":1234,
"user_id_custom":"u-1234",
"name": "Soy",
"surname": "Anonimo 1",
"email": "soy@anonimo.com",
"admin": false
}
]
}
Parámetro | Tipo | Descripción |
---|---|---|
group_id |
int | Identificador de un grupo de usuarios en el entorno Sabbatic, ej: 589637. |
group_id_custom |
string | Identificador de un grupo de usuarios en el entorno del cliente, el integrador puede utilizar sus propias claves para identificar a un grupo de usuarios en Sabbatic, ej: "234523" o "ND232-T" |
name |
string | Nombre del grupo. |
company_id |
int | Identifica de empresa en el entorno Sabbatic, ej: 589637 . Los grupos pueden estar asignados a empresas integradas o a la propia empresa matriz del integrador, si no se especifica este parámetro o su asociado custom, el grupo se asignará a la empresa matriz del integrador. |
company_id_custom |
string | Identificador personal de una empresa en el sistem del cliente. El integrador puede utilizar sus propias claves para identificar a una empresa en Sabbatic, ej: "234523" o "ND232-T". Los grupos pueden estar asignados a empresas integradas o a la propia empreza matriz del integrador, si no se especifica este parámetro o su asociado no custom, el grupo se asignará a la empresa matriz del integrador. |
users |
array<user> | Array de objetos user que pertenecen al grupo donde están englobados. |
group_manager_users |
array<user> | Array de objetos user de supervisores del grupo donde están englobados. En esta lista no se pueden incluir user que no esten en users . |
autoconfirm_users |
array<user> | Array de objetos user de supervisores del grupo que además pueden auto-aprobar sus gastos. En esta lista no se pueden incluir user que no esten en users y group_manager_users . Si no se incluye este campo los supervisores del grupo tendran la auto-aprobación: true por defecto. |
company
Ejempo del objeto company:
{
"company_id":1234,
"company_id_custom":"c-1234",
"users": [
{
"user_id":1234,
"user_id_custom":"u-1234",
"name": "Soy",
"surname": "Anonimo 1",
"email": "soy@anonimo.com",
"admin": false
}
]
}
Parámetro | Tipo | Descripción |
---|---|---|
company_id |
int | Identificador numérico (entero) que identifica a una empresa en el entorno Sabbatic, ej: 342234 |
company_id_custom |
string | Identificador (string alfanumérico) que identifica a una empresa en el entorno del equipo cliente, el integrador puede utilizar sus propias claves para identificar a una empresa en Sabbatic, ej: "234523" o "ND232-T" |
users |
array<user> | Array de objetos user que pertenecen a la empresa del objeto donde esta englobado. |
category
Ejempo del objeto category:
{
"category_id":236987,
"labels":[
{
"name":"Label1",
"label_id":356325
},
{
"name":"Label2",
"label_id":412323
},
{
"name":"Label3",
"label_id_custom":"Lbl3"
}
]
}
Parámetro | Tipo | Descripción |
---|---|---|
category_id |
int | Identificador numérico (entero) que identifica a una categoría en el entorno Sabbatic, ej: 266987. |
category_id_custom |
string | Identificador personal que identifica a una categoría en el entorno del cliente, el integrador puede utilizar sus propias claves para identificar a una categoría previamente creada en Sabbatic, ej: "653236" o "Marketing-23" |
permissions |
array<updates_permission> | Array de objectos updates_permission que son los permisos de la etiqueta. |
labels |
array<label> | Array de objetos label que pertenecen a la categoría del objeto donde esta englobado. Todas las etiquetas deben pertenecer a una categoría. |
label
Ejempo del objeto label:
{
"label_id":412323,
"name":"Label3",
"label_id_custom":"Lbl3"
}
Parámetro | Tipo | Descripción |
---|---|---|
label_id |
int | Identificador numérico (entero) que identifica a una etiqueta en el entorno Sabbatic, ej: 355254 . |
label_id_custom |
string | Identificador personal que identifica a una etiqueta en el entorno del equipo cliente, el intfgrador puede utilizar sus propias claves para identificar a una etiqueta en Sabbatic, ej: "423562" o "Proyecto-33" |
name |
string | Nombre de la etiqueta. |
permissions |
array<updates_permission> | Array de objectos updates_permission que son los permisos de la etiqueta. |
parent_labels |
array<label> | Array de objetos label que determina la anidación o dependencia de unas etiquetas sobre otras. Por ejemplo si una etiqueta no puede ser asignada a un gasto si no se incluye previamente también su etiqueta "padre". |
permission
Ejempo del objeto permission:
{
"users": [
12345
],
"companies": [
12345
],
"groups": [
12345
]
}
Todas las claves son opcionales:
Clave | Tipo | Descripción |
---|---|---|
users |
array<int> | Un array de int con los ids. |
companies |
array<int> | Un array de int con los ids. |
groups |
array<int> | Un array de int con los ids. |
updates_permission
Ejempo del objeto updates_permission:
{
"users": [
{
"user_id": 12345
},
{
"company_id_custom": "MIUSUARIO"
}
],
"companies": [
{
"company_id": 12345
},
{
"company_id_custom": "MIEMPRESA"
}
],
"groups": [
{
"group_id": 12345
},
{
"group_id_custom": "MIGRUPO"
}
]
}
Todas las claves son opcionales:
Clave | Tipo | Descripción |
---|---|---|
users |
array<user_permission> | Un array con objectos user_permission . |
companies |
array<company_permission> | Un array con objectos company_permission . |
groups |
array<group_permission> | Un array con objetos group_permission . |
user_permission
Ejemplo del objecto user_permission:
{
"user_id": 12345,
"user_id_custom": "MIUSUARIO"
}
Es un objecto JSON con la siguiente estructura.
Todas las claves son opcionales:
Clave | Tipo | Descripción |
---|---|---|
user_id |
int | Identificador de un usuario en Sabbatic. |
user_id_custom |
string | Identificador personal del usuario en la empresa en Sabbatic. |
company_permission
Ejemplo del objecto company_permission:
{
"company_id": 12345,
"company_id_custom": "MIEMPRESA"
}
Es un objecto JSON con la siguiente estructura.
Todas las claves son opcionales:
Clave | Tipo | Descripción |
---|---|---|
company_id |
int | Identificador de una empresa en Sabbatic. |
company_id_custom |
string | Identificador personal de la empresa en Sabbatic. |
group_permission
Ejemplo del objecto group_permission:
{
"group_id": 12345,
"group_id_custom": "MIGRUPO"
}
Es un objecto JSON con la siguiente estructura.
Todas las claves son opcionales:
Clave | Tipo | Descripción |
---|---|---|
group_id |
int | Identificador de un grupo en Sabbatic. |
group_id_custom |
string | Identificador personal de un grupo en la empresa en Sabbatic. |
Errors
Los códigos de error más habituales en Sabbatic:
Código | Mensaje | Descripción |
---|---|---|
400 | Bad Request | Tu petición no es válida, reformula la petición al servidor para obtner una respuesta válida. |
401 | Unauthorized | Tu session_id en Sabbatic no es válida, por favor vuelve a hacer login en Sabbatic. |
403 | Forbidden | No tienes acceso a este servicio. |
404 | Not Found | El servicio solicitado no existe. |
405 | Method Not Allowed | El servicio solicitado no está activo. |
406 | Not Acceptable | La petición realizada no es un JSON. |
410 | Gone | El servicio ha sido eliminado de los servidores de Sabbatic. |
429 | Too Many Requests | Se han realizado demasiadas peticiones a los servicios en un periodo muy corto de tiempo. |
500 | Internal Server Error | Ha habido algún problema en los servidores de Sabbatic. Por favor, inténtelo más tarde. |
503 | Service Unavailable | El servicio no está disponible por razones de mantenimiento. Por favor, inténtelo más tarde. |