Introducción
Bienvenido al sitio web de documentación del Channel Manager de Sensación Rural.
Puedes usar el API para acceder a todas las funcionalidades del sistema, pensadas para facilitar el
control y la gestión de las reservas y disponibilidad de sus propiedades.
El API usa la arquitectura REST, que nos permite ofrecer el servicio de
una manera estándar, comprensible y con URL’s orientadas a recursos. Usamos las funcionalidades que nos
ofrece HTTP (Autenticación HTTP, verbos para expresar las acciones y
códigos de respuesta) y como formato de respuesta usamos JSON por ser
uno de los más extendidos y de mejor lectura.
Autenticación
Para autenticarte con nuestra API necesitas enviarnos el token como parte de la cabecera de las
peticiones.
La asignación del token es por usuario, por lo que una aplicación cliente puede tener permisos para
acceder sólo a los datos de sus propiedades
La cabecera que comprobamos es X-AUTH-TOKEN. En caso de que no esté incluída o sea errónea, será
devuelto un error 403.
Limite de peticiones
El limite de peticiones que aceptamos son 750 peticiones cada 5 minutos.
Este limite puede ser cambiado en el futuro, pero en todo caso mantendremos un limite que permita hacer
un uso responsable del API y que se ajuste a los casos de uso de los usuarios.
Headers de la respuesta:
| Nombre |
Descripción |
| X-RateLimit-Limit |
Numero de petición actual. |
| X-RateLimit-Remaining |
Peticiones restantes para el bloque actual. |
| X-RateLimit-Reset |
Fecha y hora de fin de este bloque de peticiones (Formato epoch). |
Suggest
get
curl --request GET \
--url /api/suggest
require 'uri'
require 'net/http'
url = URI("/api/suggest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("GET", "/api/suggest")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/suggest",
"method": "GET",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.get("/api/suggest")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/suggest');
$request->setMethod(HTTP_METH_GET);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/suggest"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Obtendremos las entidades (alojamientos, localidades, provincias, zonas) que coinciden con el GET de
la siguiente.
- Parámetros obligatorios en la URL:
| Nombre |
Descripción |
| query |
Es una cadena por la que el usuario va a realizar la búsqueda |
| Nombre |
Descripción |
| name |
Es nombre de la entidad |
| type |
Tipo de entidad: "A" Alojamiento, "P" Provincia, "L" Localidad, "Z" Zona
|
Disponibilidad
/reservations/:bookable_unit_id
get
curl --request GET \
--url /api/reservations:id
require 'uri'
require 'net/http'
url = URI("/api/reservations:id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("GET", "/reservations:id")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/reservations:id",
"method": "GET",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.get("/api/reservations:id")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/reservations:id');
$request->setMethod(HTTP_METH_GET);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/reservations:id"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Obtendremos las reservas activas que existen actualmente el channel manager para esa unidad reservable. Si añadimos las fechas el servicio nos devuelve las reservas activas entre las fechas correspondientes
- Parámetros opcionales en la URL:
| Nombre |
Descripción |
| start |
Es una fecha con formato Y-m-d |
| end |
Es una fecha con formato Y-m-d |
/availability/:bookable_unit_id
get
curl --request GET \
--url /api/availability/:bookable_unit_id
require 'uri'
require 'net/http'
url = URI("/api/availability/:bookable_unit_id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("GET", "/availability/:bookable_unit_id")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/availability/:bookable_unit_id",
"method": "GET",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.get("/api/availability/:bookable_unit_id")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/availability/:bookable_unit_id');
$request->setMethod(HTTP_METH_GET);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/availability/:bookable_unit_id"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Obtendremos información de si una unidad reservable esta disponible para unas fechas seleccionadas. Ademas si la unidad reservable no esta disponible se añaden las reservas activas durantes las fechas.
- Parámetros obligatorios en la URL:
| Nombre |
Descripción |
| start |
Es una fecha con formato Y-m-d |
| end |
Es una fecha con formato Y-m-d |
| Nombre |
Descripción |
| available |
Nos indica si la unidad reservable esta disponibile para las fechas solicitadas |
| reservations |
Se muestra si la unidad reservable no esta disponible y lista las reservas existentes entre las fechas seleccionadas
|
/availability
get
curl --request GET \
--url /api/availability
require 'uri'
require 'net/http'
url = URI("/api/availability")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("GET", "/availability")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/availability",
"method": "GET",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.get("/api/availability")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/availability');
$request->setMethod(HTTP_METH_GET);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/availability"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Obtendremos las propiedades activas que tienen unidades alojativas disponibles el channel manager para unas determinadas fechas
- Parámetros obligatorios en la URL:
| Nombre |
Descripción |
| start |
Es una fecha con formato Y-m-d |
| end |
Es una fecha con formato Y-m-d |
- Parámetros opcionales en la URL:
| Nombre |
Descripción |
| entidad_id |
Identificador de la entidad administrativa |
Alojamientos
/accommodations
get
curl --request GET \
--url /api/accommodations
require 'uri'
require 'net/http'
url = URI("/api/accommodations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("GET", "/accommodations")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/accommodations",
"method": "GET",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.get("/api/accommodations")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/accommodations');
$request->setMethod(HTTP_METH_GET);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/accommodations"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Obtiene una lista de alojamientos del usuario que solicita
post
curl --request POST \
--url /api/accommodations \
--data '{"description":"<ADD STRING VALUE>","annotations":"<ADD STRING VALUE>","date":"<ADD STRING VALUE>","serie":"<ADD STRING VALUE>","tags":["<ADD STRING VALUE>"],"issued":false,"number":0,"customer":0,"footer":"Configuración del usuario.","irm":"Configuración del usuario.","accommodations_lines":[{"quantity":0,"concept":"<ADD STRING VALUE>","amount":0,"discount":0,"tax":0,"surcharge":0,"retention":0}],"charges":[{"date":"<ADD STRING VALUE>","amount":0,"method":"cash","destination_account":0,"origin_account":"<ADD STRING VALUE>","charged":false}]}'
require 'uri'
require 'net/http'
url = URI("/api/accommodations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request.body = "{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"accommodations_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}"
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
payload = "{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"accommodations_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}"
conn.request("POST", "/accommodations", payload)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/accommodations",
"method": "POST",
"headers": {},
"processData": false,
"data": "{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"accommodations_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}"
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.post("/api/accommodations")
.body("{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"accommodations_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/accommodations');
$request->setMethod(HTTP_METH_POST);
$request->setBody('{"description":"<ADD STRING VALUE>","annotations":"<ADD STRING VALUE>","date":"<ADD STRING VALUE>","serie":"<ADD STRING VALUE>","tags":["<ADD STRING VALUE>"],"issued":false,"number":0,"customer":0,"footer":"Configuración del usuario.","irm":"Configuración del usuario.","accommodations_lines":[{"quantity":0,"concept":"<ADD STRING VALUE>","amount":0,"discount":0,"tax":0,"surcharge":0,"retention":0}],"charges":[{"date":"<ADD STRING VALUE>","amount":0,"method":"cash","destination_account":0,"origin_account":"<ADD STRING VALUE>","charged":false}]}');
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/accommodations"
payload := strings.NewReader("{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"accommodations_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}")
req, _ := http.NewRequest("POST", url, payload)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Añadir un alojamiento.
- Parametros obligatorios en la petición:
| Nombre |
Descripción |
name string
|
Nombre identificativo del alojamiento |
- Parametros opcionales en la petición:
| Nombre |
Descripción |
name_translate array |
Nombre en diferentes idiomas Es un array en el que la key es el código ISO del pais |
description array |
Descripciones en diferentes idiomas Es un array en el que la key es el código ISO del pais |
web string |
Url de la web de la propiedad |
images array |
Es un array con las url de las imágenes del alojamiento |
location string |
Dirección del alojamiento |
administrative_entity_id integer |
Identificador de la entidad administrativa en la que se localiza el alojamiento |
latitude string |
|
longitude string |
|
phone_1 string |
Teléfono público del alojamiento |
phone_2 string |
Teléfono público del alojamiento |
email string |
Correo eléctronico público del alojamiento |
environment string |
Situación del alojamiento |
advance_id integer |
Tipo de anticipo 1: % , 2: €, 3: Noches |
advance_num float |
Cantidad relacionada con el parámetro type |
booking_conditions array |
Condiciones de reserva en diferentes idiomas Es un array en el que la key es el código ISO del pais |
facilities array |
Características o instalaciones del alojamiento |
/accommodations/:id
get
curl --request GET \
--url /api/accommodations/:id
require 'uri'
require 'net/http'
url = URI("/api/accommodations/:id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("GET", "/accommodations/:id")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/accommodations/:id",
"method": "GET",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.get("/api/accommodations/:id")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/accommodations/:id');
$request->setMethod(HTTP_METH_GET);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/accommodations/:id"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Obtener el alojamiento que corresponde con el id pasado como parámetro.
put
curl --request PUT \
--url /api/accommodations/:id
require 'uri'
require 'net/http'
url = URI("/api/accommodations/:id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Put.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("PUT", "/accommodations/:id")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/accommodations/:id",
"method": "PUT",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.put("/api/accommodations/:id")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/accommodations/:id');
$request->setMethod(HTTP_METH_PUT);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/accommodations/:id"
req, _ := http.NewRequest("PUT", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Actualizar un alojamiento.
- Descripción: Adicionalmente a los campos de
accommodations_lines
y de charges detallados en el link de la tabla se añade un
nuevo campo opcional id
Comportamiento esperado de lineas y
cobros en la actualización de facturas.
* Si contiene el campo id se actualizarán los datos de esa linea o cobro.
* Si
no contiene el campo id se creará una nueva linea o cobro.
* Todos los id’s de lineas y cobros que no estén presentes en el objeto que se recibe como
parámetro serán eliminados.
- Parametros obligatorios en la petición:
| Nombre |
Descripción |
issued boolean
|
Este parámetro define si es un borrador o una factura emitida. |
customer integer
|
Id del cliente al que se emite la factura. |
accommodations_lines array |
Lineas de factura |
charges array
|
Cobros
Detalle: La suma de los cobros debe ser igual que el total de la
factura.
|
- Parametros opcionales en la petición:
| Nombre |
Descripción |
description string |
|
annotations string |
|
date string |
Fecha de facturación Formato: yyyy-MM-dd Debe ser superior o igual a la fecha de la
ultima factura emitida ese año con la misma serie, si no se envía fecha se usará la fecha de
la petición.
|
serie string
|
Nombre de la serie de facturación, si no se envía se creará en la serie de facturación por
defecto.
|
tags array |
Las etiquetas que quieres que se asignen a la factura. Si no existen se crearán.
|
number integer
|
Número de factura Si es la primera factura del año y de la serie se cogerá este como el
primer numero de factura. Si ya existe una factura con la misma serie y se envía este
parametro la petición fallará si no es el que le correspondería.
|
footer string
|
Pie de factura por defecto del usuario, que configuró en su panel de administración. |
irm string |
Campo IRM por defecto del usuario para las facturas, que configuró en su panel de
administración.
|
| Nombre |
Descripción |
| business.business_name |
Este campo solo se devuelve si el tipo de la empresa no es individual |
| business.name |
Este campo solo se devuelve cuando el tipo de la empresa es individual
|
| business.surname_1 |
Este campo solo se devuelve cuando el tipo de la empresa es individual
|
| business.surname_2 |
Este campo solo se devuelve cuando el tipo de la empresa es individual
|
| charges.origin_account_number |
Este campo se devuelve dependiendo delmétodoo de pago |
| charges.origin_account_description |
Este campo se devuelve dependiendo delmétodoo de pago |
| accommodations_lines.surcharge |
Este campo se devuelve si la linea de factura tiene recargo |
delete
curl --request DELETE \
--url /api/accommodations/:id
require 'uri'
require 'net/http'
url = URI("/api/accommodations/:id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Delete.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("DELETE", "/accommodations/:id")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/accommodations/:id",
"method": "DELETE",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.delete("/api/accommodations/:id")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/accommodations/:id');
$request->setMethod(HTTP_METH_DELETE);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/accommodations/:id"
req, _ := http.NewRequest("DELETE", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Unidades Alojativas
/accommodation-units
get
curl --request GET \
--url /api/accommodation-units
require 'uri'
require 'net/http'
url = URI("/api/accommodation-units")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("GET", "/accommodation-units")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/accommodation-units",
"method": "GET",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.get("/api/accommodation-units")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/accommodation-units');
$request->setMethod(HTTP_METH_GET);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/accommodation-units"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Obtiene una lista de alojamientos del usuario que solicita
post
curl --request POST \
--url /api/accommodation-units \
--data '{"description":"<ADD STRING VALUE>","annotations":"<ADD STRING VALUE>","date":"<ADD STRING VALUE>","serie":"<ADD STRING VALUE>","tags":["<ADD STRING VALUE>"],"issued":false,"number":0,"customer":0,"footer":"Configuración del usuario.","irm":"Configuración del usuario.","accommodation-units_lines":[{"quantity":0,"concept":"<ADD STRING VALUE>","amount":0,"discount":0,"tax":0,"surcharge":0,"retention":0}],"charges":[{"date":"<ADD STRING VALUE>","amount":0,"method":"cash","destination_account":0,"origin_account":"<ADD STRING VALUE>","charged":false}]}'
require 'uri'
require 'net/http'
url = URI("/api/accommodation-units")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request.body = "{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"accommodation-units_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}"
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
payload = "{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"accommodation-units_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}"
conn.request("POST", "/accommodation-units", payload)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/accommodation-units",
"method": "POST",
"headers": {},
"processData": false,
"data": "{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"accommodation-units_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}"
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.post("/api/accommodation-units")
.body("{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"accommodation-units_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/accommodation-units');
$request->setMethod(HTTP_METH_POST);
$request->setBody('{"description":"<ADD STRING VALUE>","annotations":"<ADD STRING VALUE>","date":"<ADD STRING VALUE>","serie":"<ADD STRING VALUE>","tags":["<ADD STRING VALUE>"],"issued":false,"number":0,"customer":0,"footer":"Configuración del usuario.","irm":"Configuración del usuario.","accommodation-units_lines":[{"quantity":0,"concept":"<ADD STRING VALUE>","amount":0,"discount":0,"tax":0,"surcharge":0,"retention":0}],"charges":[{"date":"<ADD STRING VALUE>","amount":0,"method":"cash","destination_account":0,"origin_account":"<ADD STRING VALUE>","charged":false}]}');
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/accommodation-units"
payload := strings.NewReader("{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"accommodation-units_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}")
req, _ := http.NewRequest("POST", url, payload)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Añadir un alojamiento.
- Parametros obligatorios en la petición:
| Nombre |
Descripción |
name string
|
Nombre identificativo del alojamiento |
- Parametros opcionales en la petición:
| Nombre |
Descripción |
name_translate array |
Nombre en diferentes idiomas Es un array en el que la key es el código ISO del pais |
description array |
Descripciones en diferentes idiomas Es un array en el que la key es el código ISO del pais |
web string |
Url de la web de la propiedad |
images array |
Es un array con las url de las imágenes del alojamiento |
location string |
Dirección del alojamiento |
administrative_entity_id integer |
Identificador de la entidad administrativa en la que se localiza el alojamiento |
latitude string |
|
longitude string |
|
phone_1 string |
Teléfono público del alojamiento |
phone_2 string |
Teléfono público del alojamiento |
email string |
Correo eléctronico público del alojamiento |
environment string |
Situación del alojamiento |
advance_id integer |
Tipo de anticipo 1: % , 2: €, 3: Noches |
advance_num float |
Cantidad relacionada con el parámetro type |
booking_conditions array |
Condiciones de reserva en diferentes idiomas Es un array en el que la key es el código ISO del pais |
facilities array |
Características o instalaciones del alojamiento |
/accommodation-units/:id
get
curl --request GET \
--url /api/accommodation-units/:id
require 'uri'
require 'net/http'
url = URI("/api/accommodation-units/:id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("GET", "/accommodation-units/:id")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/accommodation-units/:id",
"method": "GET",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.get("/api/accommodation-units/:id")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/accommodation-units/:id');
$request->setMethod(HTTP_METH_GET);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/accommodation-units/:id"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Obtener el alojamiento que corresponde con el id pasado como parámetro.
put
curl --request PUT \
--url /api/accommodation-units/:id
require 'uri'
require 'net/http'
url = URI("/api/accommodation-units/:id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Put.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("PUT", "/accommodation-units/:id")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/accommodation-units/:id",
"method": "PUT",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.put("/api/accommodation-units/:id")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/accommodation-units/:id');
$request->setMethod(HTTP_METH_PUT);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/accommodation-units/:id"
req, _ := http.NewRequest("PUT", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Actualizar un alojamiento.
- Descripción: Adicionalmente a los campos de
accommodation-units_lines
y de charges detallados en el link de la tabla se añade un
nuevo campo opcional id
Comportamiento esperado de lineas y
cobros en la actualización de facturas.
* Si contiene el campo id se actualizarán los datos de esa linea o cobro.
* Si
no contiene el campo id se creará una nueva linea o cobro.
* Todos los id’s de lineas y cobros que no estén presentes en el objeto que se recibe como
parámetro serán eliminados.
- Parametros obligatorios en la petición:
| Nombre |
Descripción |
issued boolean
|
Este parámetro define si es un borrador o una factura emitida. |
customer integer
|
Id del cliente al que se emite la factura. |
accommodation-units_lines array |
Lineas de factura |
charges array
|
Cobros
Detalle: La suma de los cobros debe ser igual que el total de la
factura.
|
- Parametros opcionales en la petición:
| Nombre |
Descripción |
description string |
|
annotations string |
|
date string |
Fecha de facturación Formato: yyyy-MM-dd Debe ser superior o igual a la fecha de la
ultima factura emitida ese año con la misma serie, si no se envía fecha se usará la fecha de
la petición.
|
serie string
|
Nombre de la serie de facturación, si no se envía se creará en la serie de facturación por
defecto.
|
tags array |
Las etiquetas que quieres que se asignen a la factura. Si no existen se crearán.
|
number integer
|
Número de factura Si es la primera factura del año y de la serie se cogerá este como el
primer numero de factura. Si ya existe una factura con la misma serie y se envía este
parametro la petición fallará si no es el que le correspondería.
|
footer string
|
Pie de factura por defecto del usuario, que configuró en su panel de administración. |
irm string |
Campo IRM por defecto del usuario para las facturas, que configuró en su panel de
administración.
|
| Nombre |
Descripción |
| business.business_name |
Este campo solo se devuelve si el tipo de la empresa no es individual |
| business.name |
Este campo solo se devuelve cuando el tipo de la empresa es individual
|
| business.surname_1 |
Este campo solo se devuelve cuando el tipo de la empresa es individual
|
| business.surname_2 |
Este campo solo se devuelve cuando el tipo de la empresa es individual
|
| charges.origin_account_number |
Este campo se devuelve dependiendo delmétodoo de pago |
| charges.origin_account_description |
Este campo se devuelve dependiendo delmétodoo de pago |
| accommodation-units_lines.surcharge |
Este campo se devuelve si la linea de factura tiene recargo |
delete
curl --request DELETE \
--url /api/accommodation-units/:id
require 'uri'
require 'net/http'
url = URI("/api/accommodation-units/:id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Delete.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("DELETE", "/accommodation-units/:id")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/accommodation-units/:id",
"method": "DELETE",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.delete("/api/accommodation-units/:id")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/accommodation-units/:id');
$request->setMethod(HTTP_METH_DELETE);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/accommodation-units/:id"
req, _ := http.NewRequest("DELETE", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Reservas
/reservations
get
curl --request GET \
--url /api/reservations
require 'uri'
require 'net/http'
url = URI("/api/reservations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("GET", "/reservations")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/reservations",
"method": "GET",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.get("/api/reservations")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/reservations');
$request->setMethod(HTTP_METH_GET);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/reservations"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Obtiene una lista de alojamientos del usuario que solicita
post
curl --request POST \
--url /api/reservations \
--data '{"description":"<ADD STRING VALUE>","annotations":"<ADD STRING VALUE>","date":"<ADD STRING VALUE>","serie":"<ADD STRING VALUE>","tags":["<ADD STRING VALUE>"],"issued":false,"number":0,"customer":0,"footer":"Configuración del usuario.","irm":"Configuración del usuario.","reservations_lines":[{"quantity":0,"concept":"<ADD STRING VALUE>","amount":0,"discount":0,"tax":0,"surcharge":0,"retention":0}],"charges":[{"date":"<ADD STRING VALUE>","amount":0,"method":"cash","destination_account":0,"origin_account":"<ADD STRING VALUE>","charged":false}]}'
require 'uri'
require 'net/http'
url = URI("/api/reservations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request.body = "{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"reservations_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}"
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
payload = "{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"reservations_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}"
conn.request("POST", "/reservations", payload)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/reservations",
"method": "POST",
"headers": {},
"processData": false,
"data": "{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"reservations_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}"
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.post("/api/reservations")
.body("{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"reservations_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/reservations');
$request->setMethod(HTTP_METH_POST);
$request->setBody('{"description":"<ADD STRING VALUE>","annotations":"<ADD STRING VALUE>","date":"<ADD STRING VALUE>","serie":"<ADD STRING VALUE>","tags":["<ADD STRING VALUE>"],"issued":false,"number":0,"customer":0,"footer":"Configuración del usuario.","irm":"Configuración del usuario.","reservations_lines":[{"quantity":0,"concept":"<ADD STRING VALUE>","amount":0,"discount":0,"tax":0,"surcharge":0,"retention":0}],"charges":[{"date":"<ADD STRING VALUE>","amount":0,"method":"cash","destination_account":0,"origin_account":"<ADD STRING VALUE>","charged":false}]}');
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/reservations"
payload := strings.NewReader("{\"description\":\"<ADD STRING VALUE>\",\"annotations\":\"<ADD STRING VALUE>\",\"date\":\"<ADD STRING VALUE>\",\"serie\":\"<ADD STRING VALUE>\",\"tags\":[\"<ADD STRING VALUE>\"],\"issued\":false,\"number\":0,\"customer\":0,\"footer\":\"Configuración del usuario.\",\"irm\":\"Configuración del usuario.\",\"reservations_lines\":[{\"quantity\":0,\"concept\":\"<ADD STRING VALUE>\",\"amount\":0,\"discount\":0,\"tax\":0,\"surcharge\":0,\"retention\":0}],\"charges\":[{\"date\":\"<ADD STRING VALUE>\",\"amount\":0,\"method\":\"cash\",\"destination_account\":0,\"origin_account\":\"<ADD STRING VALUE>\",\"charged\":false}]}")
req, _ := http.NewRequest("POST", url, payload)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Añadir un alojamiento.
- Parametros obligatorios en la petición:
| Nombre |
Descripción |
name string
|
Nombre identificativo del alojamiento |
- Parametros opcionales en la petición:
| Nombre |
Descripción |
name_translate array |
Nombre en diferentes idiomas Es un array en el que la key es el código ISO del pais |
description array |
Descripciones en diferentes idiomas Es un array en el que la key es el código ISO del pais |
web string |
Url de la web de la propiedad |
images array |
Es un array con las url de las imágenes del alojamiento |
location string |
Dirección del alojamiento |
administrative_entity_id integer |
Identificador de la entidad administrativa en la que se localiza el alojamiento |
latitude string |
|
longitude string |
|
phone_1 string |
Teléfono público del alojamiento |
phone_2 string |
Teléfono público del alojamiento |
email string |
Correo eléctronico público del alojamiento |
environment string |
Situación del alojamiento |
advance_id integer |
Tipo de anticipo 1: % , 2: €, 3: Noches |
advance_num float |
Cantidad relacionada con el parámetro type |
booking_conditions array |
Condiciones de reserva en diferentes idiomas Es un array en el que la key es el código ISO del pais |
facilities array |
Características o instalaciones del alojamiento |
/reservations/:id
get
curl --request GET \
--url /api/reservations/:id
require 'uri'
require 'net/http'
url = URI("/api/reservations/:id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("GET", "/reservations/:id")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/reservations/:id",
"method": "GET",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.get("/api/reservations/:id")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/reservations/:id');
$request->setMethod(HTTP_METH_GET);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/reservations/:id"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Obtener el alojamiento que corresponde con el id pasado como parámetro.
put
curl --request PUT \
--url /api/reservations/:id
require 'uri'
require 'net/http'
url = URI("/api/reservations/:id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Put.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("PUT", "/reservations/:id")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/reservations/:id",
"method": "PUT",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.put("/api/reservations/:id")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/reservations/:id');
$request->setMethod(HTTP_METH_PUT);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/reservations/:id"
req, _ := http.NewRequest("PUT", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Resumen: Actualizar un alojamiento.
- Descripción: Adicionalmente a los campos de
reservations_lines
y de charges detallados en el link de la tabla se añade un
nuevo campo opcional id
Comportamiento esperado de lineas y
cobros en la actualización de facturas.
* Si contiene el campo id se actualizarán los datos de esa linea o cobro.
* Si
no contiene el campo id se creará una nueva linea o cobro.
* Todos los id’s de lineas y cobros que no estén presentes en el objeto que se recibe como
parámetro serán eliminados.
- Parametros obligatorios en la petición:
| Nombre |
Descripción |
issued boolean
|
Este parámetro define si es un borrador o una factura emitida. |
customer integer
|
Id del cliente al que se emite la factura. |
reservations_lines array |
Lineas de factura |
charges array
|
Cobros
Detalle: La suma de los cobros debe ser igual que el total de la
factura.
|
- Parametros opcionales en la petición:
| Nombre |
Descripción |
description string |
|
annotations string |
|
date string |
Fecha de facturación Formato: yyyy-MM-dd Debe ser superior o igual a la fecha de la
ultima factura emitida ese año con la misma serie, si no se envía fecha se usará la fecha de
la petición.
|
serie string
|
Nombre de la serie de facturación, si no se envía se creará en la serie de facturación por
defecto.
|
tags array |
Las etiquetas que quieres que se asignen a la factura. Si no existen se crearán.
|
number integer
|
Número de factura Si es la primera factura del año y de la serie se cogerá este como el
primer numero de factura. Si ya existe una factura con la misma serie y se envía este
parametro la petición fallará si no es el que le correspondería.
|
footer string
|
Pie de factura por defecto del usuario, que configuró en su panel de administración. |
irm string |
Campo IRM por defecto del usuario para las facturas, que configuró en su panel de
administración.
|
| Nombre |
Descripción |
| business.business_name |
Este campo solo se devuelve si el tipo de la empresa no es individual |
| business.name |
Este campo solo se devuelve cuando el tipo de la empresa es individual
|
| business.surname_1 |
Este campo solo se devuelve cuando el tipo de la empresa es individual
|
| business.surname_2 |
Este campo solo se devuelve cuando el tipo de la empresa es individual
|
| charges.origin_account_number |
Este campo se devuelve dependiendo delmétodoo de pago |
| charges.origin_account_description |
Este campo se devuelve dependiendo delmétodoo de pago |
| reservations_lines.surcharge |
Este campo se devuelve si la linea de factura tiene recargo |
delete
curl --request DELETE \
--url /api/reservations/:id
require 'uri'
require 'net/http'
url = URI("/api/reservations/:id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Delete.new(url)
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api.cuentica.com")
conn.request("DELETE", "/reservations/:id")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var settings = {
"async": true,
"crossDomain": true,
"url": "/api/reservations/:id",
"method": "DELETE",
"headers": {}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HttpResponse<String> response = Unirest.delete("/api/reservations/:id")
.asString();
<?php
$request = new HttpRequest();
$request->setUrl('/api/reservations/:id');
$request->setMethod(HTTP_METH_DELETE);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "/api/reservations/:id"
req, _ := http.NewRequest("DELETE", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Otras Entidades
Políticas de cancelación
Descripción del objeto: Volver
| Nombre del campo |
Descripción |
Obligatorio |
type integer |
Día sobre el que se calculará la política 1. Día de entrada al alojamiento 2. Día de creación de la reserva |
true |
days integer |
Número de días a sumar o restar del día sobre el que se calculará la política |
true |
additional_policy array |
Políticas adicionales en diferentes idiomas Es un array en el que la key es el código ISO del pais |
false |
Descripción del objeto: Volver
| Nombre del campo |
Descripción |
Obligatorio |
name string |
Nombre identificador del extra |
true |
name_translate array |
Traducciones del nombre identificador del extra |
false |
description array |
Traducciones del nombre identificador del extra |
false |
start date |
Fecha de inicio desde la que el extra afecta a la unidad de alojamiento |
false |
end date |
Fecha de fin hasta que el extra afecta a la unidad de alojamiento |
false |
price float |
Precio por noche de Domingo a Jueves para la capacidad mínima (minimum_capacity) |
false |
price_type float |
Precio por noche de Viernes y Sábado para la capacidad mínima (minimum_capacity) |
false |
required boolean |
|
false |
Temporadas de Unidades Alojativas
Descripción del objeto: Volver
| Nombre del campo |
Descripción |
Obligatorio |
name string |
Nombre identificador del extra |
true |
name_translate array |
Traducciones del nombre identificador del extra |
false |
description array |
Traducciones del nombre identificador del extra |
false |
start date |
Fecha de inicio desde la que el extra afecta a la unidad de alojamiento |
false |
end date |
Fecha de fin hasta que el extra afecta a la unidad de alojamiento |
false |
price float |
Precio por noche de Domingo a Jueves para la capacidad mínima (minimum_capacity) |
false |
price_type float |
Precio por noche de Viernes y Sábado para la capacidad mínima (minimum_capacity) |
false |
required boolean |
|
false |
Tarifas especiales de Unidades Alojativas
Descripción del objeto: Volver
| Nombre del campo |
Descripción |
Obligatorio |
name string |
Nombre identificador del extra |
true |
name_translate array |
Traducciones del nombre identificador del extra |
false |
description array |
Traducciones del nombre identificador del extra |
false |
start date |
Fecha de inicio desde la que el extra afecta a la unidad de alojamiento |
false |
end date |
Fecha de fin hasta que el extra afecta a la unidad de alojamiento |
false |
price float |
Precio por noche de Domingo a Jueves para la capacidad mínima (minimum_capacity) |
false |
price_type float |
Precio por noche de Viernes y Sábado para la capacidad mínima (minimum_capacity) |
false |
required boolean |
|
false |