The Simple Hospitality Interchange Protocol, or SHIP, is a JSON-based message format, combined with a simple HTTP-based API, that aims to make it easy for hospitality-related systems and applications to exchange messages. This document contains specifications of the JSON messages, as well as a number of sample messages. For details on the HTTP-based API, please contact your SHIP integration partner.

1. SHIP messages

SHIP defines a small number of JSON-based messages to be used for hospitality interchange. The available message types are described in the following sections.

The Usage column of the object descriptions below contain one of these values: REQUIRED, RECOMMENDED,SUGGESTED, OPTIONAL, INTERNAL, or DEPRECATED. The meaning of these values are given in the following table.
Table 1. Usage column definitions
Value Description

REQUIRED

Field must be included for the message to be considered valid

RECOMMENDED

Field should be included to enable major functionality

SUGGESTED

Field may be included to enable additional functionality

OPTIONAL

Field may be included but have minimal to no impact on functionality

INTERNAL

Field should only be included by systems that have previously agreed on its meaning

DEPRECATED

Field should not be included

The Types of some of the fields below are listed as string enum. This indicates that these fields are strings whose value can only be one of the values listed after the colon. Supplying a value not in the list will produce an invalid message.

1.1. Guest-stay message

A guest-stay message contains a single guestStay object.

1.1.1. guestStay object

A guestStay object represents a past, current, or upcoming stay by a guest or guests at a property. It contains information about the location, duration and other details of the stay, as well as profile information about the guests and other associated entities.

Table 2. Fields of the guestStay object
Name Type Usage Description Example

action

string enum: BOOK, ADD, WAITLIST, CONFIRM, DENY, CANCEL, CHECKIN, NOSHOW, CHECKOUT, EDIT, NA

REQUIRED

Action that triggered the guest-stay message, see guestStay action string

"ADD"

property

string

REQUIRED

Property code that the stay belongs to

"AVERTINE"

interfaceType

string

INTERNAL

remoteSystemName

string

INTERNAL

accountId

string

INTERNAL

confirmationCode

string

REQUIRED

unique ID of the stay in the PMS. This number is used to track update of the reservation (booking, checkin, checkout…​) and is typically internal to the PMS (see bookingNumber below for customer facing confirmation number).

"30001"

bookingNumber

string

SUGGESTED

ID assigned to the stay by the booking engine or central reservation system. This is typically used for customer facing confirmation number.

"CRO-123A"

statusCode

string enum: REQUESTED, RESERVED, WAITLISTED, REQUESTDENIED, INHOUSE, CANCELED, NOSHOW, CHECKEDOUT

REQUIRED

Current status of the stay

"RESERVED"

guaranteeCode

string

OPTIONAL

Code representing the type of guarantee for the stay

"CC"

lastUpdatedAt

ISO8601 date-time string

RECOMMENDED

Time at which the stay was last updated

"2009-08-15T16:52:36.000-07:00"

lastUpdatedBy

string

OPTIONAL

Name, username, or initials of the user or system that last updated the stay

"Test User"

bookingDate

ISO8601 date-time string

RECOMMENDED

Time at which the stay was booked

"2015-08-11T20:52:01.132Z"

bookedBy

string

OPTIONAL

Name, username, or initials of the user or system that booked the stay

"Avertine Reservation System"

reservationSource

string

SUGGESTED

Channel by which the stay was booked

"GDS"

cancellationNumber

string

RECOMMENDED

ID assigned to the cancellation of the stay

"12345"

cancellationDate

ISO8601 date-time string

RECOMMENDED

Time at which the stay was canceled

"2009-08-15T16:52:36.000-07:00"

canceledBy

string

OPTIONAL

Name, username, or initials of the user or system that canceled the stay

"Jane Smith"

checkinDate

ISO8601 date string

REQUIRED

Scheduled check-in date of the stay

"2015-12-31"

actualCheckinDate

ISO8601 date-time string

SUGGESTED

Actual check-in time of the stay

"2015-12-31T16:52:36.123+05:00"

checkedInBy

string

OPTIONAL

Name, username, or initials of the user or system that checked the guest in

"Alice"

checkoutDate

ISO8601 date string

REQUIRED

Scheduled check-out date of the stay

"2015-12-31"

actualCheckoutDate

ISO8601 date-time string

SUGGESTED

Actual check-out time of the stay

"2015-12-31T16:52:36.123Z"

checkedOutBy

string

OPTIONAL

Name, username, or initials of the user or system that checked the guest out

"Bob"

stayLength

stayLength object

RECOMMENDED

Length of the stay

numberOfAdults

integral number

SUGGESTED

Number of adults in the stay

2

numberOfChildren

integral number

SUGGESTED

Number of children in the stay

0

roomNumber

string

RECOMMENDED

Room number or room identifier

"WEST-102"

roomType

string

RECOMMENDED

Actual room type of the stay, preferably in code/short form

"KINGDLX"

roomTypeChargeCode

string

SUGGESTED

Room type charged to the stay

"KING"

blockCode

string

SUGGESTED

Block code of the room if the room is part of a block of room (conference, wedding, …​etc)

"Hotelier Marketing 101 - Revinate world Conference"

numberOfRooms

integral number

OPTIONAL

Number of rooms of the stay

1

market

string

SUGGESTED

Market segment name or code of the stay

"WEB"

purposeOfStay

string

OPTIONAL

Purpose of the stay

"BUSINESS"

travelAgency

companyInfo object

DEPRECATED

Travel agency associated with the stay. Attach a profile object with profileType of "TRAVEL" to the stay instead of using this field.

totalRoomRevenue

monetaryAmount object

RECOMMENDED

Room revenue amount of the stay

totalFoodAndBeverageRevenue

monetaryAmount object

DEPRECATED

Food and beverage revenue amount of the stay. Add a service object with category of "FOOD" instead.

totalLuggageRevenue

monetaryAmount object

DEPRECATED

Luggage revenue amount of the stay. Add a service object with category of "LUGGAGE" instead.

totalOtherRevenue

monetaryAmount object

DEPRECATED

Total of all revenue amounts excluding room, food, beverage, and luggage, of the stay. Add a service object with category of "OTHER" instead.

totalTaxes

monetaryValue object

DEPRECATED

Total of all taxes. Use the taxAmount field in each monetaryAmount object instead. Currently this field is internally mapped to the totalRoomRevenue.taxAmount field if this one is empty. Else the value is discarded.

totalRemainingBalance

monetaryValue object

SUGGESTED

Balance remaining on the stay

totalDepositRequired

monetaryValue object

SUGGESTED

Deposit amount required for the stay

depositRequiredDate

ISO8601 date string

OPTIONAL

Date on which deposit is due

"2015-12-31"

ratePlans

array of ratePlan objects

RECOMMENDED

Rate plans attached to the stay

services

array of service objects

SUGGESTED

Services rendered during the stay

profiles

array of profile objects

REQUIRED

Profiles associated with the stay. A minimum of 1 profile with profileType "GUEST" is required.

guestNotes

array of guestNote objects

SUGGESTED

Notes attached to the stay

pmsDefinedFields

array of userDefinedField objects

OPTIONAL

PMS-defined fields

propertyDefinedFields

array of userDefinedField objects

OPTIONAL

Property-defined fields

1.1.2. stayLength object

A description of the length of stay

Table 3. Fields of the stayLength object
Name Type Usage Description Example

stayLength

integral number

REQUIRED

Number of days of the stay

3

stayLengthUnits

string enum: DAY

DEPRECATED

Type of the time units of the stay length. Should be omitted as only "DAY" is possible.

"DAY"

1.1.3. rate object

A rate during a specific time period

Table 4. Fields of the rate object
Name Type Usage Description Example

amount

monetaryValue object

RECOMMENDED

Rate per time unit

startTime

ISO8601 date-time string

RECOMMENDED

Start time of the rate

"2016-07-22T00:00:00.000-07:00"

timeUnits

integral number

RECOMMENDED

