MICE Integration Framework

What is it?

The MeetingBroker Integration suite of APIs enables partners to build web applications that allow properties to manage RFP receipt and response. This includes initial RFP receipt, submission of a proposal response, and communication of booking updates to the planner who sent the RFP. RFP data provided by this suite of APIs includes basic information about the RFP (Meeting Name, Start Date, Status, etc.); detailed guestroom and event pattern data; and any supporting attachments provided by the meeting planner. Once an RFP is awarded by the planner, the RFP information can be used as a foundation for a booking record.

How do I get it?

Minimum Requirements

  1. The caller must have active integration with Amadeus Group & Event Distribution (MeetingBroker).
  2. The caller must have locations that are enabled for S&C integration in MeetingBroker.

How do I use it?

The rest of this documentation gives an overview of the suggested best practice to build a powerful and effective integration with the MICE Integration Framework

Included APIs

What's Included?

  1. Authentication
  2. RFP
  3. Notifications

Note: You must be logged in with an active subscription to view these APIs. If you attempt to open the link and get a "Sorry, we can't find the page you are looking for" it is probably because you aren't logged in.

What about Security?

All MeetingBroker Integration APIs require AHWS authentication. See the authentication guide for details.

MeetingBroker AHENS Integration

S&C systems integrate with MeetingBroker (MB) through AHENS. Please refer to AHENS Guide for more information about the notification processing service. A publisher subscriber map is required for flow of events/notifications between MB and S&C Systems. MB publishes events to AHENS and S&C systems subscribe to notifications for those events from AHENS.

Figure 1 - Sample Message Exchange Through AHENS

MB publishes two types of event to AHENS

  1. RFP event - Pushed to AHENS when a new RFP arrives in MB or when an update to an existing RFP arrives in MB.
  2. TextMessage event - Pushed to AHENS when a Message arrives for an RFP either as part of Post RFP request or just as a TextMessage request.
S&C systems receive notifications from AHENS and use the data in notifications to invoke Get Rfp or Get Message endpoint.

Notifications

Summary

This notification is generated via Event Post request. It allows subscriber to retrieve RFP, Message in callback url of the response. You can poll for this notification through Amadeus Hospitality Event Notification Services (AHENS) Notification Receive API.

High Level Work Flow

A typical workflow for retrieve notifications from AHENS is given below:

  • Call Notification Receive API to retrieve notifications.
  • Once you have successfully retrieved notification, make a call to Notification Commit API to inform AHENS that the retrieved Notifications have been processed.

EntityType

Endpoint

Summary

Notification ahens/notification/receive

A call to the Notification Receive API returns a list of notifications to the caller. The result will return empty if there are no notifications available.

Notification ahens/notification/commit

The Commit method is called with a collection of NotificationIds. These are Notification identifiers present in Notifications received by the subscriber system.

Retrieve Notifications

To retrieve notifications, call Notification Receive API and you will be given a list of Notifications available for you.

Here are the details on this API:

API: Notification Receive

Type: POST

Request URL

https://api.newmarketinc.com/api/ahens/notification/receive

Request Body

The body of the request must be in a valid format acceptable by AHENS.

tenancyId String Notification subscriber may optionally specify the Tenancy Id to receive notifications that are specific to a given tenancy. If not specified, this will be retrieved from the caller’s context.
channelId String Notification subscriber may optionally specify the Channel Id to receive notifications that are specific to a given channel. If not specified, this will be retrieved from the caller’s context, which will be defaulted to 0.
locationId String Notification subscriber may optionally specify a location to receive notifications that are specific to a given location.
resourceType String Notification subscriber may optionally specify a resourceType i.e. BUSINESSDATA, RFP, Message to receive notifications that are specific to a given type of resource. Example:
  • Specifying "RFP" as a resourceType will return notifications for RFP messages successfully processed.
    • In the case of a "Turndown" RFP message, notifications are returned for both successful and unsuccessful processing.
  • "BUSINESSDATA" as resourceType will return either BDU successful or unsuccessful notifications.
limit Integer BatchSize representing the maximum number of notifications that may be returned. Default = 5000.
correlationId String A CorrelationId, is a unique identifier that is attached to a Notification receive request. This can be used to reference the request made by the Subscriber. If CorrelationId is not provided by the Subscriber, AHENS will assign a unique identifier for the Receive request. AHENS will return the correlation identifier in the HTTP response header. NOTE: This correlationId is different from the Notification’s correlationId.

In case there are more than 5000 notifications available to the caller, a maximum of 5000 Notifications will be returned at each call. A continuation token will be made available in the response header for retrieval of the remaining Notification batches. The mentioned token can be provided in the request body as a field.

    {
        "tenancyId": "1100043",
        "channelId": "367867",
        "locationId": "50042328 ",
        "resourceType": "RFP/MESSAGE/BUSINESSDATA",
        "limit": 0,
        "correlationId": "6f508869-5d35-4f45-b735-b73e1cb50c39"
    }

Successful notification response

A call to the Notification Receive API returns a list of available Notifications to the caller. The result will return empty if there are no updates available. Below you may find a sample response to the mentioned API.

    [
      {
            "id":"5cee283ba3710e02c4dd1249",
            "eventId":"5cee283ba3710e02c4dd1248",
            "pubSubMapId":"100001_15842_MESSAGE_50067008_220029_62317_MESSAGE_GET_O50067008",
            "eventDetail":{
                "resourceId":"4F83B36D-666A-E911-80DE-005056A15482",
                "resourceType":"MESSAGE",
                "locationId":"50067008",
                "subject":"",
                "eventDataLink":"https://api-qa.newmarketinc.com/api/dev/mb/rfp/861B92FB-5DC7-497B-AEB5-3867A6708CF0/message?4F83B36D-666A-E911-80DE-005056A15482",
                "publishedOn":"2019-05-29T10:10:59.393Z"
                },
            "correlationId":"481C8D8F-5096-4515-A7C6-74B3D82B8E61",
            "status":"Received",
            "lastStatusChangeOn":"2019-05-29T06:42:13.852Z",
            "lastSubscribedOn":"2019-05-29T06:42:13.852Z",
            "receivedCount":1,
            "trackingId":"91ea05ac-3eee-4ff6-97cc-c5a47f258a13",
            "createdOn":"2019-05-29T06:35:39.68Z",
            "modifiedOn":"2019-05-29T06:42:13.852Z",
            "recordStatus":"Active"
      }
    ]
    

Unsuccessful notification response

Unsuccessful notification response payload holds an additional attribute 'eventData' with other attributes defined in successful payload. It shows unsuccessful message posted to AHENS.

            "eventData":[
                   {
                     "Status":400,
                     "Title":"Error Occurred. Please contact your system administrator",
                     "Detail":"Error Occurred. Please contact your system administrator"
                   }
                 ]
            
