Meeting and Event Supply Distribution

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, communication of booking updates to the planner who sent the RFP, and submission of business summary updates. 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 Meeting and Event Supply Distribution

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.

Overview of Business Data Update

This Business Data Update endpoint is a Public REST API to support updating of the business data included in the RFP by any authorized S&E system. The purpose is to allow S&E systems to provide planners with near real-time booking updates on business associated with MeetingBroker RFPs.

API Workflow

The following diagram illustrates the process for update business data.

  1. Using a previously obtained authentication token, the caller submits a request to the Business Data Update endpoint to update the business data in a previously submitted RFP.
  2. Amadeus' MeetingBroker returns a response indicating if the payload was accepted for processing or not.
  3. MeetingBroker validates and processes the data included in the requests.
  4. The user can poll for result notifications by using the Notification API.
  5. Once the notifications have been processed and persisted on sending channel, the caller commits the result using the Commit method.
  6. The Business Data is updated, and the company or third-party agency associated with the booking can poll/get update notifications.

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

Business Data Update Endpoint

You can update the Business Data of a RFP by using the Business Data Update endpoint. You will need to pass an Id: RfpGuid and perform the PUT with the UpdateBusinessDataRQ.

Request URL

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

Request Headers

Content-Type String Media type of the body sent to the API. It should be "application/json" for this PUT request.
Ocp-Apim-Subscription-Key String Subscription key which provides access to this API.
Authorization String >Valid access token obtained from Authentication API.

Request Body

The Request body will contain UpdateBusinessDataRQ fields to be updated. This PUT endpoint requires a full overlay of the payload.


Required Fields

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

Field Type Notes
ExternalBookingId string This is the booking ID provided by the integrated system it will need to be a number and not alphanumeric. The format is integer.integer example: 202.303.
BusinessStatus string Current status of business reflected in the integrated system.

 

UpdateBusinessRQ

The API includes the business data fields which you can update with the BDU API. These are included in the UpdateBusinessRQ section of the JSON. When you look at the JSON, notice that there are the following blocks of fields for which values can be updated:

  • BusinessDataInfo - Information about the booking business services provided by the integrated system.
  • MeetingInfo - Information about any included meetings, from the number of attendees to the number of events and nights.
  • EventBlock - Details about any included events.
  • RoomBlock - Information about the included guest rooms.
  • Profile - Information about the booking company or associated travel agency, for example address, DUNS number, phone, and commission to be paid to the company or third-party agency associated with the booking.
  • EventRequirementBusinessData - Detailed information about each event included in the event block.
  • RoomAvailability - Details about booked guest room information contained in the room block.
  • Contact - Information for contacting the company or third-party agency associated with the booking, such as name, address, phone, sales and catering ID.
  • OtherIncomeItem - Details about a BusinessData other income item.

The following sections include further details about each block.

 

BusinessData

Field Description Example
businessCreationDate Date the business record was created in the integrated system. 2019-03-27
businessDataInfo Indicates stage of business lifecycle. Blocked
businessOwnerEMail Email of the individual assigned the business opportunity. ghind@globetravel.com
businessStatus

Current status of business reflected in the integrated system.

Cancelled

comments

Business-related comments provided by RFP receiver.

Please notify us about day 1 prep requirements.

externalBookingId

Booking ID provided by the integrated system. 123.456

externalLostBusinessReason

Business was turned down or cancelled by the property.

Proximity to airport

isPickupComplete Completed by integrated system. False
lostToCity City to which the business was lost. Portsmouth

lostToHotel

Hotel to which the business was lost. Portsmouth Inn & Hotel
meetingInfo Contains information about the meeting. MeetingInfo
otherIncomeItems Contains information about other income items for the business. OtherIncomeItem

 

BusinessDataInfo

This block adds the details for BusinessDataInfo.

Field Description Example
businessDataType Provides snapshot of guestroom and event data during each stage of the booking lifecycle. Options: Agreed, PickedUp, Actual, Blocked. Actual
eventBlock Refers to the event details in the Event Block.  
roomBlock Refers to guest room details in the Room Block.  

 

MeetingInfo

This block adds the details about the meeting.

Field Description Example
agencyProfile Name, address, and contact for RFP travel agency. Madge Bell at The Martindale Agency, 1500 Westgate St., Los Angeles, CA
attendeeQuantity Number of attendees associated with the business opportunity. 15
commission Percentage commission to be paid to the company or third-party agency associated with the booking. 2.2
companyProfile Name, address,contact for company associated with the business opportunity. Dick York at The Martindale Agency, 1500 Westgate St., Los Angeles, CA
externalCurrency External currency of the RFP as specified by the company or third-party agency associated with the booking. USD
externalLeadSource

Source of RFP (e.g., channel, phone, email, etc.)

Phone

externalMarketSegment

Market segment associated with RFP (e.g., Corporate, Government, SMERF.) Corporate
externalMeetingType Type of meeting associated with RFP (i.e., conference, wedding, meeting). conference
generalComments Comments provided by RFP recipient regarding group history or up-coming stay. Annual event for group.
destinationComments: Comments from/for the hotel. The destination was requested by the CEO.
isAgencyPrimaryContact Is the company or third-party agency associated with the RFP to be contacted? True
isCommissionable Will commission be paid to company or third-party agency associated with the booking? True
meetingName Meeting associated with the RFP Acme Sales Quarterly Planning
meetingHistoryComments Historical information on the company that may assist the property recipient. Has provided these searches to other companies in this industry.
numberOfAttendeesAtLargestEvent Number of attendees at the largest event. 240
numberOfEvents Total number of events for the business data. 5
numberOfNights Total number of nights for the business data. 3
peakRooms Number of peak rooms for the business data as specified by the company or third-party agency associated with the booking. 7
referenceNumber User-specified reference number provided by the company or third-party agency associated with the booking. 5748291
startDate Start date of the booking. 2019-03-27

 

