Skip to content

XML-Format

Definition of the Structure

All the attributes are embedded in the following tags:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<SIHOT-Document>
</SIHOT-Document>

The XML-structure is marked at the end with the ASCII character EOT (hex 04). Therefore, the software engineers have a simple and powerful possibility to scan the end of the XML–structure. The EOT is added to all records from both sides. See FAQ Why does the interface not receive the data sent?.

Updates and continuous integration

This interface ensures backwards compatibility in general. Existing fields will not be changed or removed. Under very rare and special circumstances when such changes will be performed, we will state such a change in particular through this interface specification. New requests, fields and blocks can be added at any time. Each third party interface, which connects to this interface, needs to ensure that such enhancements do not affect the function of the interface in a negative way.

ISO-8601

The Date, Time and Date Time-attributes are coded according to the IS08601 definition of the ISO-Committee

Date

The international standard date notation is: YYYY-MM-DD

where YYYY is the year in the usual Gregorian calendar, MM is the month of the year between 01 (January) and 12 (December), and DD is the day of the month between 01 and 31.

For example, the fourth day of February in the year 1995 is written in the standard notation as 1995-02-04

Time

The international standard notation for the time of day is: hh:mm:ss

where hh is the number of complete hours that have passed since midnight (00-24), mm is the number of complete minutes that have passed since the start of the hour (00-59), and ss is the number of complete seconds since the start of the minute (00-60). If the hour value is 24, the minute and second values must be zero. [The value 60 for ss might sometimes be needed during an inserted leap second in an atomic time scale like Coordinated Universal Time (UTC). A single leap second 23:59:60 is inserted into the UTC time scale every few years as announced by the International Earth Rotation Service in Paris to keep UTC from wandering away more than 0.9 s from the less constant astronomical time scale UT1 that is defined by the actual rotation of the earth.]

An example time is: 23:59:59

which represents the time one second before midnight.

Combined Date/Time Formats

The symbol T is used to separate the date and time parts of the combined representation. The complete representation is as follows: 1993-02-14T13:10:30

The date and/or time components independently obey the rules already given in the sections above, with the restrictions:

  • The date format should not be truncated on the right (i.e., represented with lower precision) and the time format should not be truncated on the left (i.e., no leading hyphens).
  • When the date format is truncated on the left, the leading hyphens may be omitted.

ISO 3166

Normally, a hotel should be configured with the 2 character ISO 3166 country codes. Nevertheless, we offer the possibility to send and receive also the 3 character codes.

Definition of XML-Attributes

For all interfaces, which are provided by in XML notation, there is a minimum set of given attributes allowed in all operations, if nothing different is indicated.

These attributes are generally accepted and can occur during all operations (OC).

Attribute Denotation Type
RN Room Number, see What is the difference between RN and PH? String
ORN Old Room Number, if room move String
ARR Arrival Date Time
DEP Departure Date Time
LN Language of the Guest (ISO-Code 639-1, 2 characters) String
SALUTATION Salutation of the Guest String
TITLE Title of the Guest String
VIP VIP String
RNO Reservation Number uns. Long
RSNO Reservation Sub number uns. Int
SN Surname / Last name of the guest String
SN2 Second surname / last name of the guest String
PCIID Pre Check-In ID. This is a unique ID of the stay of the client in the hotel. uns. Long
GID Unique id of this guest uns. Long
CN Christian Name / First Name of the guest String
TG Type of guest of the clients, defined in the SIHOT-Installation , e.g.
1A = Adult
2A = Toddler…
String
AN Account Number Uns. Long
ORG Origin. This is the identifier of the SIHOT workstation or the workstation of the other system that executed this operation. String
TN Transaction number. This is a sequential number to identify univocally a data record sent between the two parts. This tag is mandatory for all records.
See FAQ Who keeps track of the Transaction Number TN?.
Uns. Long
SRC The SRC-Attribute indicates where this operation is coming from. String
PASSWD Guest-Password String
PAY-TV Pay-TV-permission char
PH Phone number to be charged or phone number where the wakeup request / room status was entered, see FAQ What is the difference between RN and PH?. uns. Long
PH0 – PH4 Phone numbers of the Room
Notes: 5 digits, right justified, leading 0
With suites, PH can get beyond PH4
uns. Long
AP Definition of the access points. The access point are defined in a key card system String
CS Coding Station String
NC Number of cards uns. Byte
CA Card action String
PPU Price per unit (including taxes, vat, …) in hotel currency BCD
UN Units Long
AMOUNT Total amount = PPU * UN BCD
HN Number of the hotel – each hotel has a <HN> uns. Long
MC Market code (type) of the guest. Please keep into account that in SIHOT a guest can have different market codes during the stay. In the IF always the market code of the arrival date of the guest is transferred. String
SF Share flag. Char
GTD Type of the guest String
GNR Number of the guest String
GMD Number of the hotel where the guest data is stored String
GDB Debtor number of the guest String
HQGID Central ID of the guest String
CREQ Credit request of the guest String
CREQSTATE State of the credit request of the guest String
ROOMSIMPLIED Adds a list of rooms that are implied in a suite if a record is sent for a suite and not for a single room String
BEDSIMPLIED Adds a list of beds that are implied in a room if there are beds defined in a room String
BED Contains the data of a bed in a room, currently consisting of <BEDNO> and <BEDKCID>
BEDNO Bed number String
BEDKCID Using the keycard ID of the bed instead of the bed number, if available. String
OBED Old bed number if room move String
ENTIREROOM The flag indicates if the checkout (CO) should be done only for certain person in the CO operation or the whole room.
CARD Contains the data of a card from a guest.
NR_FOR_THIS The number of the bed, room or suite that triggered this record. An external system can rely on this number e.g. to create a keycard so that it does not need to find out if the room number or the bed number should be used. String
KCID_FOR_THIS The key card ID associated to the NR_FOR_THIS String