Notification Receive Diagram

Confirm that notifications have been received and processed

When you have finished processing the notifications, you’ll need to confirm this with AHENS, so that those notifications won’t be delivered to you second time. To do this you will need to commit the Notifications you received earlier. Simply post the Notifications you received back to the Notification Commit API to commit them, indicating that all processing is complete.

The commit request is treated as an explicit acknowledgment by the subscriber system that Notifications has been received successfully.

Commit Notification

API: Notification Commit

TYPE: HTTP POST

Request URL

https://api.newmarketinc.com/api/ahens/notification/commit

Request Body

Notification commit request contains identifiers of notifications that are to be committed. These identifiers can be found in the notifications received by the subscriber.

{
  "notificationIds": [
    "string"
  ],
  "correlationId": "string"
}

The Commit method is called with a collection of NotificationIds. These are Notification identifiers present in Notifications received by the subscriber system. Collection of Notification identifiers (List required): Notification subscriber must supply a collection of Notifications identifiers.

Restage Notification

When the Recieve API method is called, the Notifications are put in the Received state. If after a period of time (configured during initial setup) these Notifications have not been Commited, these Notifications will be restaged to the New state, allowing them to be Received again. Only Notifications in the New state can be Received via Notification Receive API.

Each time a Notification is Received, the Notification ReceivedCount is incremented. If you Receive a Notification with a ReceivedCount greater than one, that Notification has gone through the restage workflow due to not being Committed before the Restage Check timer has expired.

If the ReceivedCount is incremented more than the maximum allowed (defaults to five), the Notification will be put in a Failed state. These Notifications can no longer be Received, and will no longer be processed in the Notification workflow. If you would like Receive your Failed Notifications, contact your Amadeus Partner Success representative and they will restage them for you.

Once you retrieve a notification, you must commit it if you have successfully processed it. If you do not commit the notification after an hour, that same notification will be returned to you on your next polling cycle.

Retrieve RFP from MeetingBroker

Note: All the RFP APIs require AHWS authentication. See the authentication guide for details.

Retreive an RFP using the RFP endpoint and pass in a Rfpid

Request URL

https://api.newmarketinc.com/api/mb/rfp/{rfpid}
                

Here is an example of what the JSON payload returned will look like. There are 3 high level nodes in the reponse:

  1. Data: Contains the RFP information
  2. Dictionaries: Is not used at this time by this API
  3. CorrelationId: Is the sessionid for the call

