{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"35080422-1f76-4e0f-aeeb-281bb8619cb7","name":"Agora API - Service Providers - Beta Version","description":"\n\n\nNOTE: This documentation has 2 major sections : The documentation section and the endpoints section. \n\n#  Agora API - Aspire\n\nAgora API is an API created to be a bidirectional communication channel between different supported PMS systems and 3rd party Service Providers (SP). This is the full REST API documentation for using the Agora endpoints to both push requests to the PMS System or Service Provider depending on the type of request. \n\n\n# Environments variables in Postman\n\n| Key | Value / Values |\n|---------------|-------|\n| environment|  qa / gateway|      \n| Api-key| {YOUR-APIKEY}     |\n| SP-Api-Key| {SP-APIKEY}  |\n| production server |  https://agora-api.azure-api.net |\n| test server |  https://agora-api-test.azure-api.net |\n\n\nWHERE:   qa = sandbox,   gateway = production\n\n# Async and Synchronous Requests\n\nRequests are made usually asynchronously and an instanceId is returned, where you can track the progress of your request with this ID through the GetStatus endpoint.\n\n![Async Example](https://uapitables.file.core.windows.net/images/async-request.png?st=2020-06-22T21%3A23%3A24Z&se=2021-06-30T21%3A23%3A00Z&sp=rl&sv=2018-03-28&sr=f&sig=tgRkxL9%2FckyfHWwi3TsH4bTZYba4Bptqon24%2BuXcFY0%3D)\n\n\n- SP endpoints have a header to signal if it is an async requests. ***All requests from SP will be async by default. ***\n\n| Key | Value / Values |\n|---------------|-------|\n| async | true / false|     \n\n**It is preferable to use the async endpoints as your code can then run non blocking to the request. **\n\n# Authentication and Authorization\n\nHTTPS is enforced on all endpoints. \n\na) Authentication is done through the subscription of the API through the developer portal:\n\nDeveloper portal:  (coming soon)\n\n\t\nAgora API Base Endpoints: \n\nsandbox:\t  https://agora-api.azure-api.net/aspire-sp-qa/\n\nproduction:\t   https://agora-api.azure-api.net/aspire-sp-gateway/\n\nPlease refer to  *Agora Service Provider on-boarding process* to get your Agora account information and/or assigned API Key delivered to you.  (see  Agora business contact for details)\n\n** This  API  key is used as a Header in every request with the header name: **Ocp-Apim-Subscription-Key** \n\n** For traceability of the transaction in error purposes, add the header key: **Ocp-Apim-Trace**    ,\nValue = true\n\n\n\n\n# Headers \n\n| Key | Value |\n|---------------|-------|\n| Ocp-Apim-Subscription-Key | {API KEY}     |\n| Ocp-Apim-Trace | True OR False     |\n| Content-Type | Application/json     |\n\n# Enums \n\n\n### TransactionStatus\n\nThis is when checking the completion status of a request through Agora API.\n\n | String       | Value | Explanation |\n |--------------|-------|------------|\n | Pending| 0     |  |\n | Completed| 1     | |\n | Incomplete | 2     | |\n | Failed| 3     | |\n\n\n### ReservationStatus\n\n | String       | Value |Explanation |\n |--------------|-------|------------|\n | Reserved | R     | |\n | Cancelled| C     | |\n | Waitlist | W     | |\n | CheckedIn / Inhouse | I     | |\n | History / Checkout | H     | |\n | Giftcard | G     | |\n | Pending | P     | (some rooms checked in, some not) |\n | Mobile Checkin | M     | |\n\n### RoomStatus\n\n | String       | Value |Explanation |\n |--------------|-------|------------|\n | Clean| 0     | |\n | Dirty| 1     | |\n | Inspected| 2| |\n | OOS/ OutOfService| 3| |\n | OOO / OutOfOrder | 4| |\n | Soldout| 5| |\n | Maintenance| 6|  |\n\n\n# Guest Mobile API Overview\n\n### Summary\n\nThe Guest Mobile API messages will be used for contactless check in/out and mobile keys.\n\n# Messages to Service Provider (Documentation)\n\n# (POST) Addons  (PropertyInventory)  \n\n###  ( Initial phase)\n\nThis message is meant to be used during the onboarding process of a property.  This data is generally considered static and only rarely changes over time. In those cases, the PMS system will explicitly send a revised list of available Add-On's. Service providers need to overwrite their related database information.\n\nNOTE: Add-on images will be provided out of bound (manually) and will be identified according to the ID of the Add-on.\n\n\n\n### Inventory Resource:\n\n\n|   Datatype   |   AttributeName   |  Details | Mandatory   | \n|--------|--------------------|---|---| \n| string|  propertyid | PMS property ID  | yes  | \n| List of InventoryItems |  inventory_list| see below  |   | can be empty\n\n### InventoryItem: \n\n|  Datatype  |   AttributeName  | Details   |  Mandatory    | \n|--------|--------------------------|---|---| \n| int    |  id                      | unique id - use this id to get corresponding image.  |  Y | \n| string |  name                    | short name  |  Y | \n| string |  description             | full description  |  Y | \n| bool   |  is_inventory_item       |  quantity is limited |  Y | \n| decimal |  price                   | basic unit price, total price must be calculated according to business rules  | Y  | \n| string |  quantity_type           | options: true/false, pick 1-9, #adult, #child, #adult+child, #nights, #adult X #nights, child X #nights, #adult+#child X #nights  |   Y| \n| string |  user_comment            | Service Provider prompts comment, e.g. Arrival time?  | Y  | \n| string |  pick_stay_day        | options: firstday of check-in, everyday, GuestPickCalDayTime  |   Y| \n| string |  availability_lower      | date start   |  Y | \n| string |  availability_higher      | date end  | Y  | \n| string |  available_days          | SMTWTFS=>1010101  |Y   | \n| string |  show_if_children        | true/false, if true: only show when #child >0   |   Y| \n| string |  for_adults_only         | true/false: only show when #child=0  |  Y | \n| List of strings |  rate_code_restrictions   |  if null available for all guests otherwise MUST be RateCode IN LIST provided, e.g.  LIST=  ['BAR', 'BAC'] |  Y | \n| List of strings |  room_type_restrictions  | if null available for all guests otherwise MUST be RoomType IN LIST Provided e.g.  LIST= ['KING', 'QUEN']  |  Y | \n\n------------------------------------------\n### Example  PMS AddOns (Inventory) posting message (to service provider)\n\n**Request**:\n\nPOST :      https://myserviceproviderdomain.com/AddOns\n\n**JSON AddOns Example Request:**\n\n```\n{\n  \"propertyid\": \"AB1234\",\n  \"inventory_list\": [\n    {\n\t    \"id\" : 1121234,\n\t\t\"name\" : \"baby crib\",\n\t\t\"description\" :  \"blue and 4 wheels\",\n\t\t\"is_inventory_item\" : true,\n\t\t\"price\" :  2.43,\n\t\t\"quantity_type\" :  4,\n\t\t\"user_comment\" : \"What is your arrival time ?\",\n\t\t\"pick_stay_day\" : 1 ,\n\t\t\"availability_lower\" : \"08/27/2020\",\n\t\t\"availabilty_higher\" : \"08/28/2020\",\n\t\t\"available_days\" : \"010101\",\n\t\t\"show_if_children\" : true,\n\t\t\"for_adults_only\" : false,\n\t\t\"rate_code_restrictons\" : [\"BAR, BAC\"],\n\t\t\"room_type_restrictions\" : [\"QUEN\"]\n    }\n  ]\n}\n\n```\n\n**JSON AddOns Example Response :**\n```\n{\n  \"success\": true OR false ,\n  \"id\": 43274832\n}\n\nResponse code success: 202 \nResponse code error : 400\n```\n\n-------------------------------------------------------------------------------------\n-------------------------------------------------------------------------------------\n\n# (POST) RoomStatus Message  \n\n### ( Events:  Room assignment, check-in and check-out )\n\nThis message is meant to notify the service provider, during the check-in process, that the property has assigned a room to the booking.  \n\n### Room status Resource:\n\n\n|   Datatype   |   AttributeName   |  Details | Mandatory   | \n|--------|--------------------|---|---| \n| string|  propertyid | PMS property ID  | Y  | \n| string|  bookingid | booking number  | yes  | \n| int    |  roomnumber| unique id   |  Y | \n| string |  roomstatus  | Clean = 0,Dirty = 1,Inspected = 2, OutOfService = 3,OutOfOrder = 4,SoldOut = 5, Maintenance = 6 |  Y | \n| string |  roomnote| comment from guest  |  Y | \n| string|  resstatus| Current status of the reservation record, char(1), R - Reserved, C - Cancelled, W - Waitlist, I - Checked in/Inhouse, H - History/Checkout, G - Gift card, P - Pending (some rooms checked in, some not) |  Y | \n\n### Example  RoomStatus posting message (to service provider)\n\n**Request**:\n\nPOST:       https://myserviceproviderdomain.com/roomstatus\n\n**RoomStatus Example JSON message request for check-in:**\n\n```\n{\n\t\"propertyid\" : \"123458\",\n\t\"roomnumber\" : \"1221\",\n\t\"bookingid\" : 9994321,\n\t\"roomstatus: \"0\",\n\t\"roomnote\" : null,\n\t\"resstatus\": \"I\"\n}\n```\n\n**RoomStatus Example JSON Message Response :**\n```\n{\n  \"success\": true OR false ,\n  \"id\": 43274832\n}\n\nResponse code success: 202 \nResponse code error : 400\n```\n\n-------------------------------------------------------------------------------------\n-------------------------------------------------------------------------------------\n\n# Messages to PMS (Documentation)\n\n\n# (POST) AddOnAvailabilityReq  Message\n\nThis message is sent by the SP to inquire on availability of inventory item addons for specific days the guest has requested to add the item. Service providers need to ensure availability of add-on's resources and must make sure to send either an updated *Extendedbooking* record or UpdateBookingAddOn message to the PMS in order to ensure that the PMS will update the inventory counts accordingly.\n\n\nAddOnAvailabilityReq  Message:\n\n| Datatype  |  AttributeName   | Details     |  Mandatory | \n|------------------|-----------------------|---|---| \n| string           |  propertyid| from mobile app instance | yes  | \n| string           |  lastname| guest last name | yes  | \n| string           |  bookingid| confirmation number or booking number  | yes  | \n| string|  correlationid| to be return on the response | yes    | \n| List of AddOnBookingItem|  addons| days within the stay requested by the | No\n| \n\n**IMPORTANT**: Make sure that Id for specific dates are at the beginning and in the same order. If no date is provided it is assumed that the AddOn resource is requested for the entire stay.\n\n\n**InventoryAddOnAvailability  Response**:\nThis message is sent as a response to an AddOnAvailabilityReq request issued from the service provider. This data contains a list of addonItemAv which contains availability for each AddOn (Id). \n\n|Datatype|   AttributeName   |  Details | Mandatory   | \n|--------|--------------------|---|---| \n| string |  propertyid | Id from PMS   |  Y | \n| string |  correlationid | CorrelationId from PMS   |  Y | \n| List of AddonItemAvailability |  addons| see below   | Y  | \n\n### AddonItemAvailability Object \n\n|   Datatype   |   AttributeName   |  Details | Mandatory   | \n|--------|--------------------|---|---| \n| int |  id | related to specific add-on item  |   | \n| boolean|  is_available| true if available on the date requested |   | \n\n** POST : https://agoraapi.com/AddOnAvailabilityReq **\n\n**Example Request**:\n\n```\n{\n    \"propertyid\": \"AB1234\",\n    \"lastname\": :\"smith\",\n    \"bookingid\" : \"122234243\",\n    \"correlationid\": \"43434543543\",\n    \"addons\": [{\n        \"id\": 754374,\n        \"begindate\": \"08-09-2020\",\n        \"enddate\": \"09-09-2020\"\n    },\n    {\n        \"id\": 874561,\n        \"begindate\": \"10-09-2020\",\n        \"enddate\": \"11-09-2020\"\n    }]\n}\n```\n\n\n### Example response\n\n **Response from PMS :**\n\n```\n{\n  \"propertyid\": \"13212312\",\n  \"bookingid\" : \"123456789\",\n  \"correlationid\" : 98722ab238382823,\n  \"addons\": [\n    {\n      \"id\": 1,\n      \"is_available\":  true\n    },\n    {\n      \"id\": 2,\n      \"is_available\" : false\n    }\n  ]\n}\n\n```\n\n-------------------------------------------------------------------------------------\n-------------------------------------------------------------------------------------\n\n#  (GET) Extendedbooking Message Request\n\nThis message sent is a ExtendedBooking inquiry request from the service providers. Service Providers will provide : a) last name of the guest  b) confirmation of booking number and c) correlationid (which usually references requester originid or mobileid).  The PMS will search through-out all properties the booking that corresponds to the confirmation number and the last name.\n\nGET Request Parameters:\n\n| Datatype  |  AttributeName   | Details     |  Mandatory | \n|------------------|-----------------------|---|---| \n| string           |  propertyid| from mobile app instance | yes  | \n| string           |  lastname| guest last name | yes  | \n| string           |  bookingid| confirmation number or booking number  | yes  | \n| string|  correlationid | to be return on the response | yes    | \n\n\n**Response**: ExtBooking resource\n\n| Datatype  |  AttributeName   | Details     |  Mandatory | \n|------------------|-----------------------|---|---| \n| string           |  correlationid        | provided by service provider used to reconcile requests and responses.  | yes  | \n| string           |  propertyid           | PMS property id  | yes  | \n| string |  bookingid| booking number  | yes    | \n| string |  folionumber          | valid only after check-in | no | \n| string           |  otareference         | if booked via channel partners  | no  | \n| string           |  resstatus            | reservation status  | yes    | \n| string           |  reslastname          |  last name of guest | yes    | \n| string           |  resfirstname         |  first name of guest | yes  | \n| string           |  resstreet            |  guest street\t |  no | \n| string           |  rescity              | guest city  | no  | \n| string           |  resstate             | guest state  |no   | \n| string           |  respostalcode        | guest postal code  | no  | \n| string           |  rescountry           |  guest country | no  | \n| string           |  resemail             |  guest email  |  no | \n| string           |  resvehicletype       |  guest vehicle type | no  | \n| string           |  resvehicleplate      |  guest vehicle plate | no   | \n| string           |  marketindicator      |  Indicates if guest has consented to receive marketing emails from hotel, tinyint data type, 0 - Always Send, 1 - Do not mail, 2 - Do not email, 3 - Do not mail or e-mail, 4 - Do not mail, 5 - Do not email, 6 - Consent Unknown |  yes | \n| string           |  resphone1            |  guest phone | no  | \n| string           |  resphone1usetype     |  home or work or mobile | no  | \n| string           |  resphone2            |  guest phone |  no | \n| string           |  resphone2usetype     |   home or work or mobile |  no | \n| string           |  sublastname          |  2nd guest last name | no  | \n| string           |  subfirstname         | 2nd guest first name  |  no | \n| string           |  substreet            | 2nd guest street  |  no | \n| string           |  subcity              | 2nd guest city  |  no | \n| string           |  substate             | 2nd guest state  | no  | \n| string           |  subcountry           | 2nd guest country  | no  | \n| string           |  subzipcode           | 2nd guest postal code  | no  | \n| string           |  subphone             | 2nd guest phone #  | no  | \n| string           |  subemail             | 2nd guest email  |  no | \n| string           |  subsubfolio          | 2nd guest account  | no  | \n| string           |  roomnumber           | will be blank prior to check-in  | no  | \n| int              |  adults               | number of adults  | yes    | \n| int              |  child                |  number of children | yes  | \n| string           |  checkin              | date of arrival  |  yes   | \n| int              |  nights               | number of nights  | yes  | \n| string           |  checkout             |  date of departure | yes    | \n| string           |  groupcode            |  if belong to a group |  no | \n| string           |  groupname            |  groupe name |  no | \n| string           |  company              | guest company  |  no | \n| string           |  bedtype              | type of bed selected  |  yes | \n| string           |  rooms                | additional rooms list  |  no | \n| string           |  reshousenote         | note from guest to PMS, can be update by service provider  |   no| \n| bool             |  latecheckout         | time, can be provided by service provider  |  no | \n| string           |  ressignatureendpoint |  url, can be provided by service provider | no  | \n| string           |  respictureendpoint   | url, can be provided by service provider  |  no | \n| bool             |  hasbeenauthenticated | can be provided by service provider, default false | no  | \n| string           |  cdtokenid            | ref to credit card on file | yes  | \n| string           |  ccpartialno          |  ref to credit card # on file | yes  | \n| string           |  expdate              | ref to credit card expiry date on file  |  yes | \n| string           |  nameoncard           |  ref to credit card name on file |   yes| \n| string           |  showrates            | boolean, if yes show rates  |  yes | \n| string           |  resratecode          | reservation done on specific rate code  |  yes | \n| decimal          |  totalroom            |  amount |  yes | \n| decimal          |  roomtax              |  amount  |  yes | \n| decimal          |  subtotal             |   amount |  yes | \n| decimal          |  dailycharge          |  amount per day |  yes | \n| decimal          |  dailytax             |  amount per day |  yes | \n| decimal          |  totalstay            |   amount |  yes | \n| decimal          |  totalpretax          |  amount  |  yes | \n| decimal          |  totaltaxes           |  amount  |  yes | \n| decimal          |  averagepernight      |  amount  |  yes | \n| decimal          |  depositamnt          |  amount  |  yes | \n| decimal          |  balancedue           |  amount  |  yes | \n| List of Extrafields |  extrafields          | To capture metadata from the guest - configuration is specific to each property  |  no | \n| List of AddOnBookedItem|  addons | see description| yes  | can be empty\n\n\n\n**Extrafield resource**:\n\n| Datatype  |  AttributeName   | Details     |  Mandatory | \n|------------------|-----------------------|---|---| \n| string           |  resextrafieldlabel| Name of the field, provided by  PMS.  | yes  | \n| string           |  resextrafield| Placeholder to save related information capture from the Guest  | yes  | \n| boolean              |  resfldsmandatory| Instructs service provider to ensure the data is captured and collected | yes    | \n\n\n### AddOnBookingItem resource:\n\n| Datatype  |  AttributeName   | Details     |  Mandatory | \n|------------------|-----------------------|---|---| \n| string           |  id| provided by service provider  | yes  | \n| string           |  begindate | date used YYYY-MM-DD| yes  | \n| string           |  enddate | date used YYYY-MM-DD| yes  | \n\n\n**Example JSON Request**:\n\nGET:  https://agorapi.com/extbookingreq?propertyid=123ASD&bookingid=123456789&lastname=brown&correlationid=98722ab238382823\n\n\n **Example JSON Response:**\n``` \n{\n\n        \"correlationid\" :  \"121313AHdk999\",\n        \"propertyid\" :  \"1234567\",\n        \"bookingid\" : 9994321,\n        \"folionumber\" : 31710,\n        \"otareference\" : \"optional\",\n        \"resstatus\" : \"R\",\n        \"reslastname\" : \"Smith\",\n        \"resfirstname\" : \"John\",\n        \"resstreet\" : \"optional\",\n        \"rescity\" : \"optional\",\n        \"resstate\" : \"reserved\",\n        \"respostalcode\" : \"optional\",\n        \"rescountry\" : \"optional\",\n        \"resemail\" : \"optional\",\n\t\t\"resvehicletype\":\"Huydai SanteFe 2016\",\n\t\t\"resvehicleplate\":\"XML102\",\n        \"marketindicator\" : \"optional\",\n        \"resphone1\" : \"optional\",\n        \"resphone1usetype\" : \"optional\",\n        \"resphone2\" : \"optional\",\n        \"resphone2usetype\" : \"optional\",\n\t\t\"sublastname\" : \"optional\",\n\t\t\"subfirstname\" : \"optional\",\n\t\t\"substreet\" :\"optional\",\n\t\t\"subcity\" : \"optional\",\n\t\t\"substate\" : \"optional\",\n\t\t\"subcountry\" : \"optional\",\n\t\t\"subzipcode\" : \"optional\",\n\t\t\"subphone\" : \"optional\",\n\t\t\"subemail\" : \"optional\",\n\t\t\"subsubfolio\" :  \"0 or 1\",\n        \"roomnumber\" : \"124\",\n        \"adults\" : 0,\n        \"child\" : 0,\n        \"checkin\" : \"2019-07-03\",\n        \"nights\" : 0,\n        \"checkout\" : \"2019-07-05\",\n        \"groupcode\" : \"optional\",\n        \"groupname\" : \"optional\",\n        \"company\" : \"optional\",\n\t\t\"bedtype\" : \"dbl\",\n\t\t\"rooms\" :  \"1\",\n\t\t\"addons\" : [ \n\t\t  {\n\t\t  \"id\" : 123,\n\t\t  \"begindate\" : \"2019-07-04\"\n\t\t  \"enddate\" : \"2019-07-04\"\n\t\t  },\n\t\t  {\n\t\t  \"id\" : 23,\n\t\t  \"begindate\" : \"2019-07-04\"\n\t\t  \"enddate\" : \"2019-07-05\"\n\t\t  }\n\t\t  ],\n\t\t\"extrafields\" : [\n\t\t  {\n        \"resextrafieldlabel\" : \"arrival time ?\",\n        \"resextrafield\" : \"11:32\",\n\t\t\"resfldsmandatory\" : true\n\t\t\t},\n\t\t  {\n        \"resextrafieldlabel\" : \"Sports team ?\",\n        \"resextrafield\" : \"answer\",\n\t\t\"resfldsmandatory\" : true,\n\t\t  },\n\t\t  {\n        \"resextrafieldlabel\" : \"What color you want?\",\n        \"resextrafield\" : \"need answer\",\n\t\t\"resfldsmandatory\" : true\n\t\t  },\n\t\t  {\n        \"resextrafieldlabel\" : \"airline info ?\",\n        \"resextrafield\" : \"answer\",\n\t\t\"resfldsmandatory\" : true\n\t\t  },\n\t\t  {\n        \"resextrafieldlabel\" : \"train info?\",\n        \"resextrafield\" : \"optional answer\",\n\t\t\"resfldsmandatory\" : false\n\t\t  },\n\t\t  {\n        \"resextrafieldlabel\" : \"optional\",\n        \"resextrafield\" : \"optional\",\n\t\t\"resfldsmandatory\" : false\n\t\t\t}\n\t\t ],\n        \"reshousenote\" : \"optional\",\n        \"latecheckout\" : false,\n        \"ressignatureendpoint\" : \"Url STRING\",\n        \"respictureendpoint\" : \"Url STRING\",\n        \"hasbeenauthenticated\" : true,\n        \"cdtokenid\" : \"AA010101202dssdsdsdj\",\n        \"ccpartialno\" : \"****4567\",\n        \"expdate\" : \"0724\",\n        \"nameoncard\" : \"John Doe\",\n\t\t\"showrates\" : \"Y\",\n        \"resratecode\" : \"optional\",\n        \"totalroom\" : 0.0,\n        \"roomtax\" : 0.0,\n        \"subtotal\" : 0.0,\n        \"dailycharge\" : 0.0,\n        \"dailytax\" : 0.0,\n        \"totalstay\" : 0.0,\n        \"totalpretax\" : 0.0,\n        \"totaltaxes\" : 0.0,\n        \"averagepernight\" : 0.0,\n        \"depositamnt\" : 0.0,\n        \"balancedue\" : 0.0\n}\n```\n# (POST)  ExtendedbookingUpdate message \n\nAn *Extendedbookingupdate* message is sent to the PMS whenever the service provider has completed the capture of all guest related information, i.e. completed the full pre-checkin phase. This is for updating an existing booking with information obtained later on.\n\n**Request**:  \n\n**POST :  https://agorapi.com/extbookingupdate**        (TO PMS)\n\n**Sample request from SP to PMS (via Agora)**:        \n\n```\n{\n\t\"correlationid\" : \"121313AHdk999\",\n\t\"propertyid\" : \"1234567\",\n\t\"bookingid\" : 9994321,\n\t\"folionumber\" : 31710,\n\t\"otareference\" : \"optional\",\n\t\"resstatus\" : \"R\",\n\t\"reslastname\" : \"Smith\",\n\t\"resfirstname\" : \"John\",\n\t\"resstreet\" : \"optional\",\n\t\"rescity\" : \"optional\",\n\t\"resstate\" : \"reserved\",\n\t\"respostalcode\" : \"optional\",\n\t\"rescountry\" : \"optional\",\n\t\"resemail\" : \"optional\",\n\t\"resvehicletype\":\"Huydai SanteFe 2016\",\n\t\"resvehicleplate\":\"XML102\",\n\t\"marketindicator\" : \"optional\",\n\t\"resphone1\" : \"optional\",\n\t\"resphone1usetype\" : \"optional\",\n\t\"resphone2\" : \"optional\",\n\t\"resphone2usetype\" : \"optional\",\n\t\"sublastname\" : \"optional\",\n\t\"subfirstname\" : \"optional\",\n\t\"substreet\" :\"optional\",\n\t\"subcity\" : \"optional\",\n\t\"substate\" : \"optional\",\n\t\"subcountry\" : \"optional\",\n\t\"subzipcode\" : \"optional\",\n\t\"subphone\" : \"optional\",\n\t\"subemail\" : \"optional\",\n\t\"subsubfolio\" : \"0 or 1\",\n\t\"roomnumber\" : \"124\",\n\t\"adults\" : 0,\n\t\"child\" : 0,\n\t\"checkin\" : \"2019-07-03\",\n\t\"nights\" : 0,\n\t\"checkout\" : \"2019-07-05\",\n\t\"groupcode\" : \"optional\",\n\t\"groupname\" : \"optional\",\n\t\"company\" : \"optional\",\n\t\"bedtype\" : \"dbl\",\n\t\"rooms\" : \"1\",\n\t\"addons\" : [\n\t{\n\t\t\"id\" : 123,\n\t\t\"begindate\" : \"2019-07-04\",\n\t\t\"enddate\" : \"2019-07-04\"\n\t},\n\t{\n\t\t\"id\" : 123,\n\t\t\"begindate\" : \"2019-07-04\",\n\t\t\"enddate\" : \"2019-07-04\"\n\t}],\n\t\"extrafields\" : [\n\t{\n\t\t\"resextrafieldlabel\" : \"arrival time ?\",\n\t\t\"resextrafield\" : \"11:32\",\n\t\t\"resfldsmandatory\" : true\n\t},\n\t{\n\t\t\"resextrafieldlabel\" : \"Sports team ?\",\n\t\t\"resextrafield\" : \"answer\",\n\t\t\"resfldsmandatory\" : true,\n\t},\n\t{\n\t\t\"resextrafieldlabel\" : \"What color you want?\",\n\t\t\"resextrafield\" : \"need answer\",\n\t\t\"resfldsmandatory\" : true\n\t},\n\t{\n\t\t\"resextrafieldlabel\" : \"airline info ?\",\n\t\t\"resextrafield\" : \"answer\",\n\t\t\"resfldsmandatory\" : true\n\t},\n\t{\n\t\t\"resextrafieldlabel\" : \"train info?\",\n\t\t\"resextrafield\" : \"optional answer\",\n\t\t\"resfldsmandatory\" : false\n\t},\n\t{\n\t\t\"resextrafieldlabel\" : \"optional\",\n\t\t\"resextrafield\" : \"optional\",\n\t\t\"resfldsmandatory\" : false\n\t}],\n\t\"reshousenote\" : \"optional\",\n\t\"latecheckout\" : false,\n\t\"ressignatureendpoint\" : \"Url STRING\",\n\t\"respictureendpoint\" : \"Url STRING\",\n\t\"hasbeenauthenticated\" : true,\n\t\"cdtokenid\" : \"AA010101202dssdsdsdj\",\n\t\"ccpartialno\" : \"****4567\",\n\t\"expdate\" : \"0724\",\n\t\"nameoncard\" : \"John Doe\",\n\t\"showrates\" : \"Y\",\n\t\"resratecode\" : \"optional\",\n\t\"totalroom\" : 0.0,\n\t\"roomtax\" : 0.0,\n\t\"subtotal\" : 0.0,\n\t\"dailycharge\" : 0.0,\n\t\"dailytax\" : 0.0,\n\t\"totalstay\" : 0.0,\n\t\"totalpretax\" : 0.0,\n\t\"totaltaxes\" : 0.0,\n\t\"averagepernight\" : 0.0,\n\t\"depositamnt\" : 0.0,\n\t\"balancedue\" : 0.0\n}\n```\n**Sample response from SP to PMS (via Agora)**: \n```\n\n```\n\n\n# (POST) AddonUpdate message \n\n\n### AddonUpdate Resource:\n\n|   Datatype   |   AttributeName   |  Details | Mandatory   | \n|--------|--------------------|---|---| \n| string |  propertyid | PMS property ID  | yes  | \n| string  |  bookingid| confirmation number or booking number  | yes  | \n| string |  lastname | guest name  | yes  | \n| List of AddonBookingItems |  addons | see below  | yes  | can be empty\n\n### AddOnBookingItem resource:\n\n| Datatype  |  AttributeName   | Details     |  Mandatory | \n|------------------|-----------------------|---|---| \n| string           |  id| provided by service provider  | yes  | \n| string           |  begindate | date used YYYY-MM-DD  | yes  | \n| string           |  enddate | date used YYYY-MM-DD| yes  | \n\nThis message is meant to be used during the Guest stay, by the Service Provider, during the stay. Prior to this update the SP must verify the availability of addon's for targetted  stay days. If inventory addon's are available the PMS will update the inventory of AddOn's and confirm success or not (if AddOn is not available for the targeted dates). In case of failure, the entire transaction will fail and no AddOn's will be removed from inventory.\n\n** Addon updates should only be called after check-in or when room is assigned. \n\n** Request URL**:    POST https://agorapi.com/addonupdate\n\n**Example JSON Request**:\n\n```\n{\n\t\"propertyid\": \"5435AB43\",\n\t\"lastname\": \"Smith\",\n\t\"bookingid\": \"547fdfdufhreu\",\n\t\"addons\" : [\n\t{\n\t\t\"id\" : 123,\n\t\t\"begindate\" : \"2019-07-04\",\n\t\t\"enddate\": \"2019-07-04\"\n\t},\n\t{\n\t\t\"id\" : 113,\n\t\t\"begindate\" : \"2019-07-05\",\n\t\t\"enddate\": \"2019-07-06\"\n\t}]\n}\n```\n\n**Example JSON Response**:\n\n```\n{\n  \"success\": true OR false ,\n  \"id\": 43274832\n}\nResponse code success: 202 \nResponse code error : 400\n\n```\n\n\n\n# (GET) Billing information \n\nThis message is sent as a response to a BillingInfo request from service provider. This data contains an updated list of all charges items. \n\nGET request parameters:\n\n| Datatype  |  AttributeName   | Details     |  Mandatory | \n|------------------|-----------------------|---|---| \n| string|  propertyid | PMS property ID  | yes  | \n| string           |  lastname| guest last name | yes  | \n| string           |  bookingid| confirmation number or booking number  | yes  | \n| string|  correlationid| to be return on the response | yes    | \n\n\nResponse parameters:\n\n### BillingInfo resource  \n\n|Datatype|   AttributeName   |  Details | Mandatory   | \n|--------|--------------------|---|---| \n| string |  propertyid | Id from PMS   |  Y | \n| string|  bookingid | booking number  | yes  | \n| List of BillingItem|  charged_items| see below   | Y  | \n\n### BillingItem \n\n|   Datatype   |   AttributeName   |  Details | Mandatory   | \n|--------|--------------------|---|---| \n| string |  item_description| Id from PMS   |  Y | \n| string|  id | PMS account code  | Y  |\n| string |  folio_number| Id from PMS   |  Y | \n| string |  subfolio_number| A,B,C or D  |  Y | \n| string |  display_date| Id from PMS   |  Y | \n| string |  room_number | related to specific billing item  | Y  | \n| string |  guest_name_origin| from venue|  Y | \n| string |  voucher|from venue   |  Y | \n| amount|  credit_amount| must be rollout result   |  Y | \n| amount|  debit_amount| must be rollout result   |  Y | \n\n##  BillingInfo Request \n\n**Example Request URL from SP to PMS (via Agora)**:\n\nGET  https://agoraapi.com/billinginforeq?propertyid=123ASD&bookingid=123456789&lastname=brown&correlationid=98722ab238382823\n\n **Example JSON BillinginfoReq Response from PMS:**\n\n```\n{\n  \"propertyid\": \"13212312\",\n  \"bookingid\" : \"543fdgf435\",\n  \"charged_items\": [\n    {\n     \"itemdescription\": \"beer\",\n      \"id\": \"1234\",\n      \"folionumber\": \"12334322\",\n       \"subfolionumber\": \"B\",\n       \"displaydate\": \"08/22/2020\",\n       \"roomnumber\": \"1234\",\n       \"guestnameorigin\": \"SPA Bob\",\n       \"voucher\": \"Miller Light\",\n       \"creditamount\" :  0.0,\n      \"debitamount\" :  23.32\n    },\n    {\n       \"itemdescription\": \"beer\",\n       \"id\": \"1234\",\n       \"folionumber\": \"12334322\",\n       \"subfolionumber\": \"C\",\n       \"displaydate\": \"08/22/2020\",\n       \"roomnumber\": \"1234\",\n       \"guestnameorigin\": \"GOLF Bob\",\n       \"voucher\": \"GOLF\",\n       \"creditamount\" :  0.0,\n      \"debitamount\" :  1234.43\n    }]\n}\n\n\n\n```\n\n# (GET) RoomStatus Request\n\nThis message is sent as a request for roomstatus info pertaining to a room.\n\nGET request parameters:\n\n| Datatype  |  AttributeName   | Details     |  Mandatory | \n|------------------|-----------------------|---|---| \n| string|  propertyid | PMS property ID  | yes  | \n| string           |  roomnumber| room number | yes  | \n| string           |  bookingid| confirmation number or booking number  | yes  | \n| string           |  correlationid | correlationid to track transaction  | yes   |\n### Example request: \n\nGET : https://agora-api.com/guestmobile/roomstatusreq/?propertyid=8464564&bookingid=6545645646&roomnumber=101\n\n### Example Response: \n\n```\n{\n\t\"propertyid\" : \"123458\",\n\t\"roomnumber\" : \"1221\",\n\t\"bookingid\" : 9994321,\n\t\"roomstatus: \"0\",\n\t\"roomnote\" : null,\n\t\"resstatus\": \"I\"\n}\n```\n\n## PMS Error-response message To service provider\n\n\n\n### PMS Error  Async. response message \n\nThis message is sent asynchronously by the PMS if a message received from the service provider can not be processed.\n\n### PMS Error Message:\n\n\n|   Datatype   |   AttributeName   |  Details | Mandatory   | \n|--------|--------------------|---|---| \n| string|  propertyid | PMS property ID  | yes  | \n| string|  bookingid| booking number  | yes  | \n| string|  correlationid| if available  | no| \n| string|  statusmessage| from PMS  |  yes |\n| int|  statuscode| PMS Error Code  |  yes | \n\n\n**PMS Error Message - POST Request To SP**:\n\nPOST       \"https://myserviceproviderdomain.com/PMSResponse\"\n\n**JSON PMS Error sample:**\n```\n{\n\t\"propertyid\" : \"123458\",\n\t\"correlationid\" : \"sdsdf21\",\n\t\"confirmationnumber\" : 9994321,\n\t\"statusmessage: \"failed\",\n\t\"statuscode\" : 9994321\n}\n```\n","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"12147570","collectionId":"35080422-1f76-4e0f-aeeb-281bb8619cb7","publishedId":"T1LSA58v","public":true,"publicUrl":"https://agora.aspire.software","privateUrl":"https://go.postman.co/documentation/12147570-35080422-1f76-4e0f-aeeb-281bb8619cb7","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"00A9B8"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.11.6","publishDate":"2020-08-31T19:53:56.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/768118b36f06c94b0306958b980558e6915839447e859fe16906e29d683976f0","favicon":"https://aspire.software/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://agora.aspire.software/view/metadata/T1LSA58v"}