Number of time units of the rate

2

timeUnitType

string enum: DAY, HOUR, MINUTE

RECOMMENDED

Type of the time units

"DAY"

1.1.4. ratePlan object

A rate plan

Table 5. Fields of the ratePlan object
Name Type Usage Description Example

rateCode

string

REQUIRED

Rate plan name or rate code

"BAR"

timeSpan

timeSpan object

OPTIONAL

Time period over which the rate plan applies

confidential

boolean

OPTIONAL

Whether the rate plan should be hidden from guests

false

rates

array of rate objects

RECOMMENDED

Breakdown of the rates under the rate plan

1.1.5. service object

A service rendered during a stay

Table 6. Fields of the service object
Name Type Usage Description Example

inventoryCode

string

REQUIRED

Inventory code of the service

"SPA"

rateCode

string

RECOMMENDED

Rate plan name or rate code of the service

"SPA_DLX"

category

string enum: FOOD, SPA, LUGGAGE, PARKING, FEE, TAX, OTHER

RECOMMENDED

Category of the service

"SPA"

timeSpan

timeSpan object

OPTIONAL

Time period over which the service was rendered

pricePerUnit

monetaryAmount object

REQUIRED

Price per unit of the service

numberOfUnits

integral number

REQUIRED

Number of units of the service

23

1.1.6. guestStay action string

Typically, transmission of a guest-stay message is triggered by a guest-stay-related action being performed on the sending system. The action being performed by the sending system is mapped to the possible values of the action field in the guestStay object. The following table lists some actions that should trigger a guest-stay message, and the corresponding action field value. The statusCode of the guest-stay before and after the action are also included for illustrative purposes.

The statusCode after the action should be transmitted in the guest-stay message.
Table 7. guestStay actions
Description action statusCode before statusCode after

Guest booked a new stay

BOOK

-

REQUESTED

System created a new stay

ADD

-

RESERVED

System wait-listed guest booking

WAITLIST

REQUESTED

WAITLISTED

System confirmed guest booking

CONFIRM

REQUESTED, WAITLISTED

RESERVED

System denied guest booking

DENY

REQUESTED, WAITLISTED

REQUESTDENIED

Guest canceled stay

CANCEL

REQUESTED, WAITLISTED, RESERVED

CANCELED

Guest checked in

CHECKIN

RESERVED

INHOUSE

Guest failed to show

NOSHOW

RESERVED

NOSHOW

Guest checked out

CHECKOUT

INHOUSE

CHECKEDOUT

System edited an existing stay

EDIT

Any

Same as before

System resent an existing stay

NA

Any

Same as before

The following diagram illustrates how actions interact with statusCodes.

guestStay actions
Figure 1. guestStay actions

1.2. Guest-stay list message

A list of guestStay objects, providing a convenient way for a system to send a number of guestStays to another system in a single message.

A guest-stay list message contains an array of guestStay objects.

1.3. Profile message

A profile message contains a single profile object.

1.3.1. profile object

A profile object represents a person or organization that may be associated with a guest-stay, for example the primary guest, an accompanying guest, a corporate entity, or a travel agency.

Table 8. Fields of the profile object
Name Type Usage Description Example

action

string enum: ADD, DELETE

REQUIRED

Action that triggered the profile message, see profile action string

"ADD"

property

string

REQUIRED

Property code that the profile belongs to

"AVERTINE"

interfaceType

string

INTERNAL

remoteSystemName

string

INTERNAL

accountId

string

INTERNAL

profileId

string

RECOMMENDED

ID of the profile

"10001"

profileType

string enum: NA, GUEST, CORPORATE, TRAVEL, WHOLESALER, GROUP, TOUR, CRO, CONTACT, AIRLINE, REPCOMPANY, INTERNET, HOTEL

REQUIRED

Profile type

"GUEST"

title

string

SUGGESTED

Title of the guest

"Dr"

firstName

string

RECOMMENDED

First name of the guest

"Alice"

middleName

string

SUGGESTED

Middle name of the guest

"J"

lastName

string

RECOMMENDED

Last name of the guest, or name of a non-guest entity

"Smith"

gender

string enum: MALE, FEMALE, UNKNOWN

SUGGESTED

Gender of the guest

"MALE"

dateOfBirth

ISO8601 date string

SUGGESTED

Date-of-birth of the guest

"1988-10-23"

vipStatus

string

SUGGESTED

VIP status code of the guest

"1"

primaryLanguage

string

RECOMMENDED

Primary language of the guest, preferably ISO639-1 2-character code

"EN"

companyInfo

companyInfo object

SUGGESTED

Company of the guest

emailOptOut

boolean

SUGGESTED

Whether the entity in the profile has opted out of email marketing

false

mailOptOut

boolean

OPTIONAL

Whether the entity in the profile has opted out of mail marketing

true

emailAddresses

array of emailAddress objects

RECOMMENDED

Email addresses associated with the profile

postalAddresses

array of postalAddress objects

RECOMMENDED

Postal addresses associated with the profile

phoneNumbers

array of phoneNumber objects

SUGGESTED

Phone numbers associated with the profile

memberships

array of membership objects

SUGGESTED

Loyalty program memberships associated with the profile

creditCards

array of creditCard objects

OPTIONAL

Credit cards associated with the profile

guestNotes

array of guestNote objects

SUGGESTED

Notes attached to the profile

pmsDefinedFields

array of userDefinedField objects

OPTIONAL

PMS-defined fields

propertyDefinedFields

array of userDefinedField objects

OPTIONAL

Property-defined fields

1.3.2. emailAddress object

An email address

Table 9. Fields of the emailAddress object
Name Type Usage Description Example

emailAddress

string

REQUIRED

Email address

"user@mailinator.com"

primary

boolean

REQUIRED

Whether this is the primary email address on the profile. Only one email address can be primary per profile.

true

inactiveDate

ISO8601 date-time string

OPTIONAL

Time after which the email address should not be used

"2016-07-14T20:52:01.132Z"

1.3.3. postalAddress object

A postal address

Table 10. Fields of the postalAddress object
Name Type Usage Description Example

address1

string

RECOMMENDED

Street address line 1

"1234 Jones St"

address2

string

RECOMMENDED

Street address line 2

"Apt 3C"

city

string

RECOMMENDED

City

"San Francisco"

state

string

RECOMMENDED

State or province, preferably short code

"CA"

country

string

RECOMMENDED

Country, preferably ISO3166 2-character code

"US"

zipCode

string

RECOMMENDED

Zip or postal code

"94108"

addressType

string enum: HOME, BUSINESS, MAILING, SHIPPING, BILLING, OTHER

REQUIRED

Address type

"BUSINESS"

primary

boolean

REQUIRED

Whether this is the primary postal address on the profile. Only one postal address can be primary per profile.

true

inactiveDate

ISO8601 date-time string

OPTIONAL

Time after which the postal address should not be used

"2016-07-14T20:52:01.132Z"

1.3.4. phoneNumber object

A phone number

Table 11. Fields of the phoneNumber object
Name Type Usage Description Example

phoneNumber

string

REQUIRED

Phone number

"555-1234"

phoneNumberType

string enum: HOME, BUSINESS, MOBILE, HOMEFAX, BUSINESSFAX, PAGER, TELEX, TTY, OTHER

REQUIRED

Phone number type

"HOME"

primary

boolean

REQUIRED

Whether this is the primary phone number on the profile. Only one phone number can be primary per profile.

true

inactiveDate

ISO8601 date-time string

OPTIONAL

Time after which the phone number should not be used

"2016-07-14T20:52:01.132Z"

1.3.5. membership object

A loyalty program or other program membership

Table 12. Fields of the membership object
Name Type Usage Description Example

loyaltyNumber

string

REQUIRED

Membership ID

"12345"

programCode

string

SUGGESTED

Code of the membership program

"APG"

levelCode

string

OPTIONAL

Membership level code

"PLATINUM"

expireDate

ISO8601 date string

OPTIONAL