Get RFP response example

    {
        "data": {
            "rfpId": "a73de041-dc68-4dac-8957-4baf53440271",
            "mbRfpId": 123456789,
            "externalRfpId": "da-getrfpv3-afterfdcfix",
            "channel": "Newmarket QA Prod Sandbox GSE Channel",
            "additionalInformation": [
                {
                    "type": "Text",
                    "name": "AdditionalInfoName1",
                    "value": "MeetingBroker"
                },
                {
                    "type": "Text",
                    "name": "AdditionalInfoName2",
                    "value": "Additional Text 2"
                }
            ],
			"auditInformation": {
				"createByUser": "Newmarket QA Prod Sandbox GSE Channel",
				"createDate": "2019-03-27T14:15:16.75Z",
				"lastModifiedDate": "2019-03-27T14:15:16.797Z"
			},
            "attachmentUrl": "https://my-qa.meetingbroker.com/MeetingBroker/Message/RfpAttachments.aspx?guid=11745D1A-EE8E-4EA6-B55C-E97AEDB07AD0",
            "eventBlock": {
                "alternateStartDates": [
                    {
                        "date": "2019-04-15T19:06:27.46Z",
                        "rank": 1
                    }
                ],
                "beverageBudget": 0,
                "comments": "For: New RFP ID",
                "eventRequirements": [
                    {
                        "dayNumber": 1,
                        "startTime": "10:00",
                        "endTime": "11:00",
                        "externalEventType": "Unknown:EventTypeC",
                        "externalEventSetupType": "Unknown:ExternalEventSetupTypeC",
                        "roomSize": 501,
                        "attendeeQuantity": 11,
                        "isTwentyFourHourHold": true,
                        "comments": "This event is specific to Day 1"
                    }
                ],
                "sizeUnitOfMeasure": "Feet",
                "startDate": "2019-04-13T19:06:27.46Z"
            },
            "meetingInfo": {
                "agencyProfile": {
                    "companyName": "TestAgency",
                    "addressLine1": "#A Line1",
                    "addressLine2": "#B Road1",
                    "addressLine3": "Barely1",
                    "url": "http://StarSite1.com",
                    "phoneNumber": "555-123-4541",
                    "phoneExtension": "12",
                    "faxNumber": "555-123-5551",
                    "email": "abc@star1.com",
                    "cityRegion": "Bostons1",
                    "stateProvince": "New Jersey",
                    "postalCode": "634761",
                    "externalCountry": "US",
                    "dunsNumber": "Auto56789",
					"contact": {
						"lastName": "QA",
						"firstName": "Newmarket",
						"externalContactId": "0035000000PyQulAAF",
						"addressLine1": "Irish Village",
						"addressLine2": "Glasgow",
						"addressLine3": "Test",
						"city": "Portsmouth",
						"countryCode": AA,
						"country": AU,
						"email": "mbtestuser@newmarket.com",
						"stateProvince": "AA",
						"postalCode": "03801",
						"phoneNumber": "123-123-1234",
						"phoneExtension": "12",
						"faxNumber": "123-456-1234",
						"jobTitle": "VP, Facilities",
						"title": "PP",
						"suffix": "PP"
					}
                },
                "currencyId": 1,
                "attendeeQuantity": 14,
                "companyProfile": {
                    "companyName": "TestCompany",
                    "addressLine1": "#B Line1",
                    "addressLine2": "# C Road1",
                    "addressLine3": "White1",
                    "url": "http://World1.com",
                    "phoneNumber": "785-343-7531",
                    "faxNumber": "785-343-7581",
                    "email": "abc@world1.com",
                    "cityRegion": "Bostons1",
                    "stateProvince": "New York",
                    "postalCode": "44341",
                    "externalCountry": "US",
                    "externalSicCode": "Unknown:3746P",
                    "dunsNumber": "Auto56789",
					"contact": {
						"lastName": "QA",
						"firstName": "Newmarket",
						"externalContactId": "0035000000PyQulAAF",
						"addressLine1": "Irish Village",
						"addressLine2": "Glasgow",
						"addressLine3": "Test",
						"city": "Portsmouth",
						"countryCode": AA,
						"country": AU,
						"email": "mbtestuser@newmarket.com",
						"stateProvince": "AA",
						"postalCode": "03801",
						"phoneNumber": "123-123-1234",
						"phoneExtension": "12",
						"faxNumber": "123-456-1234",
						"jobTitle": "VP, Facilities",
						"title": "PP",
						"suffix": "PP"
					}
                },
                "externalCurrency": "USD",
                "externalMeetingType": "Unknown:Unknown:MeetingTypeC",
                "isAgencyPrimaryContact": true,
                "meetingName": "da-getrfpv3-afterfdcfix",
                "numberOfAtendeesAtLargestEvent": 10,
                "numberOfEvents": 3,
                "numberOfNights": 1,
                "peakRooms": 1,
                "referenceNumber": "111111",
                "respondByDate": "2019-04-08T19:06:27.46Z",
                "startDate": "2019-04-13T19:06:27.46Z",
                "totalBudget": 1001
            },
            "messageUrls": [
                "/rfp/221d5a57-ca0e-46c1-bf4d-0f8be9569edd/message?ids=aaef41ac-6067-e911-80de-005056a15482",
                "/rfp/221d5a57-ca0e-46c1-bf4d-0f8be9569edd/message?ids=abef41ac-6067-e911-80de-005056a15482",
                "/rfp/221d5a57-ca0e-46c1-bf4d-0f8be9569edd/message?ids=02906b29-6267-e911-80de-005056a15482"
            ],
			"proposalUrl": "https://my-qa.meetingbroker.com/MeetingBroker/RFP/RFPProposalChoice.aspx?enc=dnmQzjTgUF2uFTeyWoq72t9dJm1W2TXoEGYO8Za4sxGDtvX%2feaINAMS0BTzRA90q",
            "questions": [
                {
                    "questionText": "How Many Cuisines are available?",
                    "isQuestionAnswered": false,
                    "category": "Food Choices",
                    "questionType": "string"
                },
                {
                    "questionText": "How Many Types of Soft Drinks are available?",
                    "isQuestionAnswered": false,
                    "category": "Beverage Choices",
                    "questionType": "string"
                }
            ],
            "releaseDate": "2019-04-03T19:07:31.403Z"
            "rfpTeamDetail": [
                {
                    "assignmentMethod": "SubscriptionAssignment",
                    "businessOwnerRoleType": "Other",
                    "phone": "555-914-8095",
                    "email": "kaarabia@newmarketinc.com",
                    "name": "Aarabia, Karen"
                },
                {
                    "assignmentMethod": "Default",
                    "businessOwnerRoleType": "RfpOwner",
                    "phone": "603-436-7500",
                    "email": "alicia.smith@newmarketinc.com",
                    "name": "Smith, Alicia"
                },
                {
                    "assignmentMethod": "BusinessData",
                    "businessOwnerRoleType": "BusinessOwner",
                    "phone": "603-436-7500",
                    "email": "alicia.smith@newmarketinc.com",
                    "name": "Smith, Alicia"
                }
            ],
            "roomBlock": {
                "startDate": "2019-04-13T19:06:27.46Z",
                "alternateStartDates": [
                    {
                        "date": "2019-04-15T19:06:27.46Z",
                        "rank": 1
                    }
                ],
                "budgetedRoomRate": 501,
                "comments": "For: New RFP",
                "roomRequirements": [
                    {
                        "roomDesignation": "RunOfHouse",
                        "dayNumber": 1,
                        "singleQuantity": 3,
                        "doubleQuantity": 5,
                        "tripleQuantity": 1,
                        "quadQuantity": 1,
                        "comments": "Four rooms of Run of House Room Type are booked for Day 1"
                    },
                    {
                        "roomDesignation": "RunOfHouse",
                        "dayNumber": 2,
                        "singleQuantity": 2,
                        "doubleQuantity": 2,
                        "tripleQuantity": 2,
                        "quadQuantity": 2,
                        "comments": "Four rooms of Standard Room Type are booked for Day 2"
                    },
                    {
                        "roomDesignation": "RunOfHouse",
                        "dayNumber": 3,
                        "singleQuantity": 3,
                        "doubleQuantity": 1,
                        "tripleQuantity": 1,
                        "quadQuantity": 1,
                        "comments": "Four rooms of Double_Double Room Type are booked for Day 3"
                    },
                    {
                        "roomDesignation": "RunOfHouse",
                        "dayNumber": 4,
                        "singleQuantity": 4,
                        "doubleQuantity": 3,
                        "tripleQuantity": 3,
                        "quadQuantity": 3,
                        "comments": "Four rooms of Suite Room Type are booked for Day 4"
                    }
                ]
            },
		    "competingLocations": [
				{
				  "name": "QA The Newmarket Plymouth Hotel",
				  "city": "Plymouth",
				  "stateProvince": null,
				  "country": "UNITED STATES"
				}
			],
            "sender": {
                "siteId": -1
            },
            "sites": [],
            "status": "New"
        },
        "dictionaries": {},
        "correlationId": "3c34fb5c-a312-4fd8-8e72-4d80aac3f1a9"
    } 

    

RFP contract for the top level

The fields and their data type within the RFP response object


RFP
Data Type Field Name
Guid RfpId
String ExternalRfpId
String Channel
List<AdditionalInformation> AdditionalInformation
String AttachmentUrl
EventBlock EventBlock
MeetingInfo MeetingInfo
List<String> MessageUrls
List<Question> Questions
DateTime? ReleaseDate
RoomBlock RoomBlock
Sender Sender
List<Site> Sites
String Status

RFP contracts second level

These are the contracts used within the top level RFP response object
AdditionalInformation
Data Type Field Name
AdditionalInfoValueType Type
String Name
String Category
String Value
EventBlock
Data Type Field Name
List<AlternateStartDate> AlternateStartDates
Decimal? BeverageBudget
String Comments
List<EventRequirement> EventRequirements
Decimal? FoodBudget
Decimal? OtherBudget
Decimal? RentalBudget
Decimal? ResourceBudget
String SizeUnitOfMeasure
DateTime StartDate
Decimal? TotalEventBudget
MeetingInfo
Data Type Field Name
Profile AgencyProfile
List<AlternateStartDate> AlternateStartDates
Int32? CurrencyId
Int32? AttendeeQuantity
List<Commission> Commissions
Profile CompanyProfile
List<Comment> MeetingComments
String ExternalCurrency
String ExternalLeadSource
String ExternalMarketSegment
String ExternalMeetingType
bool IsAgencyPrimaryContact
String MeetingName
String MeetingSeriesName
Int32? NumberOfAtendeesAtLargestEvent
Int32? NumberOfEvents
Int32? NumberOfNights
Int32? PeakRooms
String PromotionalCode
String ReferenceNumber
DateTime RespondByDate
DateTime StartDate
Decimal? TotalBudget
Question
Data Type Field Name
String QuestionText
bool IsQuestionAnswered
String Answer
Int32? QuestionId
String Category
String Section
Int32? QuestionType
List<ResponseChoice> ResponseChoices
List<ResponseUnit> ResponseUnits
RoomBlock
Data Type Field Name
DateTime StartDate
List<AlternateStartDate> AlternateStartDates
Decimal? BudgetedRoomRate
String Comments
List<RoomRequirement> RoomRequirements
Sender
Data Type Field Name
int? SiteId
LocationIdentifier LocationIdentifier
String UserFirstName
String UserLastName
String UserEmailAddress
String ExternalUserName
Site
Data Type Field Name
int? Siteid
LocationIdentifier LocationIdentifier
bool AllowsRedirect
String ParentType
bool SendToParent
String SalesUserEmail
String SalesUserFirstName
String SalesUserLastName
List<Answer> Answers
DateTime StartDate
String Comments
String SecondaryExternalRfpId
ResponseInstructionType ResponseInstructionType
bool AllowResponseInstructionOverride

