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.
- 1 Protocol
- 2 Authentication
- 3 API Clarifications
- 3.1 API connection
- 3.2 Endpoints
- 3.3 Chain Entities
- 3.4 Property Entities
- 3.5 Echo Token
- 4 Supported Formats
- 4.1 Dates
- 4.2 Countries
- 4.3 Currencies
- 4.4 Languages
- 5 Supported Encoding
- 6 Terminology
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 |
---|---|
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...