Membership expiration date

"2019-10-31"

1.3.6. creditCard object

A credit card

Table 13. Fields of the creditCard object
Name Type Usage Description Example

creditCardLast4

string

OPTIONAL

Last 4 digits of the credit card number

"1234"

creditCardExpirationDate

ISO8601 date string

OPTIONAL

Credit card expiration date

"2020-12-31"

creditCardType

string

OPTIONAL

Credit card type

"MC"

primary

boolean

REQUIRED

Whether this is the primary credit card on the profile. Only one credit card can be primary per profile.

true

1.3.7. profile action string

Typically, transmission of a profile message is triggered by a profile-related action being performed on the sending system. The action being performed by the sending system is mapped to the possible values of the action field in the profile object. The following table lists some actions that should trigger a profile message, and the corresponding action field value.

Table 14. profile actions
Description action

Created a new profile

ADD

Updated an existing profile

ADD

Profile attached to a guest-stay

ADD

Deleted an existing profile

DELETE

1.4. Simple guest-stay message

A simple guest-stay message contains a single simpleGuestStay object.

1.4.1. simpleGuestStay object

A simpleGuestStay object is a simplified version of the guestStay object. It contains information about the location, duration and other details of the stay, as well as information about the primary guest. It is intended to be used by applications that do not require the full set of fields in the guestStay object.

Table 15. Fields of the simpleGuestStay object
Name Type Usage Description Example

accountName

string

REQUIRED

Property code that the stay belongs to

"AVERTINE"

interfaceType

string

INTERNAL

confirmationNumber

string

REQUIRED

ID of the stay

"30001"

checkInDate

ISO8601 date string

REQUIRED

Scheduled check-in date of the stay

"2015-12-25"

checkedInBy

string

OPTIONAL

Name, username, or initials of the user or system that checked the guest in

"AB"

checkOutDate

ISO8601 date string

REQUIRED

Scheduled check-out date of the stay

"2015-12-31"

checkedOutBy

string

OPTIONAL

Name, username, or initials of the user or system that checked the guest out

"CD"

roomNumber

string

RECOMMENDED

Room number or room identifier of the stay

"F102"

roomType

string

SUGGESTED

Room type of the stay, preferably in code/short form

"KINGSTE"

channel

string

SUGGESTED

Channel by which the stay was booked

"WALK_IN"

ratePlanCode

string

RECOMMENDED

Rate plan name or rate code of the stay

"BAR"

rate

decimal number

RECOMMENDED

Nightly rate of the stay

109.23

title

string

SUGGESTED

Title of the guest

"Ms"

firstName

string

REQUIRED

First name of the guest

"Alice"

lastName

string

REQUIRED

Last name of the guest

"Smith"

email

string

REQUIRED

Primary email address of the guest

"alice@mailinator.com"

phone

string

RECOMMENDED

Primary phone number of the guest

"555-1234"

addressLine1

string

RECOMMENDED

Primary address of the guest: line 1

"1234 Jones St"

addressLine2

string

RECOMMENDED

Primary address of the guest: line 2

"Apt 3C"

city

string

RECOMMENDED

Primary address of the guest: city

"San Francisco"

state

string

RECOMMENDED

Primary address of the guest: state or province, preferably short code

"CA"

country

string

RECOMMENDED

Primary address of the guest: country, preferably ISO3166 2-character code

"US"

postalCode

string

RECOMMENDED

Primary address of the guest: zip or postal code

"94108"

loyaltyNumber

string

SUGGESTED

Loyalty program number of the guest

"12345"

groupName

string

OPTIONAL

Name on primary group profile associated with the stay

"Winter Ski"

1.5. Simple guest-stay list message

A list of simpleGuestStay objects, providing a convenient way for a system to send a number of simpleGuestStays to another system in a single message.

A simple guest-stay list message contains an array of simpleGuestStay objects.

1.6. Common objects

Definitions for objects used in multiple SHIP message types.

1.6.1. timeSpan object

A time period with a start time

Table 16. Fields of the timeSpan object
Name Type Usage Description Example

startTime

ISO8601 date-time string

REQUIRED

Start time

"2016-07-22T00:00:00.000-07:00"

timeUnits

integral number

REQUIRED

Number of time units

2

timeUnitType

string enum: DAY, HOUR, MINUTE

REQUIRED

Type of the time units

"DAY"

1.6.2. monetaryValue object

A monetary value consisting of a number and a currency

Table 17. Fields of the monetaryValue object
Name Type Usage Description Example

value

decimal number

REQUIRED

Number of units of the currency

19.95

currency

string

RECOMMENDED

ISO4217 3-character currency code

"USD"

1.6.3. monetaryAmount object

An amount of money with associated tax

Table 18. Fields of the monetaryAmount object
Name Type Usage Description Example

amountBeforeTax

monetaryValue object

RECOMMENDED

Amount before tax

taxAmount

monetaryValue object

RECOMMENDED

Tax amount

value

decimal number

DEPRECATED

Number of units of the currency of the pre-tax amount. Use amountBeforeTax instead.

19.95

currency

string

DEPRECATED

ISO4217 3-character currency code of the pre-tax amount. Use amountBeforeTax instead.

"USD"

1.6.4. companyInfo object

A minimal set of information about a company

Table 19. Fields of the companyInfo object
Name Type Usage Description Example

name

string

REQUIRED

Name of the company

"AVERTINE"

1.6.5. guestNote object

A note

Table 20. Fields of the guestNote object
Name Type Usage Description Example

title

string

OPTIONAL

Note title

"Background note"

text

string

REQUIRED

Note text

"Background note text"

type

string

OPTIONAL

Note type

"Background notes"

time

ISO8601 date-time string

OPTIONAL

Time the note was created/updated

"2016-07-14T20:52:01.132Z"

1.6.6. userDefinedField object

A name-value pair defined by a specific system or application

Table 21. Fields of the userDefinedField object
Name Type Usage Description Example

name

string

REQUIRED

Field name. If two fields have the same name, their values form an unordered list.

"UDF01"

value

string

REQUIRED

Field value

"Opaque value"

1.6.7. summary object

A Summary of the SHIP objects list result.

Table 22. Fields of the summary object
Name Type Usage Description Example

successCount

integer

REQUIRED

Number of SHIP objects successfully processed

6

errorCount

integer

REQUIRED

Number of SHIP objects that failed to process

7

totalCount

integer

REQUIRED

Total number of SHIP objects processed

13

1.7. Result message

A result message contains a single result object.

1.7.1. result object

A result object contains the result of processing a message or part of a message.

Table 23. Fields of the result object
Name Type Usage Description Example

status

string enum: NEW, SUCCESS, WARNING, FAILED, MISSING, DELETE

RECOMMENDED

Status code of the result

"SUCCESS"

message

string

SUGGESTED

Description of the result

"is required"

sourceField

string

OPTIONAL

If the incoming message was transformed, this identifies the field of the incoming message to which the result pertains

"cell 12"

sourceValue

string

OPTIONAL

If the incoming message was transformed, the original value in the incoming message to which the result pertains

"CODE123"

field

string

SUGGESTED

JSON pointer identifying the SHIP field to which the result pertains

"guestStay#/profiles/0/lastName"

1.8. Guest-stay result message

A guest-stay result message contains a single guestStayResult object.

1.8.1. guestStayResult object

A guestStayResult object is a result object with additional fields to indicate the result of processing a guest-stay message.

Table 24. Fields of the guestStayResult object
Name Type Usage Description Example

status

string enum: NEW, SUCCESS, WARNING, FAILED, MISSING, DELETE

RECOMMENDED

Status code of the result

"SUCCESS"

message

string

SUGGESTED

Description of the result

"Transformation to guest-stay failed with multiple causes"

sourceField

string

OPTIONAL

If the incoming message was transformed, this identifies the field of the incoming message to which the result pertains

"row 0"

sourceValue

string

OPTIONAL

If the incoming message was transformed, the original value in the incoming message to which the result pertains

