Saltar al contenido principal

Quick start

Esta guía te lleva de cero a tu primer request autenticado en unos 5 minutos: obtener un token, hacer un GET real, leer la respuesta, paginar y entender los errores.

Antes de empezar

Necesitás un usuario de API de Rently (con permisos para usar la API) y la URL de tu instancia. En Rently cada cliente (tenant) vive en su propio host, por ejemplo https://tu-empresa.rently.com.ar. El host identifica al tenant, así que siempre usá el host de tu instancia en cada llamada.

En esta guía usamos https://{tenant}.rently.com.ar como ejemplo. Reemplazalo por el host de tu tenant.

1. Obtener un token

La API se autentica con un token Bearer OAuth2. Para obtenerlo, hacé un POST a /auth/token con tus credenciales usando el grant client_credentials. Tu usuario de API es el client_id y tu clave es el client_secret.

curl -X POST https://{tenant}.rently.com.ar/auth/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=YOUR_USERNAME" \
-d "client_secret=YOUR_PASSWORD"

La respuesta es un JSON con el token:

{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJ...",
"token_type": "bearer",
"expires_in": 86399
}
CampoDescripción
access_tokenEl token que enviás en cada request posterior.
token_typeSiempre bearer. Define el esquema del header Authorization.
expires_inVigencia del token en segundos (≈ 1 día).
Reutilizá el token

El token vale alrededor de un día (expires_in ≈ 86399 segundos). Guardalo y reutilizalo en lugar de pedir uno nuevo en cada request. Cuando expire, volvé a pedir otro.

El token está atado al tenant

El token sólo es válido contra el mismo host con el que lo pediste. Si usás un token contra el host de otro tenant, la API responde 403. Pedí siempre el token y hacé las llamadas contra el mismo host.

2. Tu primer request autenticado

Con el access_token, agregá el header Authorization: Bearer {token} a cualquier endpoint de la API. Empecemos por un GET simple y sin parámetros: listar las sucursales de tu instancia con GET /api/branchoffices.

curl https://{tenant}.rently.com.ar/api/branchoffices \
-H "Authorization: Bearer YOUR_TOKEN"

Respuesta (array de sucursales):

[
{
"Id": 1,
"BusinessName": "Rently LAX Airport",
"Name": "LAX Branch",
"Street": "123 Airport Road",
"Number": "Terminal 1",
"City": "Los Angeles",
"Country": "United States",
"PostalCode": "90045",
"Latitude": 33.9416,
"Longitude": -118.4085,
"Telephone": "+1-213-555-0123",
"Email": "lax@rently.com",
"IATACode": "LAX",
"IsFranchise": false,
"PublicWebSite": "https://rently.com/locations/lax"
}
]
Idioma de la respuesta

Algunos endpoints aceptan un parámetro Language para fijar el idioma de los textos de la respuesta; por ejemplo, GET /api/search lo soporta. El valor acepta el nombre de cultura completo (es-AR, en-US, pt) o el código ISO de dos letras (es, en). Si lo omitís, se usa el idioma por defecto de tu instancia. Consultá la referencia de la API para ver qué endpoints lo aceptan.

Listo: ese es tu primer llamado autenticado. Cada vez que recibas un 200, ya estás operando contra la API.

3. Un GET con paginación

Los listados grandes vienen paginados. Veamos GET /api/bookings/list, que devuelve reservas en bloques. Acepta estos parámetros de query:

ParámetroDefaultDescripción
offset0Cursor de paginación. En la primera llamada, 0.
limit30Cantidad de elementos por página.
statusFiltro opcional por estado de la reserva.
sortDirectionAsctrueDirección de ordenamiento.
curl "https://{tenant}.rently.com.ar/api/bookings/list?offset=0&limit=30" \
-H "Authorization: Bearer YOUR_TOKEN"

La respuesta envuelve los resultados en una estructura paginada:

{
"Offset": 0,
"Limit": 30,
"Total": 1,
"Results": [
{
"Id": 1,
"IsQuotation": false,
"Balance": 0.0,
"TotalPayed": 0.0
}
],
"NextOffset": 0
}
CampoDescripción
Offset / LimitEl offset y el límite aplicados a esta página.
TotalCantidad total de registros disponibles.
ResultsEl array de elementos de esta página (puede venir null si no hay resultados).
NextOffsetEl offset a enviar en la próxima llamada para traer la página siguiente.

Cómo iterar las páginas

Para recorrer todas las páginas, tomá el NextOffset de cada respuesta y pasalo como offset en la siguiente. La iteración termina cuando Results trae menos elementos que Limit.

# Página siguiente: usá el NextOffset que devolvió la respuesta anterior
curl "https://{tenant}.rently.com.ar/api/bookings/list?offset=NEXT_OFFSET&limit=30" \
-H "Authorization: Bearer YOUR_TOKEN"

4. Manejo de errores

Ante un error, la API responde con un código de estado HTTP y, en los errores de negocio, un cuerpo JSON con el formato WebApiErrorResponse:

{
"ErrorMessage": "The requested resource was not found",
"ErrorCode": 1,
"Id": "0HMV9A1B2C3D4-00000001"
}
CampoDescripción
ErrorMessageDescripción legible del error.
ErrorCodeCódigo numérico del error (por ejemplo, 1 = cliente no encontrado, 4 = el precio no coincide, 22 = reserva no encontrada). Se serializa como entero.
IdGUID de correlación. Útil para reportar el problema al soporte.

Códigos de estado más comunes:

EstadoSignificadoCuerpo
200Éxito.Resultado del endpoint.
400Error de negocio o de validación.WebApiErrorResponse con ErrorCode.
403No autenticado o sin permisos.
404Recurso no encontrado.
La autenticación fallida devuelve 403

Si el token falta, está vencido, o no corresponde al tenant del host, la API responde 403 (no 401). Si recibís 403, revisá que el header Authorization esté presente, que el token no haya expirado y que estés usando el host correcto del tenant.

Guardá el Id del error

Cuando algo falla con un 400, el campo Id del cuerpo es el identificador de correlación. Incluilo al abrir un ticket de soporte: permite rastrear exactamente qué pasó del lado del servidor.

Próximos pasos

Ya tenés lo esencial: token, request autenticado, paginación y errores. Desde acá podés explorar el resto de la API:

  • Buscá disponibilidad y cotizá con GET /api/search y GET /api/booking/price.
  • Creá una reserva con POST /api/booking/book y registrá el pago con POST /api/booking/pay.
  • Consultá los catálogos maestros: GET /api/places, GET /api/categories, GET /api/currencies.

El detalle completo de cada endpoint, con sus parámetros y schemas, está en la referencia de la API.