RFP contracts third level

These contracts are used within the second level RFP response objects

AlternateStartDate
Data Type Field Name
DateTime Date
int Rank
Answer
Data Type Field Name
String AnswerText
String QuestionId
String SelectedResponseChoices
String SelectedResponseUnits
Attachment
Data Type Field Name
Guid AttachmentId
String FileName
Guid MessageId
String ContentType
byte[] FileData
Comment
Data Type Field Name
String CommentType
String Text
Commission
Data Type Field Name
Double? Amount
DateTime CommissionedOn
String PayableTo
EventRequirement
Data Type Field Name
Int32? DayNumber
String StartTime
String EndTime
String ExternalEventType
String ExternalEventSetupType
String ExternalEventSetupTypeId
Int32? RoomSize
Int32? AttendeeQuantity
Boolean IsTwentyFourHourHold
String Comments
LocationIdentifier
Data Type Field Name
String LocationId
LocationIdentifierTypes LocationIdentifierType
Profile
Data Type Field Name
String CompanyName
String AddressLine1
String AddressLine2
String AddressLine3
String Url
String PhoneNumber
String PhoneExtension
String FaxNumber
String Email
String CityRegion
String StateProvince
String PostalCode
String ExternalCountry
String ExternalSicCode
List<Commission> Commissions
Contact Contact
String ExternalProfileId
String IATANumber
String DUNSNumber
ResponseChoice
Data Type Field Name
String Response
Boolean IsSelected
String ExternalResponseChoiceId
ResponseUnit
Data Type Field Name
String Unit
Boolean IsSelected
String ExternalResponseUnitId
RoomRequirement
Data Type Field Name
String RoomDesignation = "RunOfHouse"
Int32? DayNumber
Int32? SingleQuantity
Int32? DoubleQuantity
Int32? TripleQuantity
Int32? QuadQuantity
String Comments

Get Messages from MeetingBroker

Note: All the RFP APIs require AHWS authentication. See the authentication guide for details.

To retreive one or more RFP Messages for a specific RFP you use the Message endpoint and pass in the RfpId and one or more messageids on the query string, separated by a comma.

Request URL

https://api.newmarketinc.com/api/mb/rfp/{rfpid}/message?ids={messageId},{messageid}
        

Here is an example of what the JSON payload returned will look like. There are 3 high level nodes in the reponse:

  1. Data: Contains Messages which is a list of messages
  2. Dictionaries: Is not used at this time by this API
  3. CorrelationId: Is the sessionid for the call

Message response example

The response example contains the collection of messages corresponding to the requested Ids and includes an example of a 404 error where the API could not find one of the sent in messageids.


{
    "data":
        {
        "messages": [
            {
                "status": 200,
                "attachmentUrls": [
                    "rfp/221d5a57-ca0e-46c1-bf4d-0f8be9569edd/message/aaef41ac-6067-e911-80de-005056a15482/attachment/5ac301e2-8983-41fc-a1cf-05a1a3331e84",
                    "rfp/221d5a57-ca0e-46c1-bf4d-0f8be9569edd/message/aaef41ac-6067-e911-80de-005056a15482/attachment/8ea3fccd-cf6c-40fb-b78e-e41af8b4c4fc"
                ],
                "to": "Smith, Alicia",
                "from": "Chandler, LeeAnn",
                "subject": "New RFP",
                "meetingName": "FDC MICE 1",
                "contactName": "Buffet, Jimmy",
                "contactCompany": "Buffet",
                "rfpId": "221d5a57-ca0e-46c1-bf4d-0f8be9569edd",
                "rfpMessageId": "aaef41ac-6067-e911-80de-005056a15482",
                "messsageType": "NewRFP"
            },
            {
                "status": 200,
                "attachmentUrls": [
                    "rfp/221d5a57-ca0e-46c1-bf4d-0f8be9569edd/message/02906b29-6267-e911-80de-005056a15482/attachment/f29d3537-6e2a-4e9d-97b3-c88c42fbe9b3",
                    "rfp/221d5a57-ca0e-46c1-bf4d-0f8be9569edd/message/02906b29-6267-e911-80de-005056a15482/attachment/72708065-cd2f-4d67-8a8a-ce602e741786",
                    "rfp/221d5a57-ca0e-46c1-bf4d-0f8be9569edd/message/02906b29-6267-e911-80de-005056a15482/attachment/fe6fef41-839b-4586-851b-2805f885802b"
                ],
                "to": "Smith, Alicia",
                "from": "Chandler, LeeAnn",
                "subject": "Updated RFP",
                "meetingName": "FDC MICE 2",
                "contactName": "Buffet, Jimmy",
                "contactCompany": "Buffet",
                "rfpId": "221d5a57-ca0e-46c1-bf4d-0f8be9569edd",
                "rfpMessageId": "02906b29-6267-e911-80de-005056a15482",
                "messsageType": "UpdatedRFP"
            }
        ],
        "errors": [
            {
                "status": 404,
                "code": 6003,
                "title": "Item/data not found or data does not exist",
                "detail": "Item/data cannot be found for the item presented in the request.",
                "source": {
                   "parameter": "rfp/221d5a57-ca0e-46c1-bf4d-0f8be9569edd/message/aaef41ac-6067-e911-80de-005056a15484"
                }
            }
        ]
    } ,     
    "dictionaries": {},
    "correlationId": "3c34fb5c-a312-4fd8-8e72-4d80aac3f1a9"
}

    

Message response contract

The contract below contains the fields and the data types within the Message


RfpMessage
Data Type Field Name
HttpStatusCode Status
List<String> AttachmentUrls
String To
String From
String Subject
String MeetingName
String ContactName
String ContactCompany
String Body
String FromEmail
Guid RfpId
Guid RfpMessageId
String MesssageType

Get Attachment from MeetingBroker

Note: All the RFP APIs require AHWS authentication. See the authentication guide for details.