"CODE123"

field

string

SUGGESTED

JSON pointer identifying the SHIP field to which the result pertains

"guestStay#"

guestStay

guestStay object

OPTIONAL

The guestStay object produced by processing the incoming message. May be invalid, check errors first.

errors

array of result objects

SUGGESTED

Errors generated by the processing of the guest-stay

warnings

array of result objects

SUGGESTED

Warnings generated by the processing of the guest-stay

1.9. Guest-stay list result message

A guest-stay list result message contains a single guestStayListResult object.

1.9.1. guestStayListResult object

A guestStayListResult object is a result object with additional fields to indicate the result of processing a guest-stay list message.

Table 25. Fields of the guestStayListResult object
Name Type Usage Description Example

status

string enum: NEW, SUCCESS, WARNING, FAILED, MISSING, DELETE

RECOMMENDED

Status code of the result

"SUCCESS"

message

string

SUGGESTED

Description of the result

"Some guest-stay transformations failed"

sourceField

string

OPTIONAL

If the incoming message was transformed, this identifies the field of the incoming message to which the result pertains

"table"

sourceValue

string

OPTIONAL

If the incoming message was transformed, the original value in the incoming message to which the result pertains

"CODE123"

field

string

SUGGESTED

JSON pointer identifying the SHIP field to which the result pertains

"guestStayList#"

summary

summary object

SUGGESTED

Summary of the guest-stay list result

guestStays

array of guestStayResult objects

SUGGESTED

Guest-stay results produced by processing the incoming message

errors

array of result objects

DEPRECATED

Errors generated by the processing of the guest-stay list. Deprecated, use guestStays instead.

warnings

array of result objects

DEPRECATED

Warnings generated by the processing of the guest-stay list. Deprecated, use guestStays instead.

1.10. Profile result message

A profile result message contains a single profileResult object.

1.10.1. profileResult object

A profileResult object is a result object with additionnal fields to indicate the result of processing a profile message.

Table 26. Field of the profileResult object
Name Type Usage Description Example

status

string enum: NEW, SUCCESS, WARNING, FAILED, MISSING, DELETE

RECOMMENDED

Status code of the result

"SUCCESS"

message

string

SUGGESTED

Description of the result

"Transformation to profile failed with multiple causes"

sourceField

string

OPTIONAL

If the incoming message was transformed, this identifies the field of the incoming message to which the result pertains

"row 0"

sourceValue

string

OPTIONAL

If the incoming message was transformed, the original value in the incoming message to which the result pertains

"CODE123"

field

string

SUGGESTED

JSON pointer identifying the SHIP field to which the result pertains

"profile#"

profile

profile object

OPTIONAL

The profile object produced by processing the incoming message. May be invalid, check errors first.

errors

array of result objects

SUGGESTED

Errors generated by the processing of the guest-stay

warnings

array of result objects

SUGGESTED

Warnings generated by the processing of the guest-stay

1.11. Profile list result message

A profile list result message contains a single profileListResult object.

1.11.1. profileListResult object

A profileListResult object is a result object with additional fields to indicate the result of processing a profile list message.

Table 27. Fields of the profileListResult object
Name Type Usage Description Example

status

string enum: NEW, SUCCESS, WARNING, FAILED, MISSING, DELETE

RECOMMENDED

Status code of the result

"SUCCESS"

message

string

SUGGESTED

Description of the result

"Some profile transformations failed"

sourceField

string

OPTIONAL

If the incoming message was transformed, this identifies the field of the incoming message to which the result pertains

"table"

sourceValue

string

OPTIONAL

If the incoming message was transformed, the original value in the incoming message to which the result pertains

"CODE123"

field

string

SUGGESTED

JSON pointer identifying the SHIP field to which the result pertains

"profileList#"

summary

summary object

SUGGESTED

Summary of the profile list result

profiles

array of profileResult objects

SUGGESTED

Profile results produced by processing the incoming message

errors

array of result objects

DEPRECATED

Errors generated by the processing of the profile list. Deprecated, use profiles instead.

warnings

array of result objects

DEPRECATED

Warnings generated by the processing of the profile list. Deprecated, use profiles instead.

2. Sample messages

2.1. Sample guest-stay messages

2.1.1. Guest-stay message with commonly used fields

Listing 1. Guest-stay message with commonly used fields
{
  "action": "CHECKOUT",
  "property": "AVERTINE",
  "confirmationCode": "38000",
  "statusCode": "CHECKEDOUT",
  "reservationSource": "GDS",
  "checkinDate": "2007-07-19",
  "checkoutDate": "2007-07-22",
  "roomNumber": "123",
  "roomType": "KING",
  "totalRoomRevenue": {
    "amountBeforeTax": {
      "value": 300,
      "currency": "USD"
    }
  },
  "ratePlans": [
    {
      "rateCode": "BASE_RATE",
      "rates": [
        {
          "amount": {
            "value": 100,
            "currency": "USD"
          }
        }
      ]
    }
  ],
  "profiles": [
    {
      "action": "ADD",
      "property": "AVERTINE",
      "profileId": "28002",
      "profileType": "GUEST",
      "title": "Dr",
      "firstName": "Contact",
      "middleName": "J",
      "lastName": "Sample",
      "emailAddresses": [
        {
          "emailAddress": "sample@mailinator.com",
          "primary": true
        }
      ],
      "postalAddresses": [
        {
          "address1": "56574 Sample Street",
          "address2": "Unit 1234",
          "city": "Ft Myers",
          "state": "FL",
          "country": "US",
          "zipCode": "33967",
          "addressType": "HOME",
          "primary": true
        }
      ],
      "phoneNumbers": [
        {
          "phoneNumber": "1-239-555-5555",
          "phoneNumberType": "HOME",
          "primary": true
        }
      ],
      "memberships": [
        {
          "loyaltyNumber": "213213213213213213"
        }
      ]
    }
  ]
}

2.1.2. Guest-stay message with all possible fields