Event Block

The Event Block is a list of of events associated with the booking.

Field Description Example
eventRequirementBusinessDataList Refers to the EventRequirementBusinessData block.  
startDate Date of the first booking event. 2019-03-20

 

RoomBlock

This includes any details specific to the room block.

Field Description Example
startDate Start date of the first room night associated with the booking. 2019-03-27
roomAvailabilities Refers to block of guest rooms associated with the booking.  

 

Profile

Address information of the agency or company associated with the booking.

Field Description Example
addressLine1 Line 1 of the address of the company or third-party agency associated with the booking. 77 New Hampshire Ave
addressLine2 Line 2 of the address of the company or third-party agency associated with the booking. Apartment 1
addressLine3 Line 3 of the address of the company or third-party agency associated with the booking. Building A
cityRegion City/region of the address of the company or third-party agency associated with the booking. Portsmouth
companyName The name of the company or third-party agency associated with the booking. Galaxy Planning Inc.
contact Refers to Contact node.  
dunsNumber DUNS number for the company or third-party agency associated with the booking. 123456789
email The email address of the company or third-party agency associated with the booking. agency-director@Amadeus.com
externalCountry The country of the company or third-party agency associated with the booking. USA
faxNumber The fax number of the company or third-party agency associated with the booking. 123-123-1234
phoneNumber The phone number of the company or third-party agency associated with the booking. 123-123-1234
postalCode The postal code of the company or third-party agency associated with the booking. 01324
stateProvince The state/province of the company or third-party agency associated with the booking. NH
url The website URL of the company or third-party agency associated with the booking. www.examplesite.com

 

EventRequirementBusinessData

This is a detailed listing of events associated with the business data type (e.g., agreed, blocked, picked up, and actual)

Field Description Example
attendeeQuantity Number of Attendees associated with a given event that will be at a given event. 125
beverageCosts This is the beverage cost associated with a given event as specified by the company or third-party agency associated with the booking. 75.00
dayNumber Within the event block this is the sequential number for any given event. 1
endTime End time associated with any given event. 11:00 AM
externalEventType Event type associated with any given event (i.e., General Session, Breakout, Breakfast, Dinner). Breakout
externalEventSetupType Table and chair configuration associated with any given event (i.e., Theater, Conference, Classroom, Rounds of Ten). Theater
foodCosts Food cost associated with a given event. 500.00
otherCosts Other costs associated with a given event. 300.00
rentalCosts Rental cost associated with a given event. 850.00
resourceCosts Resource cost associated with a given event. 100.00
startTime Start time associated with any given event. 9:00 AM

 

RoomAvailablity

This section details the rooms booked.
Field Description Example
dayNumber Within the event block this is the sequential day number for any given event with booked rooms. 1
doublesAvailable Quantity of booked double-occupancy rooms. 10
doublesRate Rate with booked double-occupancy rooms. 130.00
quadsAvailable Quantity of booked quad-occupancy rooms available. 5
quadsRate Rate with booked quad-occupancy rooms. 210.00
roomType Run_Of_House, Standard Double_Double, Suite Run_Of_House
singlesAvailable Quanity of single occupancy rooms booked. 15
singlesRate Rate with booked single-occupancy rooms. 159.00
triplesAvailable Quantity of triple occupancy rooms booked. 4
triplesRate Rate with booked triple-occupancy rooms. 150.00

 

Contact

Details about the contact at the the company or third-party agency associated with the booking are listed in this section.

Field Description Example
addressLine1 Line 1 of the address for contact at the the company or third-party agency associated with the booking. 75 New Hampshire Ave
addressLine2 Line 2 of the address for contact at the the company or third-party agency associated with the booking. Bulding A
addressLine3 Line 3 of the address for contact at the the company or third-party agency associated with the booking. Suite 2
cityRegion City/region of the address for contact at the the company or third-party agency associated with the booking. Boston
email Email address of the contact at the the company or third-party agency associated with the booking. jank@galaxy.com
faxNumber Fax number of the contact at the the company or third-party agency associated with the booking. 978-555-5555
firstName First name of the contact at the the company or third-party agency associated with the booking. Jane
externalContactId External ID of the contact at the the company or third-party agency associated with the booking. 51235
externalCountry External country of the address for the contact at the the company or third-party agency associated with the booking. USA
jobTitle External job title of the contact at the the company or third-party agency associated with the booking. Planner
lastName Last name of the contact at the the company or third-party agency associated with the booking. Kendall
phoneExtension Phone extension of the contact at the the company or third-party agency associated with the booking. 501
phoneNumber Phone number of the contact at the the company or third-party agency associated with the booking. 888-555-5555
postalCode Postal code of the address for the contact at the the company or third-party agency associated with the booking. 03801
stateProvince State/province of the address for the contact at the the company or third-party agency associated with the booking. MA
title Title of the contact at the the company or third-party agency associated with the booking. Director of Marketing

 

OtherIncomeItem

This block contains Other Income information.

Field Description Example
description A brief summarization of the Other Income Item. BCP Food Service Charge
quantity The number of Other Income Items required. 280.00
price The cost of the Other Income item. 14.8000
externalPricingPer Describes the pricing unit. For example, per event, per meal, or per day. Person
revenue The Quantity multiplied by the Price. 750.0000
externalRevenueType The revenue category associated with the Other Income Item. Guestroom

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 Supply Distribution APIs

Note: All the SupplyMICE 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.