You can retreive a RFP Message Attachment by using the Attachment endpoint. You will need to pass in three ids: the Rfpid and the Messageid the Attachment belongs to along with the Sttachnmentid.

Request URL

https://api.newmarketinc.com/api/mb/rfp/{rfpid}/message/{messageid}/attachment/{attachmentid}
            

Here is an example of what the JSON payload returned will look like. There are 3 high level nodes in the reponse:

  1. Data: Contains the Attachment information
  2. Dictionaries: Is not used at this time by this API
  3. CorrelationId: Is the sessionid for the call

The response body will contain specific attachment data.

Attachment response example


{
    "data":
    {
        "attachmentId": "f29d3537-6e2a-4e9d-97b3-c88c42fbe9b3",
        "fileName": "testfile.txt",
        "messageId": "02906b29-6267-e911-80de-005056a15482",
        "contentType": "text/plain",
        "fileData": "dGVzdCBmaWxl"
    },      
    "dictionaries": {},
    "correlationId": "3c34fb5c-a312-4fd8-8e72-4d80aac3f1a9"
}

  

Attachment response contract

The contract below contains the fields and the data types within the Attachment

Attachment
Data Type Field Name
Guid AttachmentId
String FileName
Guid MessageId
String ContentType
byte[] FileData

Search for RFPs in MeetingBroker

API: RFP

Type: HTTP GET

To retrieve a list of one or more RFPs from MeetingBroker use this endpoint and pass in search criteria parameters on the query string.

Note: All the RFP APIs require AHWS authentication. See the authentication guide for details.

Request URL

https://api.newmarketinc.com/api/mb/rfp
            

Request Examples

https://api.newmarketinc.com/api/mb/rfp?mbRfpId=99999
https://api.newmarketinc.com/api/mb/rfp?rfpId=00000000-0000-0000-0000-000000000000
https://api.newmarketinc.com/api/mb/rfp?meetingName=Meeting1
https://api.newmarketinc.com/api/mb/rfp?startDateStartRange=01-01-2019&startDateEndRange=12-01-2019
https://api.newmarketinc.com/api/mb/rfp?createDateStartRange=01-01-2019&createDateEndRange=12-01-2019
https://api.newmarketinc.com/api/mb/rfp?lastModifiedDateStartRange=01-01-2019&lastModifiedDateEndRange=12-01-2019
https://api.newmarketinc.com/api/mb/rfp?locationIdentifierType=LocationCode&locationIds=L1212,L1213
https://api.newmarketinc.com/api/mb/rfp?currentRfpStatus=Proposed,Awarded
https://api.newmarketinc.com/api/mb/rfp?rfpHistoricalStatusStartDateRange=01-01-2019&rfpHistoricalStatusEndDateRange=12-01-2019&rfpHistoricalStatusIds=Proposed,Awarded
https://api.newmarketinc.com/api/mb/rfp?businessOwners[0].name=John&businessOwners[0].emailAddress=jdow@amadeus.com&businessOwners[0].businessOwnerRoleTypes=BusinessOwner,GlobalAccountOwner
https://api.newmarketinc.com/api/mb/rfp?stakeholders[0].contactFirstName=john&stakeholders[0].contactLastName=dow&stakeholders[0].organizationName=TestCompany&stakeholders[0].stakeholderTypes=Company
https://api.newmarketinc.com/api/mb/rfp?createDateStartRange=01-01-2019&createDateEndRange=12-01-2019&pageLimit=10&pageOffset=5&countRecords=true
https://api.newmarketinc.com/api/mb/rfp?mbRfpId=99999&fields=rfpId
   		    

Request Headers

Ocp-Apim-Subscription-Key String Subscription key which provides access to this API.
Authorization String OAuth 2.0 access token obtained from Authentication API.

Request Parameters

A request must include at least one of the query string parameters listed below. In order for an RFP to be returned in the response it needs to meet all of the criteria specified in the request.

mbRfpId Integer The MeetingBroker system primary key for an RFP, a max of 1 RFP will be returned when this parameter is specified in the request.
rfpId String(Guid) The MeetingBroker system unique identifier for an RFP, a max of 1 RFP will be returned when this parameter is specified in the request.
meetingName String Returns RFPs where meeting name contains the input string, length must be greater than or equal to 6 characters.
startDateStartRange String(DateTime) Returns RFPs where the start date is greater than or equal to the input date.
startDateEndRange String(DateTime) Returns RFPs where the start date is less than or equal to the input date.
createdDateStartRange String(DateTime) Returns RFPs where the create date is greater than or equal to the input date.
createdDateEndRange String(DateTime) Returns RFPs where the create date is less than or equal to the input date.
lastModifiedDateStartRange String(DateTime) Returns RFPs where the last modified date is greater than or equal to the input date.
lastModifiedDateEndRange String(DateTime) Returns RFPs where the last modified date is less than or equal to the input date.
locationIdentifierType String Used to specify the type of identifiers passed in the locationIds parameter, valid values: 'MeetingBroker', 'External', 'LocationCode', and 'HotelUGI'
locationIds String Used in combination with locationIdentifierType, returns RFPs that have been sent to the locations specified. Specify one value or multiple values in a comma-separated list.
currentRfpStatus String Returns RFPs that have a current status matching any of the values specified. Specify one or more values in a comma-separated list, valid values include: 'Draft', 'Published', 'Viewed', 'TurnedDown', 'Redirected', 'Proposed', 'Awarded', 'SelfAwarded', 'Withdrawn', 'Duplicate', 'Cancelled', 'Definite', 'Complete', 'BusinessLost'.
rfpHistoricalStatusIds String Used in combination with rfpHistoricalStatusStartDateRange and rfpHistoricalStatusEndDateRange. Returns RFPs that have matched any of the status values within the date range specified. Specify one more values in a comma-separated list, valid values include: 'None', 'Draft', 'Published', 'Viewed', 'TurnedDown', 'Redirected', 'Proposed', 'Awarded', 'SelfAwarded', 'Withdrawn', 'Duplicate', 'Cancelled', 'Deleted', 'New', 'Updated'.
rfpHistoricalStatusStartDateRange String Used in combination with rfpHistoricalStatusIds, returns RFPs where the status change date is greater than or equal to the input date.
rfpHistoricalStatusEndDateRange String Used in combination with rfpHistoricalStatusIds, returns RFPs where the status change date is less than or equal to the input date.
businessOwners[0..n].name String Used in combination with emailAddress and businessOwnerRoleTypes, returns RFPs which have assigned business owners matching the specified criteria.
businessOwners[0..n].emailAddress String Used in combination with name and businessOwnerRoleTypes, returns RFPs which have assigned business owners matching the specified criteria.
businessOwners[0..n].businessOwnerRoleTypes String Used in combination with name and emailAddress, returns RFPs which have assigned business owners matching the specified comma-separated list of businessOwnerRoleTypes, valid values include: 'RfpOwner', 'BusinessOwner', 'GlobalAccountOwner', 'GeneralManager', 'DirectorOfSales', 'NationalSalesAdministrator', 'ManagementCompanyAdministrator', 'BrandManager', 'LocalAccountOwner', 'RegionalOwner', 'Other'
stakeholders[0..n].contactFirstName String Used in combination with contactLastName, organizationName, and stakeholderTypes, returns RFPs which have stakeholders matching the specified criteria.
stakeholders[0..n].contactLastName String Used in combination with contactFirstName, organizationName, and stakeholderTypes, returns RFPs which have stakeholders matching the specified criteria.
stakeholders[0..n].organizationName String Used in combination with contactFirstName, contactLastName, and stakeholderTypes, returns RFPs which have stakeholders matching the specified criteria.
stakeholders[0..n].stakeholderTypes String Used in combination with contactFirstName, contactLastName, and organizationName, returns RFPs which have stakeholders matching the specified comma-separated list of stakeholderTypes, valid values include: 'Sender', 'Company', 'Agency'
countRecords Boolean Set this value to "true" to include the total item count in the search results, default is "false".
pageLimit Integer Number of items per page to return in the search results, valid values: 1 - 30, default is 25.
pageOffset Integer Set the page number to include in the search results, value must be greater then zero, default is 1.
fields String A comma-separated list of field names to include in the response, default is all fields defined by the response model.