Listing 2. Guest-stay message with all possible fields
{
  "action": "ADD",
  "property": "AVERTINE",
  "interfaceType": "SHIP",
  "remoteSystemName": "avertine_ship",
  "accountId": "11348172",
  "confirmationCode": "38001",
  "statusCode": "RESERVED",
  "guaranteeCode": "CC",
  "lastUpdatedAt": "2009-08-15T16:52:36.000-07:00",
  "lastUpdatedBy": "System Agent",
  "bookingNumber": "CRO-123A",
  "bookingDate": "2009-08-15T16:52:36.000-07:00",
  "bookedBy": "Sample User",
  "reservationSource": "COD",
  "cancellationNumber": "12345",
  "cancellationDate": "2009-08-15T16:52:37.000-07:00",
  "canceledBy": "Sample User 2",
  "checkinDate": "2007-07-19",
  "actualCheckinDate": "2007-07-19T15:23:00.000-07:00",
  "checkedInBy": "Ms. Green",
  "checkoutDate": "2007-07-22",
  "actualCheckoutDate": "2007-07-22T08:10:40.000-07:00",
  "checkedOutBy": "AJP",
  "stayLength": {
    "stayLength": 3
  },
  "numberOfAdults": 1,
  "numberOfChildren": 0,
  "roomNumber": "123",
  "roomType": "KING",
  "roomTypeChargeCode": "KING",
  "blockCode": "KING-Block",
  "numberOfRooms": 1,
  "market": "ALL",
  "purposeOfStay": "BUSINESS",
  "totalRoomRevenue": {
    "amountBeforeTax": {
      "value": 404.5,
      "currency": "USD"
    },
    "taxAmount": {
      "value": 35.39,
      "currency": "USD"
    }
  },
  "totalFoodAndBeverageRevenue": {
    "amountBeforeTax": {
      "value": 4.99,
      "currency": "USD"
    },
    "taxAmount": {
      "value": 0.43,
      "currency": "USD"
    }
  },
  "totalLuggageRevenue": {
    "amountBeforeTax": {
      "value": 49.99,
      "currency": "USD"
    },
    "taxAmount": {
      "value": 4.37,
      "currency": "USD"
    }
  },
  "totalOtherRevenue": {
    "amountBeforeTax": {
      "value": 11.25,
      "currency": "USD"
    },
    "taxAmount": {
      "value": 0.98,
      "currency": "USD"
    }
  },
  "totalRemainingBalance": {
    "value": 24.55,
    "currency": "USD"
  },
  "totalDepositRequired": {
    "value": 24.55,
    "currency": "USD"
  },
  "depositRequiredDate": "2009-08-15",
  "ratePlans": [
    {
      "rateCode": "SECRET_RATE",
      "timeSpan": {
        "startTime": "2007-07-19T00:00:00.000-07:00",
        "timeUnits": 3,
        "timeUnitType": "DAY"
      },
      "confidential": true,
      "rates": [
        {
          "amount": {
            "value": 100,
            "currency": "USD"
          },
          "startTime": "2007-07-19T00:00:00.000-07:00",
          "timeUnits": 1,
          "timeUnitType": "DAY"
        },
        {
          "amount": {
            "value": 100,
            "currency": "USD"
          },
          "startTime": "2007-07-20T00:00:00.000-07:00",
          "timeUnits": 1,
          "timeUnitType": "DAY"
        },
        {
          "amount": {
            "value": 99.5,
            "currency": "USD"
          },
          "startTime": "2007-07-20T00:00:00.000-07:00",
          "timeUnits": 1,
          "timeUnitType": "DAY"
        },
        {
          "amount": {
            "value": 105,
            "currency": "USD"
          },
          "startTime": "2007-07-21T00:00:00.000-07:00",
          "timeUnits": 1,
          "timeUnitType": "DAY"
        }
      ]
    }
  ],
  "services": [
    {
      "inventoryCode": "SPA",
      "rateCode": "STD_SPA",
      "category": "SPA",
      "timeSpan": {
        "startTime": "2007-07-19T23:00:00.000-07:00",
        "timeUnits": 1,
        "timeUnitType": "HOUR"
      },
      "pricePerUnit": {
        "amountBeforeTax": {
          "value": 25.9,
          "currency": "USD"
        },
        "taxAmount": {
          "value": 2.27,
          "currency": "USD"
        }
      },
      "numberOfUnits": 2
    },
    {
      "inventoryCode": "DINNER",
      "rateCode": "MAIN_REST",
      "category": "FOOD",
      "timeSpan": {
        "startTime": "2007-07-19T19:00:00.000-07:00",
        "timeUnits": 1,
        "timeUnitType": "HOUR"
      },
      "pricePerUnit": {
        "amountBeforeTax": {
          "value": 4.99,
          "currency": "USD"
        },
        "taxAmount": {
          "value": 0.43,
          "currency": "USD"
        }
      },
      "numberOfUnits": 1
    },
    {
      "inventoryCode": "BELL",
      "rateCode": "STD_BELL",
      "category": "LUGGAGE",
      "timeSpan": {
        "startTime": "2007-07-19T08:00:00.000-07:00",
        "timeUnits": 1,
        "timeUnitType": "HOUR"
      },
      "pricePerUnit": {
        "amountBeforeTax": {
          "value": 49.99,
          "currency": "USD"
        },
        "taxAmount": {
          "value": 4.37,
          "currency": "USD"
        }
      },
      "numberOfUnits": 1
    },
    {
      "inventoryCode": "RESORT",
      "rateCode": "STD_RESORT",
      "category": "OTHER",
      "timeSpan": {
        "startTime": "2007-07-19T12:00:00.000-07:00",
        "timeUnits": 1,
        "timeUnitType": "HOUR"
      },
      "pricePerUnit": {
        "amountBeforeTax": {
          "value": 11.25,
          "currency": "USD"
        },
        "taxAmount": {
          "value": 0.98,
          "currency": "USD"
        }
      },
      "numberOfUnits": 1
    }
  ],
  "profiles": [
    {
      "action": "ADD",
      "property": "AVERTINE",
      "interfaceType": "SHIP",
      "remoteSystemName": "avertine_ship",
      "accountId": "11348172",
      "profileId": "28002",
      "profileType": "GUEST",
      "title": "Dr",
      "firstName": "Contact",
      "middleName": "J",
      "lastName": "Sample",
      "gender": "FEMALE",
      "dateOfBirth": "1975-07-18",
      "vipStatus": "2",
      "primaryLanguage": "EN",
      "companyInfo": {
        "name": "Avertine"
      },
      "emailOptOut": false,
      "mailOptOut": true,
      "emailAddresses": [
        {
          "emailAddress": "sample@mailinator.com",
          "primary": true
        },
        {
          "emailAddress": "inactive@mailinator.com",
          "primary": false,
          "inactiveDate": "2007-07-19T00:00:00.000-07:00"
        }
      ],
      "postalAddresses": [
        {
          "address1": "56574 Sample Street",
          "address2": "Unit 1234",
          "city": "Ft Myers",
          "state": "FL",
          "country": "US",
          "zipCode": "33967",
          "addressType": "HOME",
          "primary": true
        },
        {
          "address1": "1500 Example Hwy",
          "city": "Naples",
          "country": "AG",
          "zipCode": "32781",
          "addressType": "BUSINESS",
          "primary": false,
          "inactiveDate": "2007-07-19T00:00:00.000-07:00"
        }
      ],
      "phoneNumbers": [
        {
          "phoneNumber": "412-555-1234",
          "phoneNumberType": "BUSINESS",
          "primary": true
        },
        {
          "phoneNumber": "1-239-555-1111",
          "phoneNumberType": "MOBILE",
          "primary": false,
          "inactiveDate": "2007-07-19T00:00:00.000-07:00"
        }
      ],
      "memberships": [
        {
          "loyaltyNumber": "213213213213213213",
          "programCode": "PC",
          "levelCode": "GOLD",
          "expireDate": "2010-12-31"
        }
      ],
      "creditCards": [
        {
          "creditCardLast4": "1234",
          "creditCardExpirationDate": "2015-06-30",
          "creditCardType": "AX",
          "primary": true
        },
        {
          "creditCardLast4": "8888",
          "creditCardExpirationDate": "2016-01-31",
          "creditCardType": "VA",
          "primary": false
        },
        {
          "creditCardLast4": "5555",
          "creditCardExpirationDate": "2018-10-31",
          "creditCardType": "MC",
          "primary": false
        }
      ],
      "guestNotes": [
        {
          "title": "Profile Background Note",
          "text": "Profile Background Note Text",
          "type": "Profile Background Notes",
          "time": "2014-01-16T11:30:38.000-08:00"
        },
        {
          "title": "General Note",
          "text": "General Note Text",
          "type": "General Notes",
          "time": "2014-01-16T11:30:38.000-08:00"
        }
      ]
    },
    {
      "action": "ADD",
      "property": "AVERTINE",
      "interfaceType": "SHIP",
      "remoteSystemName": "avertine_ship",
      "profileId": "314",
      "profileType": "TRAVEL",
      "lastName": "Avertine Travel",
      "emailAddresses": [
        {
          "emailAddress": "travel@mailinator.com",
          "primary": true
        }
      ],
      "postalAddresses": [
        {
          "address1": "1234 Jones St",
          "address2": "Suite C1",
          "city": "San Francisco",
          "state": "CA",
          "country": "US",
          "zipCode": "94108",
          "addressType": "BUSINESS",
          "primary": true
        }
      ],
      "phoneNumbers": [
        {
          "phoneNumber": "555-555-1234",
          "phoneNumberType": "BUSINESS",
          "primary": true
        }
      ]
    }
  ],
  "guestNotes": [
    {
      "title": "Background Note",
      "text": "Global Background Note",
      "type": "Background Notes",
      "time": "2014-01-16T11:30:38.000-08:00"
    },
    {
      "text": "RATE_FIXED=YES",
      "type": "SYSTEM",
      "time": "2009-08-15T16:52:40.000-07:00"
    },
    {
      "text": "DISCOUNT_PERCENTAGE=0",
      "type": "SYSTEM",
      "time": "2009-08-15T16:52:40.000-07:00"
    }
  ],
  "pmsDefinedFields": [
    {
      "name": "UDF01",
      "value": "A"
    },
    {
      "name": "UDF02",
      "value": "1"
    }
  ],
  "propertyDefinedFields": [
    {
      "name": "PUDF01",
      "value": "A1"
    },
    {
      "name": "PUDF02",
      "value": "1.3"
    }
  ]
}

