Introduction

Welcome to the Ulyses API documentation, an API for communication between Ulyses PMS and other cloud based applications that work with data of hotels such as POS, Revenue Management Systems, Channel Manager or on-premise devices such as kiosks, printers and POS systems.

This guide focuses on the basic guidelines which describe how to communicate with the Ulyses API as well as providing typical use cases that may guide you during the implementation. All operations supported by our API are described in the Operations section.

In case you encounter an issue with the API, feel free to report it. For other queries please fell free to send us an email to integrations@ulysescloud.com.



Protocol

The API uses the standard of RESTful environments proposed by RFC 6690.  

Requests

The messages are sent with JSON and/or URI parameters and Content-Type header set to application/json

Responses

The API responses contains a Content-Type header set to application/json, and a JSON object as body. If the operation results as success, response code will be 200, otherwise there are some error codes we can send back:

Code

Description

Code

Description

400 Bad Request

Malformed request.

401 Unauthorized

Invalid username or password.

403 Forbidden

The user does not have the privileges to do that action.

404 Not Found

Invalid identifier of a requested entity.

500 Internal Server Error

Internal problem of the server.





Authentication

The implemented authentication of the public API is the 'Basic' HTTP Authentication.

The petition goes in the HTTP headers as is explained here, and is specified in RFC 7617.



API Clarifications

The current version is v1.

API connection

All the API endpoints are based on this inital URL:  https://{environment}.ulysescloud.com/public/api/{version}/con/chain

Please use the ping endpoint to make sure you connect to our API. In case you can't stablish a connection you need to make sure that the credentials provided were correct

Endpoints

All the URL’s in the API are organized in a way which describes the method or action is required. When an endpoint is finished with the name of an entity -let’s say the entity Chain: https://publicapi-providers.ulysescloud.com:9797/public/api/v1/con/chain- it means that a list of objects of that entity is going to be returned.

If it finishes with the ID of the entity described in the name -https://publicapi-providers.ulysescloud.com:9797/public/api/v1/con/chain/1- it means that the specified entity will be returned with all its fields; even some that do not appear on the list.

All the entity names are singular.

After the version, the methods are organized by our hierarchy. In the top of everything there are chain entities, and in the chain there are property entities:

Chain Entities

Since a chain is the highest element on the hierarchy and the system allows many chains on it, is it completely necessary to specify on which chain we are working on.

https://publicapi-providers.ulysescloud.com:9797/public/api/v1/con/chain/{chainId}

There are many Chain entities that could be called from here:

https://publicapi-providers.ulysescloud.com:9797/public/api/v1/con/chain/{chainId}/{entity}

Property Entities

As it is explained above, our system has many chains and every chain can have many properties. The URL again is going to be very specific about that, and it must say which chain and property we are asking for.

https://publicapi-providers.ulysescloud.com:9797/public/api/v1/con/chain/{chainId}/property/{propertyId}

This new step in the hierarchy is natural and to ask for a property entity should be done like this:

https://publicapi-providers.ulysescloud.com:9797/public/api/v1/con/chain/{chainId}/property/{propertyId}/{entity}

Echo Token

Every time a request is done it is saved in a log that will later be available to check from the Integration side of the PMS. Every request contained in this list of logs can be filtered and marked with an echo token only by adding the parameter echoToken to the endpoint. This is an example:

https://publicapi-providers.ulysescloud.com:9797/public/api/v1/con/chain/{chainId}/{entity}?echoToken=93e583fa



Supported Formats

Dates

  • Date: yyyy-MM-dd (2017-05-28)

  • DateTime: yyyy-MM-dd'T'HH:mm:ss.SSS'Z' (2018-04-12T18:13:32.680Z)

  • DateTimeZone: UTC

Countries

  • Name: Official ISO name

  • Code: ISO Alfa 3

Currencies

  • Code: ISO 4217

Languages

  • Code: ISO 6391

Supported Encoding

The whole API works with JSON messages encoded as UTF-8.

Terminology

Environment: Defines the features that the platform will provide. We have different environment profiles: testing, staging and production.

Version: Changes when the API is updated and defines the milestone of the development where the environment is.

Chain: The hotel chain is a group of properties.

Property: A single hotel, hostel, apartment, etc...