Extensions specific to one interface can be indicated at any time in the interface directly.

Note: There are additional OCs and tags that are only for internal use, see FAQ How do I handle unknown tags or records?.

PCIID (Pre Check In ID)

The PCIID is a unique ID that identifies a guest during one stay in a hotel. It is already available when the reservation is made and so it can be used in the forecast. The important thing is that it remains the same during the complete stay of the guest so if the guest moves or checks out or even if his name is changed to a completely different guest with a different GID, the PCIID will not change. When the same guest returns, he will have a different PCIID for his next stay. To be more precise, it does not directly identify a guest but an entry in the list of persons assigned to a reservation.

To clarify this, here an example: When you enter a reservation in SIHOT, there is created an entry in the list of persons for each person that is part of this reservation.

E.g. 3 PAX from 01/03/2005 to 05/03/2005. So this reservation contains a list of 3 PAX:

  • Person A with PCIID 4711
  • Person B with PCIID 4712
  • Person C with PCIID 4713

You can assign names to these persons at any time before or after the check in. E.g. when the reservation is made, just one name is known, so PCIID 4711 is assigned the name “Smith” with GID 37623. This results in a GC with GID 37623 and PCIID 4711.

At check in, you change the name of the guest from “Smith” to “Black” with GID 92866 so you get a GC with GID 92866 and PCIID 4711. So this just means that the name of the person was changed, not that the person itself moved from one room to another or was checked out. You will also receive a CI for the PCIID 4711 with the GID 92866 and the room number. If the guest moves to another room, e.g. 302, you will receive a RM from 101 to 302 with the PCIID 4711 and at the checkout you will receive a CO with the same PCIID.

So to keep track of a guest, it is in general better to use the PCIID since this remains the same all the time while the GID might change.

Note: If the guest “Black” with the GID 92866 comes again from 06/03/2005 to 07/03/2005, he will get a different PCIID but if he prolongs his stay to the 07/03/2005, he will keep the PCIID 4711 until he checks out.

Important

Unknown attributes (tags) or records with unknown OCs have to be ignored by the interface! This means that these records are not evaluated but acknowledged with a return code of “99”. If configured properly, the interface will only receive records with OCs that are evaluated by this interface. The tag <HN> is only needed in an environment with several properties. It is used to assign identical room numbers to the correct hotel. If the tag <HN> is not sent, the currently active environment (defined in the database of SIHOT) is used.

Directions of OCs

OC Description From To
TS Time Sync SIHOT Interface
LA Link Alive SIHOT Interface
LA Link Alive Interface SIHOT
CO Check Out SIHOT Interface
CO Check Out Interface SIHOT
PCO Pre Check Out SIHOT Interface
RM Room Move SIHOT Interface
ACK Acknowledge SIHOT Interface
ACK Acknowledge Interface SIHOT
PS Posting simple Interface SIHOT
PE Posting extended Interface SIHOT
PP Posting payment Interface SIHOT
COS Class of Service SIHOT Interface
GI Guest Information SIHOT Interface
GC Guest Change SIHOT Interface
SM Send Message Interface SIHOT
WU Wake Up Message SIHOT Interface
WU Wake Up Message Interface SIHOT
WA Wake Up Answer Interface SIHOT
RST Room Status Interface SIHOT
DR Document reader Interface SIHOT
RS Restart Interface SIHOT
PAR Payment request SIHOT Interface
PAA Payment answer Interface SIHOT
EXMSG Extended message SIHOT Interface
MS Message status Interface SIHOT
RO Room occupancy SIHOT Interface
TR Transaction Interface SIHOT
RF Request Forecast Interface SIHOT
RR Room Request Interface SIHOT
FC Forecast SIHOT Interface
CR Change reservation SIHOT Interface
FSOA Request of a Statement of Account Interface SIHOT
SOA Statement of Account SIHOT Interface
PRECHECKIN Pre Check In SIHOT Interface
KEYDETAIL Details of the key Interface SIHOT
AC Assign / delete card SIHOT Interface

Error Handling (ACK)

All exchanged operations (OC) return a feedback to the sender. See Acknowledge.

Important Hint

The external system needs to wait until it receives the <ACK> or until the socket is disconnected. Should the socket be disconnected, the external system can assume a crash of the interface and handle this as an <ACK> with an error code.

If the external system nonetheless needs to use a timeout how long it waits for the <ACK>, this timeout should at least be one minute. Our system is a server where many processes interact and not a real time server just for this interface. Normally, the <ACK> will be sent within a second but it might even take longer than a minute depending on system load and database access by other services or users.

Should the external system deny a service since its timeout ended before the <ACK> on the posting record was received, it still needs to process the <ACK> when it comes later.

E.g. if a Pay-TV system sends a posting and its timeout ended before it receives the <ACK>, it may decide not to show the movie. If it receives the <ACK> later and the RC is 0, this means that the posting was done correctly in SIHOT.PMS. Since the movie was not shown, the Pay-TV system should send a cancellation of the posting immediately. Alternatively, it needs at least to show and log this problem.

Night Audit

There are no messages to send a “start of night audit” and “end of night audit”, because SIHOT can process postings also during the night audit.