2.2. Sample guest-stay list messages

2.2.1. Guest-stay list message with multiple guest-stays

Listing 3. Guest-stay list message with multiple guest-stays
[
  {
    "action": "ADD",
    "property": "AVERTINE",
    "confirmationCode": "38001",
    "statusCode": "RESERVED",
    "reservationSource": "COD",
    "checkinDate": "2007-07-19",
    "checkoutDate": "2007-07-22",
    "roomNumber": "123",
    "roomType": "KING",
    "totalRoomRevenue": {
      "amountBeforeTax": {
        "value": 300,
        "currency": "USD"
      }
    },
    "ratePlans": [
      {
        "rateCode": "BASE_RATE",
        "rates": [
          {
            "amount": {
              "value": 100,
              "currency": "USD"
            }
          }
        ]
      }
    ],
    "profiles": [
      {
        "action": "ADD",
        "property": "AVERTINE",
        "profileId": "abc10001",
        "profileType": "GUEST",
        "title": "Dr",
        "firstName": "Contact",
        "middleName": "J",
        "lastName": "Sample",
        "emailAddresses": [
          {
            "emailAddress": "sample@mailinator.com",
            "primary": true
          }
        ],
        "postalAddresses": [
          {
            "address1": "56574 Sample Street",
            "address2": "Unit 1234",
            "city": "Ft Myers",
            "state": "FL",
            "country": "US",
            "zipCode": "33967",
            "addressType": "HOME",
            "primary": true
          }
        ],
        "phoneNumbers": [
          {
            "phoneNumber": "1-239-555-5555",
            "phoneNumberType": "HOME",
            "primary": true
          }
        ],
        "memberships": [
          {
            "loyaltyNumber": "213213213213213213"
          }
        ]
      }
    ]
  },
  {
    "action": "CHECKOUT",
    "property": "AVERTINE",
    "confirmationCode": "38002",
    "statusCode": "CHECKEDOUT",
    "reservationSource": "WALK_IN",
    "checkinDate": "2015-07-11",
    "checkoutDate": "2015-07-13",
    "roomNumber": "FLT2-A",
    "roomType": "KING",
    "totalRoomRevenue": {
      "amountBeforeTax": {
        "value": 295.5,
        "currency": "USD"
      }
    },
    "ratePlans": [
      {
        "rateCode": "BAR",
        "rates": [
          {
            "amount": {
              "value": 147.75,
              "currency": "USD"
            }
          }
        ]
      }
    ],
    "profiles": [
      {
        "action": "ADD",
        "property": "AVERTINE",
        "profileId": "28002",
        "profileType": "GUEST",
        "title": "Ms",
        "firstName": "Amy",
        "middleName": "T",
        "lastName": "Smith",
        "emailAddresses": [
          {
            "emailAddress": "amy@mailinator.com",
            "primary": true
          }
        ],
        "postalAddresses": [
          {
            "address1": "1234 Jones St",
            "address2": "Unit 1234",
            "city": "San Francisco",
            "state": "CA",
            "country": "US",
            "zipCode": "94108",
            "addressType": "HOME",
            "primary": true
          }
        ],
        "phoneNumbers": [
          {
            "phoneNumber": "1-415-555-5555",
            "phoneNumberType": "HOME",
            "primary": true
          }
        ],
        "memberships": [
          {
            "loyaltyNumber": "ABC123"
          }
        ]
      }
    ]
  }
]

2.3. Sample profile messages

2.3.1. Profile message with commonly used fields

Listing 4. Profile message with commonly used fields
{
  "action": "ADD",
  "property": "AVERTINE",
  "interfaceType": "SHIP",
  "remoteSystemName": "avertine_ship",
  "profileId": "CR-1234",
  "profileType": "GUEST",
  "title": "Dr",
  "firstName": "Contact",
  "middleName": "J",
  "lastName": "Sample",
  "emailAddresses": [
    {
      "emailAddress": "info@mailinator.com",
      "primary": true
    }
  ],
  "postalAddresses": [
    {
      "address1": "56574 Sample Street",
      "address2": "Unit 1234",
      "city": "Ft Myers",
      "state": "FL",
      "country": "US",
      "zipCode": "33967",
      "addressType": "HOME",
      "primary": true
    }
  ],
  "phoneNumbers": [
    {
      "phoneNumber": "1-239-555-4321",
      "phoneNumberType": "HOME",
      "primary": true
    }
  ],
  "memberships": [
    {
      "loyaltyNumber": "213213213213213213"
    }
  ]
}

2.3.2. Profile message with all possible fields

Listing 5. Profile message with all possible fields
{
  "action": "ADD",
  "property": "AVERTINE",
  "interfaceType": "SHIP",
  "remoteSystemName": "avertine_ship",
  "accountId": "11348172",
  "profileId": "28001",
  "profileType": "GUEST",
  "title": "Mr.",
  "firstName": "John",
  "middleName": "Clancy",
  "lastName": "Smith",
  "gender": "MALE",
  "dateOfBirth": "1989-02-01",
  "vipStatus": "2",
  "primaryLanguage": "EN",
  "companyInfo": {
    "name": "Avertine"
  },
  "emailOptOut": false,
  "mailOptOut": true,
  "emailAddresses": [
    {
      "emailAddress": "info@mailinator.com",
      "primary": true
    },
    {
      "emailAddress": "inactive@mailinator.com",
      "primary": false,
      "inactiveDate": "2007-07-19T00:00:00.000-07:00"
    }
  ],
  "postalAddresses": [
    {
      "address1": "1234 Jones St",
      "address2": "2nd Floor",
      "city": "San Francisco",
      "state": "CA",
      "country": "US",
      "zipCode": "94108",
      "addressType": "HOME",
      "primary": true
    },
    {
      "address1": "2640 Parkway De la Puerta De oro",
      "address2": "Habitación 315",
      "city": "Nápoles",
      "state": "FL",
      "country": "US",
      "zipCode": "34105",
      "addressType": "BUSINESS",
      "primary": false
    }
  ],
  "phoneNumbers": [
    {
      "phoneNumber": "555-123-4567",
      "phoneNumberType": "BUSINESS",
      "primary": true
    },
    {
      "phoneNumber": "415-555-1234",
      "phoneNumberType": "HOME",
      "primary": false,
      "inactiveDate": "2007-07-19T00:00:00.000-07:00"
    }
  ],
  "memberships": [
    {
      "loyaltyNumber": "4800123",
      "programCode": "ENCORE"
    },
    {
      "loyaltyNumber": "66760000",
      "programCode": "OCIS",
      "levelCode": "GOLD",
      "expireDate": "2010-12-31"
    }
  ],
  "creditCards": [
    {
      "creditCardLast4": "1234",
      "creditCardExpirationDate": "2015-12-31",
      "creditCardType": "AX",
      "primary": true
    },
    {
      "creditCardExpirationDate": "2012-12-31",
      "creditCardType": "MC",
      "primary": false
    },
    {
      "creditCardExpirationDate": "2013-04-30",
      "creditCardType": "VA",
      "primary": false
    }
  ],
  "guestNotes": [
    {
      "title": "Profile Background Note",
      "text": "Profile Background Note Text",
      "type": "Profile Background Notes",
      "time": "2013-05-02T16:55:48.000-07:00"
    },
    {
      "title": "General Note",
      "text": "General Note Text",
      "type": "General Notes",
      "time": "2013-05-02T16:55:57.000-07:00"
    }
  ],
  "pmsDefinedFields": [
    {
      "name": "UDF01",
      "value": "A"
    },
    {
      "name": "UDF02",
      "value": "1"
    }
  ],
  "propertyDefinedFields": [
    {
      "name": "PUDF01",
      "value": "A1"
    },
    {
      "name": "PUDF02",
      "value": "1.3"
    }
  ]
}

