REM-Cloud Message Bus API

REM (Real Estate Management) is a suite of products and systems developed by GARAIO REM AG. The REM-Cloud Message Bus connects these systems and enables other organisations to integrate with REM. The REM-Cloud Message Bus is a RabbitMQ Message Bus. RabbitMQ itself implements AMQP.

Versioning

The master branch in this repository reflects current development. If you need the specs for a specific release, have a look at the corresponding branch.

Getting Started

See Getting Started.

About this specification

Messages in this specification have a specification status. These status are:

Status Meaning
The information is available and will not change without further notice.
The information is not available.
⚠️ The information is deprecated and may become invalid in future releases.

Please remember that only the master branch of this documentation reflects the current state of our productive REM systems. Other branches are used to describe new or amended information applicable to future releases of our REM systems.

Messages

Message Properties

All messages must specify at least the following AMQP message properties:

Property Value Example Description
app_id <app_id> 'YourService' or 'REMCustomerA' Uniquely identifies the sender of a message
user_id <user_id> 'YourService' or 'REMCustomerA' Uniquely identifies the authenticated RabbitMQ user
content_type application/json The content type must always be JSON
content_encoding UTF-8 The message encoding must always be UTF-8
message_id <app_id>-<app_specific_uid> 'YourService-7712897' Uniquely identifies an event that caused this message. (1)
correlation_id String 'Origin-Message-ID' For responses, contains the request message_id (3)
timestamp Unix timestamp 1553245964 A timestamp to indicate when the message was created
routing_key <message type> Notification.Message.Created Pass the event type as the routing key
delivery_mode Byte 2 Always pass 2 (2)

Notes

  • (1) The app specific uid is an alphanumeric, app wide unique key
  • (2) 2 ensures the message persists even if the broker restarts. In some RabbitMQ-Client libraries, delivery_mode might be mapped to a boolean property called persistent which shall be set to true
  • (3) Messages that respond to a message (*.Accepted / *.Rejected) send back the message_id of the received message as the correlation_id so that the sender can map the response. The property is only present in result messages.

Headers

The headers are part of the message properties and must specify at least the app id.

Property Type Value Example Description
app_id string <app_id> headers: { app_id: 'YourService' } In order to be able to route the messages we need the app id in the headers, too

Some messages must contain additional properties. Please refer to Header Properties for more information.

Events

Events are messages that can be received by multiple subscribers. The message body contains a json data structure.

Error handling

If your message does not adhere to the basic rules given above, it will be discarded and you'll receive an Errors.Message.Invalid with detailed error information.

Naming Conventions

Messages that end with a verb in the simple past (eg Created) describe events that happened in the GARAIO REM domain. Messages that end with an imperative (eg Create) describe commands that trigger an effect in the GARAIO REM domain.

Contexts

Events are grouped by contexts. A context relates to a certain subdomain within the domain of property management, or to a domain outside of property management. IMPORTANT: Message attribute names are case sensitive.

Context Description
Archiving Events that are related to archiving Documents
Damage Case Events that are related to a Damage Case
Condominium Events related to condominiums
Documents Events related to documents
Invoicing Events related to orders and invoicing
Letting Events related to the letting process
Marketplace Events related to marketplace platforms
Masterdata Informs about changed data in the context of Property, Buildings and Units
Notification Events that represent notifications; always addressed to a GARAIO REM instance
Owner Portal Events related to owner portals
Pending Issue Events related to pending issues ("Pendenzen")
Planning Application Events related to planning applications
Property Check Events that are related to a Property Check
Sedex Allows clients to send and receive Sedex-Messages
Tenancy Application Events related to tenancy applications
Tenant Portal Events that occur on a Tenant Portal
Thirdparty Notification Events related to a Thirdparty Notification. (1)
Errors Errors due to invalid messages

Notes:

  • (1) These events are issued by the Thirdparty Notification Service (Drittmeldung Service)

Examples

Ruby script to publish a notification message