Response

The JSON payload returned in the response will contain these high level nodes:

  1. data: Contains array of RFPs that match the specified search criteria
  2. dictionaries: Is not used at this time by this API
  3. correlationId: The session identifier for the call
  4. meta: Additional data about paging details, ie. current page, page count, total pages, and links to next and/or previous page

Response Example

A call to the API will return a list of one or more RFPs that match each of the requested search criteria parameters. The data returned for each RFP is a summarized view of the RFP, not a complete view.

{
    "data": [
        {
            "rfpId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "mbRfpId": 8344143,
            "externalRfpId": "a0wd00000019nDBAAY",
            "channel": "StarCite Marketplace",
            "hasAttachments": true,
            "locationName": "Denver location",
            "agencyName": "Agency example",
            "agencyContactLastName": "Doe",
            "agencyContactFirstName": "John",
            "companyName": "Company example",
            "companyContactLastName": "Doe",
            "companyContactFirstName": "Paul",
            "meetingName": "Amadeus meeting",
            "totalGuestrooms": 102,
            "totalRevenue": 248064,
            "averageRate": 2432,
            "peakRooms": 102,
            "referenceNumber": 323,
            "currencyCode": "USD",
            "releaseDate": "2019-11-14T21:19:17.537Z",
            "startDate": "2019-11-14T21:19:17.537Z",
            "primaryRfpOwnerName": "John Doe",
            "primaryStakeholderContactName": "John Doe",
            "primaryStakeholderOrganizationName": "Organization example",
            "publishDate": "2019-11-14T21:19:17.537Z",
            "publishedBy": "Location example",
            "milestoneActual": "Awarded",
            "status": "Awarded",
            "businessDataStatusType": "Prospect",
            "self": "/api/mb/rfp/3fa85f64-5717-4562-b3fc-2c963f66afa6"        
        }
    ],
    "dictionaries": {},
    "correlationId": "3c34fb5c-a312-4fd8-8e72-4d80aac3f1a9",
    "meta": 
        {
            "totalCount": 1,
            "pageSize": 25,
            "currentPage": 1,
            "totalPages": 1
        }
}

            

Turndown RFP from MeetingBroker

Note: All the RFP APIs require AHWS authentication. See the authentication guide for details.

You can turndown a RFP by using the Turndown endpoint. You will need to pass an Id: RfpGuid and POST the additional payload data fields as:

  • LostBusinessReason: Indicates the reason for turning down the RFP by property.
  • Comment: Additional comments presented by the user when turning down the RFP.

API Workflow

The following diagram illustrates the process for the turn down.

  1. The caller requests the access token.
  2. The system response contains the token.
  3. The caller submits a turndown POST request with the access token.
  4. The system response indicate success or failure.

Request URL

https://api.newmarketinc.com/api/mb/rfp/{rfpid}/turndown
            

The returned JSON payload contains these high level nodes:

  • Data: Contains the turndown information
  • Dictionaries: Is not used at this time by this API
  • CorrelationId: Is the sessionid for the call

The request and response body contain specific turndown RFP data.

Turndown RFP Request Example

    {
        "lostBusinessReason": "reason for turning down the RFP by property",
        "comment": "Additional comments by user while turning down the RFP"
    }		
		    

Turndown Response contract

The contract below contains the fields and the data types within the Turndown

    { 
        "statusCode": 200,
        "message": "OK"
    }

Turndown
Data Type Field Name
guid rfpId
int statusCode
string lostBusinessReason
string comment

Overview of Get Proposal

This Proposal endpoint (GET) is a Public REST API that can be utilized to Get Proposals from MeetingBroker. The purpose is to provide channels partners/planners with near real-time proposal data associated with MeetingBroker RFP.

API Workflow

The following diagram illustrates the process for Get Proposal.

  1. The caller requests the access token.
  2. The system response contains the token.
  3. The caller sends a GET request using a valid OAuth2 token and Proposal Guid.
  4. Amadeus System synchronously replies with Proposal information with 200 ok response.

Note: All the GetProposal API require AHWS authentication. See the authentication guide for details.

Get Proposal Endpoint

You can get Proposals by using this endpoint. You will need to pass a Proposal GUID using a GET operation.

Request URL

https://api.newmarketinc.com/proposal/v1/proposal/{id}

Request Headers

Ocp-Apim-Subscription-Key String Subscription key which provides access to this API.
Authorization String Valid access token obtained from Authentication API.

Request

https://api.newmarketinc.com/proposal/v1/proposal/{id} 

Proposals can be accessed by specifying Proposal GUID.

Required Fields

The following fields are required when submitting a request to the endpoint.

Field Type Notes
ProposalGuid GUID This is the Proposal GUID provided by the integrated system and must be a GUID.

Requirements & Configuration

Models

Below is a guide to the various attributes required to build the data contract for getting a Proposal.

The GetProposal endpoint allows the user to get proposal information from MeetingBroker. The following sections describe the Proposal response returned by the GetProposal endpoint:

 

The following sections include further details about each block.

getProposalResponse

Details about the getProposalResponse are listed in this section.

Field
Description
Example
proposal Details of the proposal that is sent by the receiver in response to a RFP.
messages List of messages with respect to RFP and proposal.
questions List of Questions with respect to RFP and proposal.

 

proposal