2.4. Sample simple guest-stay messages

2.4.1. Simple guest-stay message with commonly used fields

Listing 6. Simple guest-stay message with commonly used fields
{
  "accountName": "AVERTINE",
  "confirmationNumber": "10002",
  "checkInDate": "2015-06-28",
  "checkOutDate": "2015-07-01",
  "roomType": "SK",
  "channel": "SALE",
  "rate": 144.0,
  "firstName": "Eve",
  "lastName": "Jones",
  "email": "eve@mailinator.com",
  "addressLine1": "1234 Jones St",
  "city": "San Francisco",
  "state": "CA",
  "country": "US",
  "postalCode": "94108"
}

2.4.2. Simple guest-stay message with all possible fields

Listing 7. Simple guest-stay message with all possible fields
{
  "accountName": "AVERTINE",
  "interfaceType": "SHIP",
  "confirmationNumber": "10003",
  "checkInDate": "2015-06-28",
  "checkedInBy": "Test User 1",
  "checkOutDate": "2015-07-01",
  "checkedOutBy": "Test User 2",
  "roomNumber": "C124A",
  "roomType": "KING",
  "channel": "SALE",
  "ratePlanCode": "BAR",
  "rate": 99.95,
  "title": "Dr",
  "firstName": "Mary",
  "lastName": "Claire",
  "email": "mary@mailinator.com",
  "phone": "555-123-4567",
  "addressLine1": "1234 Jones St",
  "addressLine2": "Apt 4C",
  "city": "San Francisco",
  "state": "CA",
  "country": "US",
  "postalCode": "94108",
  "loyaltyNumber": "12345",
  "groupName": "Nov Conference"
}

2.5. Sample simple guest-stay list messages

2.5.1. Simple guest-stay list message with multiple simple guest-stays

Listing 8. Simple guest-stay list message with multiple simple guest-stays
[
  {
    "accountName": "AVERTINE",
    "confirmationNumber": "10002",
    "checkInDate": "2015-06-28",
    "checkOutDate": "2015-07-01",
    "roomType": "SK",
    "channel": "SALE",
    "rate": 144.0,
    "firstName": "Eve",
    "lastName": "Jones",
    "email": "eve@mailinator.com",
    "addressLine1": "1234 Jones St",
    "city": "San Francisco",
    "state": "CA",
    "country": "US",
    "postalCode": "94108"
  },
  {
    "accountName": "AVERTINE",
    "interfaceType": "SHIP",
    "confirmationNumber": "10003",
    "checkInDate": "2015-06-28",
    "checkedInBy": "Test User 1",
    "checkOutDate": "2015-07-01",
    "checkedOutBy": "Test User 2",
    "roomNumber": "C124A",
    "roomType": "KING",
    "channel": "SALE",
    "ratePlanCode": "BAR",
    "rate": 99.95,
    "title": "Dr",
    "firstName": "Mary",
    "lastName": "Claire",
    "email": "mary@mailinator.com",
    "phone": "555-123-4567",
    "addressLine1": "1234 Jones St",
    "addressLine2": "Apt 4C",
    "city": "San Francisco",
    "state": "CA",
    "country": "US",
    "postalCode": "94108",
    "loyaltyNumber": "12345",
    "groupName": "Nov Conference"
  }
]

2.6. Sample guest-stay list result messages

2.6.1. Guest-stay list result message with success result

Listing 9. Guest-stay list result message with success result
{
  "status": "SUCCESS",
  "sourceField": "table",
  "field": "guestStayList#",
  "summary": {
    "successCount": 2,
    "errorCount": 0,
    "totalCount": 2
  },
  "guestStays": [
    {
      "status": "SUCCESS",
      "sourceField": "row 0",
      "field": "guestStay#",
      "guestStay": {
        "action": "CHECKOUT",
        "property": "AVERTINE",
        "confirmationCode": "38000",
        "statusCode": "CHECKEDOUT",
        "checkinDate": "2007-07-19",
        "checkoutDate": "2007-07-22",
        "roomNumber": "123",
        "roomType": "KING",
        "profiles": [
          {
            "action": "ADD",
            "property": "AVERTINE",
            "profileId": "28002",
            "profileType": "GUEST",
            "firstName": "Contact",
            "lastName": "Sample",
            "emailAddresses": [
              {
                "emailAddress": "sample@mailinator.com",
                "primary": true
              }
            ]
          }
        ]
      }
    },
    {
      "status": "SUCCESS",
      "sourceField": "row 1",
      "field": "guestStay#",
      "guestStay": {
        "action": "CHECKOUT",
        "property": "AVERTINE",
        "confirmationCode": "38000",
        "statusCode": "CHECKEDOUT",
        "checkinDate": "2007-07-19",
        "checkoutDate": "2007-07-22",
        "roomNumber": "123",
        "roomType": "KING",
        "profiles": [
          {
            "action": "ADD",
            "property": "AVERTINE",
            "profileId": "28002",
            "profileType": "GUEST",
            "firstName": "Contact",
            "lastName": "Sample",
            "emailAddresses": [
              {
                "emailAddress": "sample@mailinator.com",
                "primary": true
              }
            ]
          }
        ]
      }
    }
  ]
}

2.6.2. Guest-stay list result message with status, errors, and warnings only

Listing 10. Guest-stay list result message with status, errors, and warnings only
{
  "status": "WARNING",
  "message": "Some guest-stay transformations failed",
  "sourceField": "table",
  "sourceValue": "\"NOT AVAILABLE\",\"1194.0000\",\"1194.0000\",\"NULL\",\"NULL\",\".\",,,,\"CRO\",,,\"0\",\"1\",\"100.99\",\"CC\",\"EN\",,,,,\"TREE\",\"N\",,,,,,\"PLAT\"\n\"2016-12-18\",\"5.0000\",\"5.0000\",\"NULL\",\"NULL\",\".\",,,,\"ONL\",,,\"0\",\"1\",\"100.99\",\"CC\",\"EN\",,,,,\"TREE\",\"N\",,,,,,\"PLAT\"",
  "field": "guestStayList#",
  "summary": {
    "successCount": 1,
    "errorCount": 1,
    "totalCount": 2
  },
  "guestStays": [
    {
      "status": "FAILED",
      "message": "Transformation to guest-stay failed with multiple causes:\n    guestStay#/totalDepositRequired/value Transformation failed: Not a number\n    guestStay#/totalLuggageRevenue/amountBeforeTax/value Transformation failed: Not a number\n",
      "sourceField": "row 0",
      "sourceValue": "\"NOT AVAILABLE\",\"1194.0000\",\"1194.0000\",\"NULL\",\"NULL\",\".\",,,,\"CRO\",,,\"0\",\"1\",\"100.99\",\"CC\",\"EN\",,,,,\"TREE\",\"N\",,,,,,\"PLAT\"",
      "field": "guestStay#",
      "errors": [
        {
          "status": "FAILED",
          "message": "Transformation failed: Not a number",
          "sourceField": "cell 7",
          "sourceValue": "",
          "field": "guestStay#/totalDepositRequired/value"
        },
        {
          "status": "FAILED",
          "message": "Transformation failed: Not a number",
          "sourceField": "cell 8",
          "sourceValue": "",
          "field": "guestStay#/totalLuggageRevenue/amountBeforeTax/value"
        }
      ],
      "warnings": [
        {
          "status": "FAILED",
          "message": "Transformation failed: Invalid format: \"NOT AVAILABLE\"",
          "sourceField": "cell 0",
          "sourceValue": "NOT AVAILABLE",
          "field": "guestStay#/actualCheckoutDate"
        }
      ]
    },
    {
      "status": "SUCCESS",
      "sourceField": "row 1",
      "field": "guestStay#"
    }
  ]
}

2.6.3. Guest-stay list result message with all possible fields

Listing 11. Guest-stay list result message with all possible fields
{
  "status": "WARNING",
  "message": "Some guest-stay transformations failed",
  "sourceField": "table",
  "sourceValue": "\"NOT AVAILABLE\",\"1194.0000\",\"1194.0000\",\"NULL\",\"NULL\",\".\",,,,\"CRO\",,,\"0\",\"1\",\"100.99\",\"CC\",\"EN\",,,,,\"TREE\",\"N\",,,,,,\"PLAT\"\n\"2016-12-18\",\"5.0000\",\"5.0000\",\"NULL\",\"NULL\",\".\",,,,\"ONL\",,,\"0\",\"1\",\"100.99\",\"CC\",\"EN\",,,,,\"TREE\",\"N\",,,,,,\"PLAT\"",
  "field": "guestStayList#",
  "summary": {
    "successCount": 1,
    "errorCount": 1,
    "totalCount": 2
  },
  "guestStays": [
    {
      "status": "FAILED",
      "message": "Transformation to guest-stay failed with multiple causes:\n    guestStay#/totalDepositRequired/value Transformation failed: Not a number\n    guestStay#/totalLuggageRevenue/amountBeforeTax/value Transformation failed: Not a number\n",
      "sourceField": "row 0",
      "sourceValue": "\"NOT AVAILABLE\",\"1194.0000\",\"1194.0000\",\"NULL\",\"NULL\",\".\",,,,\"CRO\",,,\"0\",\"1\",\"100.99\",\"CC\",\"EN\",,,,,\"TREE\",\"N\",,,,,,\"PLAT\"",
      "field": "guestStay#",
      "guestStay": {
        "action": "CHECKOUT",
        "property": "AVERTINE",
        "confirmationCode": "38000",
        "statusCode": "CHECKEDOUT",
        "checkinDate": "2007-07-19",
        "checkoutDate": "2007-07-22",
        "roomNumber": "123",
        "roomType": "KING",
        "profiles": [
          {
            "action": "ADD",
            "property": "AVERTINE",
            "profileId": "28002",
            "profileType": "GUEST",
            "firstName": "Contact",
            "lastName": "Sample",
            "emailAddresses": [
              {
                "emailAddress": "sample@mailinator.com",
                "primary": true
              }
            ]
          }
        ]
      },
      "errors": [
        {
          "status": "FAILED",
          "message": "Transformation failed: Not a number",
          "sourceField": "cell 7",
          "sourceValue": "",
          "field": "guestStay#/totalDepositRequired/value"
        },
        {
          "status": "FAILED",
          "message": "Transformation failed: Not a number",
          "sourceField": "cell 8",
          "sourceValue": "",
          "field": "guestStay#/totalLuggageRevenue/amountBeforeTax/value"
        }
      ],
      "warnings": [
        {
          "status": "FAILED",
          "message": "Transformation failed: Invalid format: \"NOT AVAILABLE\"",
          "sourceField": "cell 0",
          "sourceValue": "NOT AVAILABLE",
          "field": "guestStay#/actualCheckoutDate"
        }
      ]
    },
    {
      "status": "SUCCESS",
      "sourceField": "row 1",
      "field": "guestStay#",
      "guestStay": {
        "action": "CHECKOUT",
        "property": "AVERTINE",
        "confirmationCode": "38000",
        "statusCode": "CHECKEDOUT",
        "checkinDate": "2007-07-19",
        "checkoutDate": "2007-07-22",
        "roomNumber": "123",
        "roomType": "KING",
        "profiles": [
          {
            "action": "ADD",
            "property": "AVERTINE",
            "profileId": "28002",
            "profileType": "GUEST",
            "firstName": "Contact",
            "lastName": "Sample",
            "emailAddresses": [
              {
                "emailAddress": "sample@mailinator.com",
                "primary": true
              }
            ]
          }
        ]
      }
    }
  ]
}

2.7. Sample profile list result messages

2.7.1. Profile list result message with success result

Listing 12. Profile list result message with success result
{
  "status": "SUCCESS",
  "sourceField": "table",
  "field": "profileList#",
  "summary": {
    "successCount": 1,
    "errorCount": 0,
    "totalCount": 1
  },
  "profiles": [
    {
      "status": "SUCCESS",
      "sourceField": "row 0",
      "field": "profile#",
      "profile": {
        "action": "ADD",
        "property": "d5e974f4-41e9-4a33-9290-eed5a6086597",
        "interfaceType": "FILE",
        "remoteSystemName": "b30b3a97-5b6d-4199-a35c-fcece539504f",
        "profileType": "GUEST",
        "firstName": "Mango000001",
        "lastName": "Tango000001",
        "emailAddresses": [
          {
            "emailAddress": "Mango000001@mailbox.revinate.net",
            "primary": true
          }
        ]
      }
    }
  ]
}

2.7.2. Profile list result message with all possible fields

Listing 13. Profile list result message with all possible fields
{
  "status": "FAILED",
  "message": "All profile transformations failed",
  "sourceField": "table",
  "field": "profileList#",
  "summary": {
    "successCount": 0,
    "errorCount": 1,
    "totalCount": 1
  },
  "profiles": [
    {
      "status": "FAILED",
      "message": "Transformation to profile failed with multiple causes:\n    profile#/emailAddresses/0/primary Transformation failed: Could not parse \"not_a_boolean\"\n",
      "sourceField": "row 0",
      "sourceValue": "\"Mango000001\",\"Tango000001\",\"Mango000001@mailbox.revinate.net\",\"not_a_boolean\",\"not_a_gender\"",
      "field": "profile#",
      "profile": {
        "action": "ADD",
        "property": "d5e974f4-41e9-4a33-9290-eed5a6086597",
        "interfaceType": "FILE",
        "remoteSystemName": "b30b3a97-5b6d-4199-a35c-fcece539504f",
        "profileType": "GUEST",
        "firstName": "Mango000001",
        "lastName": "Tango000001",
        "emailAddresses": []
      },
      "errors": [
        {
          "status": "FAILED",
          "message": "Transformation failed: Could not parse \"not_a_boolean\"",
          "sourceField": "cell 3",
          "sourceValue": "not_a_boolean",
          "field": "profile#/emailAddresses/0/primary"
        }
      ],
      "warnings": [
        {
          "status": "FAILED",
          "message": "Transformation failed: \"not_a_gender\" is not a valid Gender",
          "sourceField": "cell 4",
          "sourceValue": "not_a_gender",
          "field": "profile#/gender"
        }
      ]
    }
  ]
}

Appendix A: Revision History

Version Date Notes

1.0

2016-08-26

Initial version

1.1

2016-08-30

Add amountBeforeTax and taxAmount to monetaryAmount object and deprecate value and currency from same.

Deprecate travelAgency and totalTaxes from guestStay object.

Deprecate stayLengthUnits from stayLength object.

Add minute as a possible enum to timeUnitType in rate object.

1.2

2016-12-18

Add result and guestStayListResult objects

1.3

2016-12-19

Add guestStayResult object.

Add status, sourceField, and sourceValue to result object.

Switch field in result object from JSON path to JSON pointer.

Add guestStays to guestStayListResult object and deprecate errors and warnings from same.

1.4

2017-06-26

Add profileResult object.

Add profileListResult object.

Add pmsDefinedFields and propertyDefinedFields to the profile object.

Change rateCode in the service object from required to recommended.

Add category to the service object.

Deprecate totalFoodAndBeverageRevenue, totalLuggageRevenue, and totalOtherRevenue from guestStay object.

1.5

2017-07-21

Add accountId to the guestStay and profile objects.

1.6

2018-06-04

Change lastName from required to recommended.