Details about the proposal are listed in this section.

Field
Description
Example
meetingId External Rfp Id is provided by the RFP creator. It corresponds to the meeting name given by the creator. ExternalRfpGetProposal
locationIdentifier Identifier of the Location for the RFP. Refer locationIdentifier object.
rfpStatus Current status of the RFP(i.e., Drafted, Deleted, New, Updated, Awarded, SelfAwarded, Withdrawn, Cancelled, TurnedDown, Redirected). New
guestRoomBlock Describes all the details of the rooms requested. Refer GuestRoomBlock object.
eventBlock Describes all the details of the events requested. Refer eventBlock object.
meetingInfo This object represnets all the info related to the meeting i.e. being scheduled.
rfpId Identifier of the RFP. 11111111
proposalId Unique Identifier of the proposal that is related to the RFP. 22222222
sendingUser Email of the sending user. john@xyz.com
sendingLocation Identifer of the location that redirected the RFP. 10000003
redirectedLocationName Name of the Location for which the RFP is routed to. Amadeus-BLR
redirectedLocationId Identifier of the Location for which the RFP is routed to. 10000002
assignedUser Email address to whom the RFP is assigned. abc@gmail.com

 

locationIdentifier

Details about the locationIdentifier are listed in this section.

Field
Description
Example
locationId Identifier of the location for the RFP 50042508
locationIdentifierType Type of LocationId. Limited to External and MeetingBroker. For GetProposal, It is limited to MeetingBroker. MeetingBroker

 

guestRoomBlock

Details about the guestRoomBlock are listed in this section.

Field
Description
Example
startDate AlternateStartDate of the meeting specified by the external user. 2020-06-09T01:58:41.28
budgetedRoomRate The rate that has been proposed for rooms. 2000
commentsText Comments about GuestRoom. Not Avaliable
guestRoomAvailabilities List all the details related to availablity of guest room Refer GuestRoomAvailabltiy block.

 

guestRoomAvailablity

Details about the guestRoomAvailablity are listed in this section.

Field
Description
Example
dayNumber Sequential number of the day within the booking. 1
roomTypeName Name of the Room Type. Limited to : Run_Of_House, Standard, Double_Double, Suite, Complimentary_Run_Of_House, Complimentary_Standard, Complimentary_Double_Double, Complimentary_Suite, External. Run_Of_House
guestRoomOccupancies List details of the GuestRoomOccupancy. Refer GuestRoomOccupancy object.
commentsText Comments about the room availablity. Rooms are available as requested.

 

guestRoomOccupancy

Details about the guestRoomOccupancy are listed in this section.

Field
Description
Example
name Name of the GuestRoom. SinglesAvailable
roomQuantity Room Quantity that is available. 3
rate Rate of the room i.e. is available. 2500
bedQuantity Quantity of beds needed of each type. 4
occupancy Occupancy for each room 3

 

eventBlock

Details about the eventBlock are listed in this section.

Field
Description
Example
startDate StartDate of the Event as mentioned by the user. 2020-06-09T01:58:41.28
commentText Comments about events. Three events are to be conducted.
eventAvailabilities Details regarding the Availablities for the event. Refer EventAvailablity object.
prices Prices for foood, beverage etc requested for event. Refer Prices object.

 

eventAvailablity

Details about the eventAvailablity are listed in this section.

Field
Description
Example of Fieal Description
dayNumber Within the event block this is the sequential number for any given event. 2
startTime Start time associated for the event. 10:00
endTime End time associated with any given event. 17:30
eventTypeName Event type is a string field and associated with any given event (i.e., General Session, Breakout, Breakfast, Dinner). General Session
eventSetupTypeName It is a string field which indicates the table and chair configuration associated with any given event (i.e., Theater, Conference, Classroom, Rounds of Ten). Classroom
roomSize Size of Room Space needed for your event. 2500
attendeeQuantity Number of Attendees associated with a given event that will be at a given event. 125
commentsText Comments about the Event The event will take place in phases.
isPrivateRoom Specifies whether a room is private or not. TRUE
isTwentyFourHourHold Room is on 24 hour hold so that it is not used for any other event before or after the start/end times. TRUE

 

prices

Details about the prices are listed in this section.

Field
Description
Example
name Name for Costs quoted for various entities. Food Cost
value Costs quoted for various entities. 2100

 

meetingInfo

Details about the meetingInfo are listed in this section.

Field
Description
Example
meetingName Meeting name given by the external user. BrightMinds AGM Meet -2020
referenceNumber User-specified reference number provided by the account or third-party agency associated with the booking. 5748291
startDates List of Start Dates for the booking. Limited to up to 3, Start Date, Alternate Start Date 1, Alternate Start Date 2, ordered by sequence number. See AnnotatedDate object for more information.
attendeeQuantity Number of attendees associated with the business opportunity. 15
respondByDate Date that customer needs a Response by. 2020-06-09T01:58:41.28
comments List of Comments for the Meeting. These could be ResponseInstructions or MeetingHistory comments. See Comment Object for more information. An alternate date within a week is acceptable.
meetingSeriesName Name to be used for the RFP series of events. BrightMinds AGM Meet -2020
numberOfEvents Total number of events for the business data. 10
numberOfNights Total number of nights for the business data. 7
meetingType Type of meeting associated with RFP (i.e., conference, wedding, meeting). Conference
currency Currency of the RFP as specified by the account or third-party agency sending the RFP. INR
leadSource Source of RFP (e.g., channel, phone, email, etc.) Email
marketSegment Market segment associated with RFP (e.g., Corporate, Government, SMERF.) Corporate
peakRooms Number of peak rooms for the business data as specified by the account or third-party agency associated with the booking. 3
numberOfAttendeesAtLargestEvent Number of attendees at the largest event. 500
promotionalCode The code associated with a discounted program or event associated with an RFP's target location. 1

 

annotatedDate

Details about the annotatedDate are listed in this section.

Field
Description
Example
name Descriptive name associated with the date specified. StartDate
value Sequence order of the date in a date list. 2020-06-09T01:58:41.28
sequence Sequence order of the date in a date list. 1

 

comment

Details about the comment are listed in this section.

Field
Description
Example
name Type or Name of the comment. MeetingHistoryComments
text Value for the comment. Please notify us about Day 1 Meeting Info Prep.

 

messages

Details about the messages are listed in this section.

Field
Description
Example
from Name of the sender sending the proposal. Newmarket QA Prod Sandbox GSE Channel
to User to whom the proposal is sent. hanna@gmail.com
subject Subject of the message. BrightMinds AGM Meet -2020
meetingName Name of the meeting for which proposal is sent. BrightMinds AGM
contactName Name of the contact person. John Peter
contactCompany Name of the contact company. BrightMinds
body Content of the message that is sent. This is the Automation Test text message body for Meeting : TestRfooo Sent using Newmarket.MBTestCenter.
fromEmail Email of the user sending the message. john@gmail.com
date Date on which the message is sent. 2020-06-09T01:58:41.28
marketingText Text used for marketing purpose
marketingHtml HTML for marketing.
attachments Attachments that are attached with the messsage.

 

attachment

Details about the attachment are listed in this section.

Field
Description
Example
fileName Name of the file that is attached with the attachment. BrightMindsAGM2020
contentType Type of the content that is being attached. docx
fileContent Content of the file that is being attached.
fileData Data that is being attached.

 

questions

Details about the questions are listed in this section.

Field
Description
Example
questionText Text for the Question. How Many Cuisines are available?
isAnswerRequired Is an answer required for the Question. FALSE
answer
questionId Unique identifier of the question that was posted. 1
category Category for the Question. Food Chocies
section Section name for the Question. Section One
questionType Type of Question. Limited to Date, MultiSelect, Numeric, SingleSelect and Text.

 

answer

Details about the answer are listed in this section.

Field
Description
Example
answerText Contains the answers given for a question. Cuisine Available :Italian , Indian,Continental.
selectedResponseChoices List of ResponseChoices for the Question. Refer ResponseChoice object.
selectedResponseUnits List of ResponseUnits for the Question. Refer ResposneUnit object.

 

responseChoice

Details about the responseChoice are listed in this section.

Field
Description
Example
response String containing response content. Mocktail
externalResponseChoiceId ID associated with pre-determined answer choices for inbound RFP questions.

 

responseUnit

Details about the responseUnit are listed in this section.

Field
Description
Example
unit Unit of measurement of response Litre
externalResponseUnitId ID associated with answers for inbound RFP questions.

Heartbeat for MICE APIs

Note: All the MICE APIs require AHWS authentication. See the authentication guide for details. The AHWS authentication user is required to have a Heartbeat Monitoring role in order to access this endpoint.

You can check the availibility of the MICE Api services using the Heartbeat endpoint associated with the microservice.

Request URL

For the Rfp service which includes: Get Rfp, Get Messages, Get Attachment, Search Rfps, Turndown Rfps endpoints

     https://api.newmarketinc.com/api/mb/rfp/rfpheartbeatservice/heartbeat
            
For the Business Data service which includes: Business Data Update

     https://api.newmarketinc.com/api/mb/booking/businessdataheartbeatservice/heartbeat
            
For the Get Proposal service which includes: Get Proposal endpoint

     https://api.newmarketinc.com//proposal/proposalheartbeatservice/Health/Heartbeat
            

Here is an example of what the JSON payload returned will look like

  1. Data: Contains the Heartbeat information
  2. CorrelationId: Is the sessionid for the call

The response body will contain basic Heatbeat "Thump. Thump."

Heartbeat response example


{
    "data": "Thump. Thump.",
    "correlationId": "a01b4847-5408-4bd7-8385-27af6e048a1e"
}
  

Errors and Troubleshooting

When you submit a request to the Business Data Update API endpoint with the correct credentials and it passes the required schema validations, an HTTP 200 - OK / 202 success response is returned. Otherwise, there is an error. Inspect the Http Status Code and the request body to determine what failed and how to correct your API call.

Error Response Example

    {
        "errors": [
            {
              "status": 404, Httpstatus corresponding to this error.
              "code": 6003, The Amadeus Hospitality error code corresponding to this error.
              "title": "Item/data not found or data not existing, "
              "detail": "Item/data cannot be found for the item presented in the request.",
              "source": {
                   "parameter": "rfp/221d5a57-ca0e-46c1-bf4d-0f8be9569edd/message/aaef41ac-6067-e911-80de-005056a15484"
                }
            }
        ]
    }
                

HTTP Status Codes

The following table lists the response codes you may encounter and how to troubleshoot problems.

Code Description Troubleshooting
200 Success The server has successfully processed the request.
202 Success Your request has been successfully processed.
207 Success The server successfully processed the request. The recipient needs to consult the contents of the multi-status response body for further information about the success or failure of the individual resource operations.
400 The message body is either missing or could not be understood. Check to make sure the payload contains the correct datatypes and any required fields are present
401 The request did not include the correct authentication. Token could have timed out.
403 The server understood the request but is not able to fulfill because of insufficient permission.

If your call to the authentication API returns a 403 - Forbidden code, check the error property in the response body to see identify what was not accepted:

  • access_denied - There is an incorrect username/password pair. The user might not exist or the password provided was wrong.
  • unauthorized_client - There is incorrect information in the client_id and client_secret fields. Ensure you are using the correct values that you received from Amadeus Hospitality when you acquired your credentials.
404 The requested resource was not found.
405 The requested method is not allowed. You may have called the endpoint with the incorrect HTTP method such as GET instead of POST or POST instead of PUT.
409 The request could not be completed due to a conflict with the current state of the target resource.
413 The requested payload sent is too large (i.e., too many bytes).
422 There are validation failures with the payload. (e.g., status must not be empty). Please check response status for information identifying the field that caused the validation failure.
429 Rate limit is exceeded. Try again in 60 seconds.
500 Internal server error. Try submitting your request again.
503 The service is temporarily unavailable. If the length of the delay is known, a Retry-After header is given. It is recommended that you delay for this interval before sending another request to the service. If no Retry-After is provided, you should handle as a 500 error. Try submitting your request again.

Calling OAuth

These calls all use an OAuth token, not a Bearer token.

The most common error status code you will get from the OAuth service is a 403 - Forbidden. The error property in the response body will tell you what was not accepted.

  • access_denied means you have an incorrect Username and Password pair. The user might not exist or the password provided was wrong.

  • unauthorized_client means there is incorrect information in the client_id and client_secret fields. Ensure you are using the correct values that you received from Amadeus Hospitality when you acquired your credentials.

You may also get a 405 - Method Not Allowed if you called an endpoint with an incorrect HTTP method such as a GET instead of POST.

Troubleshooting

Most 500 status codes are temporary, and normal service should return after a few seconds or minutes. You should retry a call in these instances.

If you are consistently receiving 500 status codes, you can use information in the response to help our Support team track down the error faster. The response Header will contain the following keys:

  • Ni-TrackingId
  • Ni-CorrelationId
These values can greatly decrease the time it will take to identify issues.

Rate Limits

What to expect?

There is a Rate Limit across the product as a whole, for any single subscription key being used of 500 calls in 60 seconds. Heartbeat has a limit of 4 calls in 60 seconds. Once this limit is reached any subsequent calls will be rejected with a status of 429 with the below response body:

{ 
    "statusCode": 429, 
    "message": "Rate limit is exceeded. Try again in 60 seconds." 
}
            

Once the provided wait time has been reached, calls will be processed again as normal.