Before guests reserve a room, they often want to know details about the available properties. The sample code below shows you how to pull this information to store in your database.
To retrieve property info, first send an initial Property Extracts request. If the call is successful, the response will be returned as HTTP 206 partial content, with data for the first range of properties. Send additional requests to obtain data for the remaining properties.
Partners may choose to call the Content API based on their needs (once daily/weekly/etc.) so that latest content is available to them.
NOTE: This API is not meant to handle high volume and should not be called as part of a guest’s shopping flow. The static property data delivered through this API is meant to be stored by the partner.
NOTE: This sample code uses Basic Authentication. You do not need to make a call to obtain an application token – instead, authentication is done within the transaction call.
The response will include the following types and statuses.
Facility Types | Facility Statuses |
---|---|
|
|
Please refer to the table below for the current usage of property status.
Facility Statuses | Usage Status |
---|---|
O | Available to shop and book |
S, T | Should not be used until/unless the status returns to O |
P, U | Can be added to the system for future use, but should not be used until the status changes to O |
Additional information on customizing Content requests is available at Property Content | Hilton Dev Portal for documentation.
Initial Request
NOTE: For recursive logic to fetch all available property information when HTTP206 Partial content is returned on initial request please refer to sample code provided under Subsequent Request section.
GET https://kapip-s.hilton.io/hospitality-partner/v2/content/propsextracts?offset=0&limit=50
Content-Type: application/json
Authorization: "Basic BASE64_ENCODED_CLIENT_ID_AND_SECRET"
Response Code : 206
Response Header:
content-range: items 0-49/7000
Response Body:
[{
"ctyhocn": "CSGHCHT",
"locale": "en_US",
"meetingrooms": [],
"policy": {
"acceptedCreditCards": [
{
"depositAcccepted": true,
"guaranteeAccepted": true,
"paymentAccepted": true,
"paymentMethod": {
"code": "DS",
"name": "Discover - DS",
"paymentId": 23,
"type": "creditCard",
"updatedTime": "2020-07-10T22:38:55.119Z"
}
},
{
"depositAcccepted": true,
"guaranteeAccepted": true,
"paymentAccepted": true,
"paymentMethod": {
"code": "AX",
"name": "American Express - AX",
"paymentId": 16,
"type": "creditCard",
"updatedTime": "2020-07-10T22:38:52.483Z"
}
},
{
"depositAcccepted": true,
"guaranteeAccepted": true,
"paymentAccepted": true,
"paymentMethod": {
"code": "CA",
"name": "Mastercard - CA",
"paymentId": 37,
"type": "creditCard",
"updatedTime": "2020-07-10T22:38:53.160Z"
}
},
{
"depositAcccepted": true,
"guaranteeAccepted": true,
"paymentAccepted": true,
"paymentMethod": {
"code": "VI",
"name": "Visa - VI",
"paymentId": 30,
"type": "creditCard",
"updatedTime": "2020-07-10T22:38:52.370Z"
}
},
{
"depositAcccepted": true,
"guaranteeAccepted": true,
"paymentAccepted": true,
"paymentMethod": {
"code": "DC",
"name": "Diners Club - DC",
"paymentId": 22,
"type": "creditCard",
"updatedTime": "2020-07-10T22:38:52.742Z"
}
},
{
"depositAcccepted": true,
"guaranteeAccepted": true,
"paymentAccepted": true,
"paymentMethod": {
"code": "JC",
"name": "Japan Credit Bureau - JC",
"paymentId": 27,
"type": "creditCard",
"updatedTime": "2020-07-10T22:38:52.705Z"
}
},
{
"depositAcccepted": true,
"guaranteeAccepted": true,
"paymentAccepted": true,
"paymentMethod": {
"code": "MC",
"name": "MasterCard - MC",
"paymentId": 28,
"type": "creditCard",
"updatedTime": "2020-07-10T22:38:52.785Z"
}
}
],
"ctyhocn": "CSGHCHT",
"guaranteeCancelPolicy": [],
"hasInRoomHSIA": true,
"hasPublicWireless": true,
"locale": "en_US",
"oversoldPolicy": {
"arrangeforCompetitiveHotel": true,
"payOneFreeNight": true,
"reimburse": true
},
"registrationPolicy": {
"checkinTime": "15:00",
"checkoutTime": "11:00",
"earlyDeparture": false,
"earlyDepartureFee": 0,
"frontDeskCheckout": true,
"id": 3072258,
"lateCheckOut": true,
"lateCheckOutFee": 0,
"preRegisteredCheckin": true,
"restaurantCheckOut": false,
"videoCheckOutAvailable": false,
"zipCheckin": true,
"zipCheckout": true
},
"smokingPolicy": {
"hundredPctNonSmoking": true,
"numNonSmokingFloors": 4,
"smokingPolicyDesc": "A fee of up to 250 USD will be assessed for smoking in a non-smoking room. Please ask the Front Desk for locations of designated outdoor smoking areas."
},
"updatedTime": "2021-08-12T16:01:10.985Z"
},
"propCode": "CSGHC",
"props": {
"addressLine1": "3035 Stelzer Road",
"brand": {
"code": "HT",
"name": "Home2 Suites by Hilton",
"updatedTime": "2021-05-21T00:41:10.018Z"
},
"chain": {
"code": "HT",
"name": "Home2 Suites by Hilton",
"updatedTime": "2020-07-10T22:38:22.726Z"
},
"city": "Columbus",
"country": {
"code": "US",
"name": "United States",
"updatedTime": "2020-07-28T20:44:03.292Z"
},
"ctyhocn": "CSGHCHT",
"digitalKey": false,
"fbFullService": false,
"hasConnectedRoom": false,
"locale": "en_US",
"locationDetails": {
"airport": [],
"areaLocators": [
{}
],
"ctyhocn": "CSGHCHT",
"locale": "en_US",
"nearbyCorporations": [],
"onlineLatitude": 40.034778,
"onlineLongitude": -82.910896,
"pointsofInterest": [],
"timeZone": "GMT-4.00",
"transportServices": [],
"updatedTime": "2021-03-19T11:17:12.776Z"
},
"marketTier": "moderate",
"postalCode": "43219",
"productLines": [
{
"productLineDescription": "All Suite"
},
{
"productLineDescription": "Extended Stay"
},
{
"productLineDescription": "Focused Service"
}
],
"propCode": "CSGHC",
"propDetail": {
"accessibilityFeatures": {
"amenities": [
{
"amenityId": 154,
"description": "Chaise Lounge",
"updatedTime": "2020-07-10T22:38:08.350Z"
},
{
"amenityId": 148,
"description": "Seating Area with Sofa",
"updatedTime": "2020-07-10T22:38:11.484Z"
},
{
"amenityId": 113,
"description": "In-Room Fitness Videos",
"updatedTime": "2020-07-10T22:38:11.994Z"
},
{
"amenityId": 35,
"description": "Kitchenette",
"updatedTime": "2020-07-10T22:38:12.229Z"
}
],
"ctyhocn": "CSGHCHT",
"hotelAttributes": [
{
"attributeId": 1282,
"description": "Accessible transportation with advance notice",
"updatedTime": "2020-07-10T22:38:42.584Z"
},
{
"attributeId": 1277,
"description": "Accessible registration desk",
"updatedTime": "2020-07-10T22:38:42.750Z"
},
{
"attributeId": 1268,
"description": "Accessible route from the accessible public entrance to the registration area",
"updatedTime": "2020-07-10T22:38:42.830Z"
},
{
"attributeId": 1269,
"description": "Accessible route from the accessible public entrance to the accessible guestrooms",
"updatedTime": "2020-07-10T22:38:42.983Z"
},
{
"attributeId": 1286,
"description": "Accessible business center",
"updatedTime": "2020-07-10T22:38:43.105Z"
},
{
"attributeId": 1276,
"description": "Accessible guest rooms with mobility features with entry or passage doors that provide 32” of clear width",
"updatedTime": "2020-07-10T22:38:43.225Z"
},
{
"attributeId": 1284,
"description": "Accessible exercise facility",
"updatedTime": "2020-07-10T22:38:43.263Z"
},
{
"attributeId": 1272,
"description": "Accessible route from the hotel’s accessible public entrance to the exercise facilities",
"updatedTime": "2020-07-10T22:38:43.340Z"
},
{
"attributeId": 1279,
"description": "Accessible parking spaces for cars in the self-parking facility",
"updatedTime": "2020-07-10T22:38:43.459Z"
},
{
"attributeId": 1280,
"description": "Van-accessible parking in the self-parking facility",
"updatedTime": "2020-07-10T22:38:43.535Z"
},
{
"attributeId": 1267,
"description": "Accessible public entrance",
"updatedTime": "2020-07-10T22:38:43.576Z"
},
{
"attributeId": 1274,
"description": "Accessible route from the hotel’s accessible public entrance to the business center",
"updatedTime": "2020-07-10T22:38:43.689Z"
},
{
"attributeId": 1285,
"description": "Accessible swimming pool",
"updatedTime": "2020-07-10T22:38:43.728Z"
},
{
"attributeId": 1273,
"description": "Accessible route from the hotel’s accessible public entrance to the swimming pool",
"updatedTime": "2020-07-10T22:38:43.764Z"
},
{
"attributeId": 1287,
"description": "TTY for guest use",
"updatedTime": "2020-07-10T22:38:43.841Z"
},
{
"attributeId": 1271,
"description": "Accessible route from the hotel’s accessible entrance to the meeting room/ballroom area",
"updatedTime": "2020-07-10T22:38:43.880Z"
},
{
"attributeId": 1289,
"description": "Closed captioning on televisions or closed captioning decoders",
"updatedTime": "2020-07-10T22:38:44.069Z"
}
],
"locale": "en_US",
"safetyFeatures": [
{
"description": "Hotel complies with ADA Guidelines",
"featureId": 67,
"updatedTime": "2020-07-10T22:39:01.975Z"
},
{
"description": "Accessible elevators",
"featureId": 6,
"updatedTime": "2020-07-10T22:39:02.493Z"
},
{
"description": "Audible smoke alarms",
"featureId": 19,
"updatedTime": "2020-07-10T22:39:02.570Z"
},
{
"description": "Accessible parking",
"featureId": 5,
"updatedTime": "2020-07-10T22:39:04.549Z"
},
{
"description": "Grab bars in bathroom",
"featureId": 4,
"updatedTime": "2020-07-10T22:39:04.946Z"
},
{
"description": "Bathroom doors at least 32 inches wide",
"featureId": 2,
"updatedTime": "2020-07-10T22:39:04.984Z"
},
{
"description": "Accessible meeting rooms",
"featureId": 7,
"updatedTime": "2020-07-10T22:39:05.220Z"
}
],
"updatedTime": "2020-11-18T18:33:39.419Z"
},
"allowAdultsOnly": false,
"ctyhocn": "CSGHCHT",
"environmentalPrograms": [
{
"isActive": true,
"program": {
"displaySequence": 9,
"locale": "en_US",
"name": "hotelRecycledPaper",
"updatedTime": "2020-11-17T17:47:45.295Z"
}
},
{
"isActive": true,
"program": {
"displaySequence": 6,
"locale": "en_US",
"name": "linens",
"updatedTime": "2020-11-17T17:47:45.245Z"
}
}
],
"facilityName": "Columbus Easton, OH",
"gdsPropCodes": [],
"id": 48424,
"locale": "en_US",
"numBuildings": 1,
"numFloors": 4,
"numRooms": 115,
"thirdPartyDistEnabled": true,
"updatedTime": "2021-09-14T09:09:56.881Z",
"website": "https://www.hilton.com/en/hotels/CSGHCHT",
"propertyAttributes": {
"allowsPets": true,
"hasMeetingRooms": false,
"hasBusinessCenter": true,
"hasFitnessCenter": true,
"wheelChairAccess": false,
"hasRestaurants": false
}
},
"propertyInfrastructure": {
"ctyhocn": "CSGHCHT",
"electricalSpecifics": {
"ac120Avail": true,
"ac220Avail": false,
"dc120Avail": true,
"dc220Avail": false,
"hasAdapterTransformer": false,
"hasElectricalAdapters": false,
"hasPowerConverters": false,
"hasSpareElectricalOutletAtDesk": true
},
"executiveCategory": {
"executiveFloor": false,
"loungeArea": false,
"separateRegistry": false,
"seperateKeyAccess": false,
"tower": false
},
"hasExerciseRoom": true,
"hasFreeGuestHSIA": true,
"hasInRoomHSIA": true,
"hasInRoomPrinter": false,
"hasIndoorPool": true,
"hasNonGuestHSIA": true,
"hasOutdoorPool": false,
"hasPlayground": false,
"hasPlaypan": false,
"hasPublicWireless": true,
"hasVacationStation": false,
"inRoomHSIAFee": 0,
"inRoomWirelessFee": 0,
"locale": "en_US",
"numBuildings": 1,
"numFloors": 4,
"numRooms": 115,
"publicWirelessFee": 0,
"roomAmenities": {
"InRoomTreadmill": false,
"hasCribs": false,
"hasDishes": true,
"hasDishwasher": true,
"hasGlass": true,
"hasHighChairs": false,
"hasInRoomSafeHoldsComputers": false,
"hasMicrowave": false,
"hasOven": true,
"hasRefregirator": false,
"hasSofabed": true,
"hasStove": false,
"hasToaster": true,
"roomService": false,
"turndownService": false
},
"totalMeetingRooms": 0,
"totalPools": 1,
"totalRestaurants": 1,
"updatedTime": "2021-08-12T16:24:02.253Z"
},
"propertyVisibility": "marketing",
"services": {
"businessServices": {
"computer": "PC",
"ctyhocn": "CSGHCHT",
"hoursOfOperation": {},
"internetAccessAvailable": true,
"techConcierge": false,
"updatedTime": "2021-08-04T08:36:03.352Z",
"usageFee": 0,
"wirelessAvailable": true,
"wirelessFee": 0
},
"ctyhocn": "CSGHCHT",
"locale": "en_US",
"parking": {
"ctyhocn": "CSGHCHT",
"hasFreeParking": true,
"hasSelfParking": true,
"hasValetParking": false,
"inOutPrivilege": false,
"isSecured": false,
"locale": "en_US",
"selfparking": {
"accessGate": false,
"chargeQuantifier": "daily",
"covered": false,
"onsite": true,
"s2RAntiPassback": false,
"selfParkingCharge": 0
},
"updatedTime": "2021-08-02T09:03:48.038Z",
"valetparking": {}
},
"recreational": {
"areaActivities": [],
"ctyhocn": "CSGHCHT",
"fitnessCenters": [
{
"ctyhocn": "CSGHCHT",
"fee": 0,
"hasAerobicsClass": false,
"hasCardioEquipment": false,
"hasJacuzzi": false,
"hasMasseuse": false,
"hasSauna": false,
"hasSteamRoom": false,
"hasTrainers": false,
"hasWeightEquipment": false,
"locale": "en_US",
"onsite": true,
"onsiteServiceDesc": "Spin2 Cycle, combined fitness/laundry facility, run a load of laundry while logging a few miles.",
"type": "exerciseRoom",
"updatedTime": "2020-12-17T20:58:38.257Z"
}
],
"gamingCenters": [],
"golfCourses": [],
"locale": "en_US",
"pools": [],
"updatedTime": "2020-07-24T02:55:52.186Z"
},
"restaurants": [
{
"breakfast": true,
"ctyhocn": "CSGHCHT",
"dinner": false,
"locale": "en_US",
"lunch": false,
"updatedTime": "2020-09-24T08:43:41.990Z"
}
],
"specialServices": {
"ctyhocn": "CSGHCHT",
"laundryServices": {
"ctyhocn": "CSGHCHT",
"hasCoinLaundry": true,
"hasOvernight": true,
"onsite": true,
"updatedTime": "2021-08-12T15:05:15.549Z"
},
"locale": "en_US",
"petServices": {
"ctyhocn": "CSGHCHT",
"kennelServiceOffered": false,
"locale": "en_US",
"otherServiceOffered": false,
"petChargeRefundable": false,
"updatedTime": "2020-07-21T06:19:55.607Z"
},
"updatedTime": "2020-07-24T02:32:08.993Z"
},
"transportServices": [],
"updatedTime": "2021-09-14T07:32:00.842Z"
},
"state": {
"code": "OH",
"country": {
"code": "US",
"name": "United States",
"updatedTime": "2020-07-28T20:44:03.292Z"
},
"name": "Ohio",
"updatedTime": "2021-08-07T16:56:29.834Z"
},
"status": "planned",
"updatedTime": "2021-09-12T08:48:58.579Z"
},
"servicecharges": [],
"taxes": [],
"updatedTime": "2021-09-12T09:19:26.804Z"
}]
// your token
String token = "BASE64_ENCODED_CLIENT_ID_AND_SECRET";
// props extract endpoint url
String endpointUrl = "https://kapip-s.hilton.io/hospitality-partner/v2/content/propsextracts";
// default limit is 100 but recommended limit is 50
int limit = 50;
// jersey client
Client client = Client.create();
WebResource webResource = client.resource(endpointUrl);
ClientResponse response = webResource
.queryParam("limit", String.valueOf(this.limit))
.accept("application/json")
.header("Content-Type","application/json")
.header("accept","application/json")
.header("Authorization", "Basic " + this.token)
.get(ClientResponse.class);
// retrieve the parsed JSONObject from the response
String value = response.getEntity(String.class);
JSONParser parser = new JSONParser();
// convert the response to a JSONArray
JSONArray propertyData = (JSONArray) parser.parse(value);
// your token
String token = "BASE64_ENCODED_CLIENT_ID_AND_SECRET";
// props extract endpoint url
String endpointUrl = "https://kapip-s.hilton.io/hospitality-partner/v2/content/propsextracts";
// default limit is 100 but recommended limit is 50
int limit = 50;
// RESTeasy client
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target(endpointUrl)
.queryParam("limit", this.limit);
Response jsonResponse = target.request()
.header("Content-Type","application/json").header("accept","application/json")
.header("Authorization", "Basic " + this.token)
.get();
// retrieve the parsed JSONObject from the response
String value = jsonResponse.readEntity(String.class);
JSONParser parser = new JSONParser();
// convert the response to a JSONArray
JSONArray propertyData = (JSONArray) parser.parse(value);
// your token
String token = "BASE64_ENCODED_CLIENT_ID_AND_SECRET";
// props extract endpoint url
String endpointUrl = "https://kapip-s.hilton.io/hospitality-partner/v2/content/propsextracts";
// default limit is 100 but recommended limit is 50
int limit = 50;
// Unirest client
HttpResponse jsonResponse =
Unirest.get(endpointUrl).header("Content-Type", "application/json")
.header("accept", "application/json")
.header("Authorization", "Basic " + this.token)
.queryString("limit", this.limit).asJson();
// retrieve the parsed JSONObject from the response
JSONArray propertyData =jsonResponse.getBody().getArray();
// your token
var token = "BASE64_ENCODED_CLIENT_ID_AND_SECRET";
// default limit is 100 but recommended limit is 50
let limit = 50
// propsextract endpoint url
var defaultEndPointUrl = "https://kapip-s.hilton.io/hospitality-partner/v2/content/propsextracts";
// modify endPointUrl to add limit
var endPointUrl = defaultEndPointUrl + "?limit=" + limit;
//xhttp client
var xhttp = new XMLHttpRequest();
xhttp.open("GET", endPointUrl, true);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.setRequestHeader("Authorization", "Basic " + token);
xhttp.onreadystatechange = function() {
// retrieve the parsed JSONObject from the response
var jsonObject = JSON.parse(xhttp.responseText);
let statusCode = xhttp.status;
}
xhttp.send();
// your token
var token = "BASE64_ENCODED_CLIENT_ID_AND_SECRET";
// default limit is 100 but recommended limit is 50
let limit = 50
// propsextract endpoint url
var defaultEndPointUrl = "https://kapip-s.hilton.io/hospitality-partner/v2/content/propsextracts";
// modify endPointUrl to add limit
var endPointUrl = defaultEndPointUrl + "?limit=" + limit;
$.ajax({
type: "GET",
url: endPointUrl,
beforeSend: function(xhr){
xhr.setRequestHeader('Authorization', 'Basic ' + token);
xhr.setRequestHeader('Accept', 'application/json')
},
contentType: 'application/json',
success: function(data, statusText, xhr) {
// get status message from response
var statusMessage = data.statusMessage;
}
});
// your token
var token = "BASE64_ENCODED_CLIENT_ID_AND_SECRET";
// default limit is 100 but recommended limit is 50
let limit = 50
// props extract endpoint url
var defaultEndPointUrl = "https://kapip-s.hilton.io/hospitality-partner/v2/content/propsextracts";
// modify endPointUrl to add limit
var endPointUrl = defaultEndPointUrl + "?limit=" + limit;
// http client
$http({
method: 'GET',
url: endpointUrl,
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + token
}
}).then(function(response) {
// retrieve the response
var data = response.data;
// status code
var statusCode = response.status;
})
// your token
var token = "BASE64_ENCODED_CLIENT_ID_AND_SECRET";
// host address
var host = "kapip-s.hilton.io";
var basePath = "/hospitality-partner/v2";
// create https object
var https = require('https');
// default limit is 100 but recommended limit is 50
let limit = 50
// props extract endpoint url
var defaultEndPointUrl = basePath + "/content/propsextracts";
// modify endPointUrl to add limit
var endPointUrl = defaultEndPointUrl + "?limit=" + limit;
var get_options = {
host: host,
path: endPointUrl,
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Accept' : 'application/json',
'Authorization': 'Basic ' + token
}
};
// Set up the request
var req = https.request(get_options, function(response) {
response.setEncoding("utf8");
var rawData = '';
var statusCode = response['statusCode'];
// process the response object to json
response.on('data', (chunk) => {
rawData += chunk;
});
// parse the json and print the objects
response.on('end', () => {
// retrieve the parsed JSONObject from the response
var jsonObject = JSON.parse(rawData);
});
});
req.end();
Subsequent Request
Subsequent requests are made until all available property information is pulled. The current offset and the total number of property information available in 'content-range' response header is used to achieve the recursive condition. The current offset from 'content-range' header is used to set the offset for subsequent requests.
GET https://kapip-s.hilton.io/hospitality-partner/v2/content/propsextracts?offset=50&limit=50
Content-Type: application/json
Authorization: "Basic BASE64_ENCODED_CLIENT_ID_AND_SECRET"
Response Code : 206
Response Header:
content-range: items 50-99/7000
Response Body:
[
{
"ctyhocn": "CLTEPHF",
"locale": "en_US",
"meetingrooms": [
{
"id": 43551,
"ctyhocn": "CLTEPHF",
"locale": "en_US",
"name": "Charlotte",
"locationDesc": "Lobby Level",
"typeDesc": "Ballroom",
"isOffSite": false,
"isForExhibitUse": true,
"lenghtInFeet": 48,
"widthInFeet": 81,
"areaInFeet": 3888,
"areaInMeters": 361,
"ceilingHeightInFeet": 14,
"ceilingHeightInMeters": 4.27,
"booth10x10": 0,
"booth8x10": 0,
"banquet": 330,
"conference": 0,
"hollowSquare": 0,
"tabletopBooths": 0,
"classroom": 240,
"theater": 390,
"reception": 400,
"uShaped": 0,
"createdBy": "ingestion_admin",
"updatedBy": "ingestion_admin",
"createdTime": "2020-07-22T05:31:39.506Z",
"updatedTime": "2021-09-15T06:54:09.838Z"
}
],
"policy": {
"acceptedCreditCards": [
{
"depositAcccepted": true,
"guaranteeAccepted": true,
"paymentAccepted": true,
"paymentMethod": {
"code": "ER",
"name": "Enroute - ER",
"paymentId": 24,
"type": "creditCard",
"updatedTime": "2020-07-10T22:38:53.278Z"
}
}
],
"ctyhocn": "CLTEPHF",
"guaranteeCancelPolicy": [],
"hasInRoomHSIA": true,
"hasPublicWireless": true,
"locale": "en_US",
"oversoldPolicy": {
"arrangeforCompetitiveHotel": true,
"payOneFreeNight": true,
"reimburse": true
},
"registrationPolicy": {
"checkinTime": "15:00",
"checkoutTime": "12:00",
"earlyDeparture": true,
"earlyDepartureFee": 50,
"frontDeskCheckout": true,
"id": 3081776,
"lateCheckOut": false,
"lateCheckOutFee": 0,
"preRegisteredCheckin": true,
"restaurantCheckOut": false,
"videoCheckOutAvailable": true,
"zipCheckin": true,
"zipCheckout": true
},
"smokingPolicy": {
"hundredPctNonSmoking": true,
"numNonSmokingFloors": 7,
"smokingPolicyDesc": "Smoking Oasis Located By Entrance"
},
"updatedTime": "2021-08-12T16:00:25.552Z"
},
"propCode": "CLTEP",
"props": {
"addressLine1": "5624 Westpark Drive",
"brand": {
"code": "HI",
"name": "Hilton International",
"updatedTime": "2021-05-21T00:41:09.521Z"
},
"chain": {
"code": "HH",
"name": "Hilton Hotel",
"updatedTime": "2020-07-10T22:38:22.130Z"
},
"city": "Charlotte",
"country": {
"code": "US",
"name": "United States",
"updatedTime": "2020-07-28T20:44:03.292Z"
},
"county": "Mecklenburg",
"ctyhocn": "CLTEPHF",
"digitalKey": true,
"fbFullService": false,
"hasConnectedRoom": false,
"locale": "en_US",
"locationDetails": {
"airport": [
{
"airportDistance": 5,
"airportDistanceUOM": "miles",
"airportDriveDirection": "south",
"airportDriveTime": "15",
"airportDriveTimeUOM": "minutes",
"airportPreference": "primary",
"cityCenterDistance": 5,
"cityCenterDistanceUOM": "miles",
"cityCenterDriveDirection": "north",
"cityCenterDriveTime": "10",
"cityCenterDriveTimeUOM": "minutes",
"ctyhocn": "CLTEPHF",
"directionsFromAirportToHotel": "Take Billy Graham Pkwy S to Tyvola Rd Rt, go 5 Miles to Westpark, Turn Right.",
"directionsFromHotelToCityCenter": "Take Tyvola Road to I-77 North to 277 exit 9c",
"updatedTime": "2021-06-11T11:12:14.121Z"
}
],
"areaLocators": [
{
"areaLocator": "entertainmentDistrict"
}
],
"ctyhocn": "CLTEPHF",
"locale": "en_US",
"nearbyCorporations": [],
"onlineLatitude": 35.161204,
"onlineLongitude": -80.88831,
"pointsofInterest": [],
"timeZone": "GMT-4.00",
"timeZoneDesc": "Eastern Time (US & Canada), Bogota, Lima, Quito",
"transportServices": [
{
"airportPreference": "primary",
"ctyhocn": "CLTEPHF",
"estimatedCharge": 0,
"estimatedTime": 15,
"locale": "en_US",
"transportTimeUOM": "minutes",
"transportType": "complimentary_shuttle"
}
],
"updatedTime": "2021-03-19T11:16:35.798Z"
},
"marketTier": "upscale",
"name": "Hilton Charlotte Executive Park",
"postalCode": "28217",
"productLines": [
{
"productLineDescription": "Airport"
},
{
"productLineDescription": "Commercial"
}
],
"propCode": "CLTEP",
"propDetail": {
"accessibilityFeatures": {
"amenities": [
{
"amenityId": 154,
"description": "Chaise Lounge",
"updatedTime": "2020-07-10T22:38:08.350Z"
}
],
"ctyhocn": "CLTEPHF",
"hotelAttributes": [
{
"attributeId": 1277,
"description": "Accessible registration desk",
"updatedTime": "2020-07-10T22:38:42.750Z"
}
],
"locale": "en_US",
"safetyFeatures": [
{
"description": "Hotel complies with ADA Guidelines",
"featureId": 67,
"updatedTime": "2020-07-10T22:39:01.975Z"
}
],
"updatedTime": "2020-11-18T18:33:35.078Z"
},
"allowAdultsOnly": false,
"ctyhocn": "CLTEPHF",
"environmentalPrograms": [
{
"isActive": true,
"program": {
"displaySequence": 1,
"locale": "en_US",
"name": "glass",
"updatedTime": "2020-11-17T17:47:44.760Z"
}
}
],
"facilityName": "Charlotte Executive Park, NC",
"faxNumber": "+1-704-529-5963",
"gdsPropCodes": [
{
"ctyhocn": "CLTEPHF",
"gdsPartner": {
"code": "1A",
"description": "AMADEUS",
"partnerCode": "1A",
"updatedTime": "2021-07-26T23:47:45.205Z"
},
"gdsPropCode": "CLT405",
"locale": "en_US",
"propCode": "CLTEP",
"updatedTime": "2021-09-15T08:06:15.720Z"
}
],
"hotelWebsiteDescription": "We’re just off I-77, 15 minutes from Charlotte Douglas International Airport via free shuttle. Uptown Charlotte attractions are less than seven miles away. Easy interstate access makes us the ideal stopover on the way to destinations like Greenville, Myrtle Beach, Blowing Rock, and Florida. Enjoy our seasonal outdoor pool, tranquil courtyard, and fitness center.\n\nRelax in our well-appointed guest rooms that feature large work desks with complimentary wireless Internet access, flat-screen TVs, room service.\n\nYou will know you’ve entered the South with our Southern inspired menu at Southern Twist Restaurant and Lounge, a side of sweet Southern Hospitality is free. \n\nWhether you are gathering for work or celebrate a special occasion the Hilton Charlotte Executive Park has the right space to best fit your needs. From boardrooms to ballrooms our on-site professional will make planning a breeze. \n\nGo, stay, work, or play in spaces made to fit your needs.",
"id": 48194,
"locale": "en_US",
"numBuildings": 1,
"numFloors": 7,
"numRooms": 181,
"openingDate": "1994-09-19T00:00:00.000Z",
"phoneAreaCode": "704",
"phoneCountryCode": "1",
"phoneNumber": "5278000",
"phoneNumberFull": "17045278000",
"thirdPartyDistEnabled": true,
"updatedTime": "2021-09-15T08:29:13.185Z",
"website": "https://www.hilton.com/en/hotels/CLTEPHF",
"yearBuilt": 1986,
"propertyAttributes": {
"allowsPets": true,
"hasMeetingRooms": true,
"hasBusinessCenter": true,
"hasFitnessCenter": true,
"wheelChairAccess": true,
"hasRestaurants": true
}
},
"propertyInfrastructure": {
"ctyhocn": "CLTEPHF",
"electricalSpecifics": {
"ac120Avail": true,
"ac220Avail": false,
"dc120Avail": false,
"dc220Avail": false,
"hasAdapterTransformer": false,
"hasElectricalAdapters": true,
"hasPowerConverters": false,
"hasSpareElectricalOutletAtDesk": true
},
"executiveCategory": {
"executiveFloor": false,
"loungeArea": false,
"separateRegistry": false,
"seperateKeyAccess": false,
"tower": false
},
"hasExerciseRoom": true,
"hasFreeGuestHSIA": true,
"hasInRoomHSIA": true,
"hasInRoomPrinter": false,
"hasIndoorPool": false,
"hasNonGuestHSIA": true,
"hasOutdoorPool": true,
"hasPlayground": false,
"hasPlaypan": false,
"hasPublicWireless": true,
"hasVacationStation": false,
"inRoomHSIAFee": 0,
"inRoomWirelessFee": 0,
"locale": "en_US",
"numBuildings": 1,
"numFloors": 7,
"numRooms": 181,
"publicWirelessFee": 0,
"roomAmenities": {
"InRoomTreadmill": false,
"hasCribs": false,
"hasDishes": false,
"hasDishwasher": false,
"hasGlass": false,
"hasHighChairs": false,
"hasInRoomSafeHoldsComputers": true,
"hasMicrowave": false,
"hasOven": false,
"hasRefregirator": false,
"hasSofabed": true,
"hasStove": false,
"hasToaster": false,
"roomService": false,
"turndownService": false
},
"totalMeetingRooms": 9,
"totalPools": 1,
"totalRestaurants": 1,
"updatedTime": "2021-08-12T16:23:54.816Z"
},
"propertyVisibility": "booking",
"services": {
"businessServices": {
"computer": "Dell",
"ctyhocn": "CLTEPHF",
"hoursOfOperation": {
"friClose": "1900-01-01T00:00:00.000Z",
"friOpen": "1900-01-01T00:00:00.000Z",
"monClose": "1900-01-01T00:00:00.000Z",
"monOpen": "1900-01-01T00:00:00.000Z",
"satClose": "1900-01-01T00:00:00.000Z",
"satOpen": "1900-01-01T00:00:00.000Z",
"sunClose": "1900-01-01T00:00:00.000Z",
"sunOpen": "1900-01-01T00:00:00.000Z",
"thuClose": "1900-01-01T00:00:00.000Z",
"thuOpen": "1900-01-01T00:00:00.000Z",
"tueClose": "1900-01-01T00:00:00.000Z",
"tueOpen": "1900-01-01T00:00:00.000Z",
"wedClose": "1900-01-01T00:00:00.000Z",
"wedOpen": "1900-01-01T00:00:00.000Z"
},
"internetAccessAvailable": true,
"techConcierge": false,
"typeofPrinter": "B/W and color",
"updatedTime": "2021-09-15T06:50:17.949Z",
"usageFee": 0,
"wirelessAvailable": true
},
"ctyhocn": "CLTEPHF",
"locale": "en_US",
"parking": {
"ctyhocn": "CLTEPHF",
"hasFreeParking": true,
"hasSelfParking": true,
"hasValetParking": false,
"inOutPrivilege": false,
"isSecured": false,
"locale": "en_US",
"selfparking": {
"accessGate": false,
"chargeQuantifier": "daily",
"covered": false,
"onsite": true,
"s2RAntiPassback": false,
"selfParkingCharge": 0
},
"updatedTime": "2021-08-02T09:03:09.593Z",
"valetparking": {
"chargeQuantifier": "daily",
"valetParkingCharge": 0
}
},
"recreational": {
"areaActivities": [
{
"ctyhocn": "CLTEPHF",
"description": "Fitness Room",
"locale": "en_US",
"siteLocation": "onsite",
"travelTime": 0,
"type": "fitnessRoom",
"updatedTime": "2020-12-17T19:27:48.902Z"
}
],
"ctyhocn": "CLTEPHF",
"fitnessCenters": [
{
"ctyhocn": "CLTEPHF",
"fee": 0,
"hasAerobicsClass": false,
"hasCardioEquipment": false,
"hasJacuzzi": false,
"hasMasseuse": false,
"hasSauna": false,
"hasSteamRoom": false,
"hasTrainers": false,
"hasWeightEquipment": false,
"locale": "en_US",
"onsite": false,
"type": "extended",
"updatedTime": "2020-12-17T20:58:23.199Z"
}
],
"gamingCenters": [],
"golfCourses": [
{
"ctyhocn": "CLTEPHF",
"description": "Renaissance Park Golf Course is an 18 hole golf course in southwest Charlotte. The course offers individual and group lessons and has a PGA professional on staff. The lighted practice facilities feature a driving range with grass tees and covered tee boxes.",
"locale": "en_US",
"proOnsite": false,
"updatedTime": "2020-07-11T07:01:08.711Z"
}
],
"locale": "en_US",
"pools": [],
"updatedTime": "2020-07-24T02:55:42.296Z"
},
"restaurants": [
{
"breakfast": true,
"ctyhocn": "CLTEPHF",
"dinner": true,
"locale": "en_US",
"lunch": true,
"updatedTime": "2020-07-13T15:02:44.404Z"
}
],
"roomServices": {
"brailRoomServiceMenue": false,
"ctyhocn": "CLTEPHF",
"eveningRoomService": false,
"hasRoomService": false,
"is24Hrs": false,
"isKosher": false,
"locale": "en_US",
"updatedTime": "2020-10-27T10:34:00.628Z"
},
"specialServices": {
"ctyhocn": "CLTEPHF",
"laundryServices": {
"ctyhocn": "CLTEPHF",
"hasCoinLaundry": false,
"hasOvernight": false,
"onsite": false,
"updatedTime": "2020-07-10T21:58:04.262Z"
},
"locale": "en_US",
"petServices": {
"ctyhocn": "CLTEPHF",
"kennelServiceOffered": false,
"locale": "en_US",
"otherServiceDesc": "Pets cannot be left unattended in room.",
"otherServiceOffered": true,
"petCharge": 50,
"petChargeRefundable": false,
"updatedTime": "2021-03-11T09:10:21.727Z"
},
"updatedTime": "2020-07-24T02:32:04.000Z"
},
"transportServices": [
{
"airportCode": {
"code": "CLT",
"description": "Charlotte/Douglas International Airport",
"updatedTime": "2020-07-10T21:44:26.885Z"
},
"airportPreference": "primary",
"ctyhocn": "CLTEPHF",
"estimatedCharge": 0,
"estimatedTime": 15,
"locale": "en_US",
"remarks": "Free Airport shuttle",
"transportTimeUOM": "minutes",
"transportType": "complimentary_shuttle",
"updatedTime": "2021-07-30T08:41:48.475Z"
}
],
"updatedTime": "2021-09-15T07:28:03.307Z"
},
"shortName": "CHARLOTTE HILTON EXECUTIVE PARK",
"state": {
"code": "NC",
"country": {
"code": "US",
"name": "United States",
"updatedTime": "2020-07-28T20:44:03.292Z"
},
"name": "North Carolina",
"updatedTime": "2021-08-07T16:56:30.265Z"
},
"status": "open",
"updatedTime": "2021-09-15T09:44:33.234Z"
},
"servicecharges": [],
"taxes": [],
"updatedTime": "2021-09-15T10:12:38.616Z"
}
]
// your token
String token = "BASE64_ENCODED_CLIENT_ID_AND_SECRET";
// props extract endpoint url
String endpointUrl = "https://kapip-s.hilton.io/hospitality-partner/v2/content/propsextracts";
int offset = 0;
// default limit is 100 but recommended limit is 50
int limit = 50;
// total number of properties
int totalPropertyCount = 0;
// entire property data
List allPropertyData = new ArrayList();
public void getContentData(List allPropertyData, int offset){
// jersey client
Client client = Client.create();
WebResource webResource = client.resource(endpointUrl);
ClientResponse response = webResource
.queryParam("limit", String.valueOf(this.limit))
.queryParam("offset", String.valueOf(offset))
.accept("application/json")
.header("Content-Type","application/json")
.header("accept","application/json")
.header("Authorization", "Basic " + this.token)
.get(ClientResponse.class);
// retrieve the parsed JSONObject from the response
String value = response.getEntity(String.class);
JSONParser parser = new JSONParser();
// convert the response to a JSONArray
JSONArray propertyData = (JSONArray) parser.parse(value);
// add each paginated API response data to allPropertyData
if (!propertyData.isEmpty()) {
allPropertyData.addAll(propertyData);
}
// refer content-range header in response to find the total number of properties and current offset
if (response.getHeaders().get("content-range")!= null) {
String itemsRange = response.getHeaders().get("content-range").get(0);
String[] ranges = itemsRange.split("/");
totalPropertyCount = Integer.valueOf(ranges[1]);
String[] offsetRanges = ranges[0].substring("items=".length()).split("-");
int toRange = Integer.valueOf(offsetRanges[1]);
offset = toRange + 1;
}
// initiate subsequent call, if API response code is partial content
if (response.getStatus() == 206 && offset < totalPropertyCount ){
getContentData(allPropertyData, offset);
}
}
// invoke method
getContentData(allPropertyData, offset);
// your token
String token = "BASE64_ENCODED_CLIENT_ID_AND_SECRET";
// props extract endpoint url
String endpointUrl = "https://kapip-s.hilton.io/hospitality-partner/v2/content/propsextracts";
int offset = 0;
// default limit is 100 but recommended limit is 50
int limit = 50;
// total number of properties
int totalPropertyCount = 0;
// Contains all property data
List allPropertyData = new ArrayList<>();
public void getContentData(List allPropertyData, int offset){
// RESTeasy client
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target(endpointUrl)
.queryParam("limit", this.limit)
.queryParam("offset", offset);
Response jsonResponse = target.request()
.header("Content-Type","application/json").header("accept","application/json")
.header("Authorization", "Basic " + this.token)
.get();
// retrieve the parsed JSONObject from the response
String value = jsonResponse.readEntity(String.class);
JSONParser parser = new JSONParser();
// convert the response to a JSONArray
JSONArray propertyData = (JSONArray) parser.parse(value);
// add each paginated API response data to allPropertyData
if (!propertyData.isEmpty()) {
allPropertyData.addAll(propertyData);
}
// refer content-range header in response to find the total number of properties and current offset
if (jsonResponse.getHeaders().get("content-range")!= null) {
String itemsRange = jsonResponse.getHeaderString("content-range");
String[] ranges = itemsRange.split("/");
totalPropertyCount = Integer.parseInt(ranges[1]);
String[] offsetRanges = ranges[0].substring("items=".length()).split("-");
int toRange = Integer.valueOf(offsetRanges[1]);
offset = toRange + 1;
}
// initiate subsequent call, if API response code is partial content
if (jsonResponse.getStatus() == 206 && offset < totalPropertyCount ){
getContentData(allPropertyData, offset);
}
}
// invoke method
getContentData(allPropertyData, offset);
// your token
String token = "BASE64_ENCODED_CLIENT_ID_AND_SECRET";
// props extract endpoint url
String endpointUrl = "https://kapip-s.hilton.io/hospitality-partner/v2/content/propsextracts";
int offset = 0;
// default limit is 100 but recommended limit is 50
int limit = 50;
// total number of properties
int totalPropertyCount = 0;
// Contains all property data
List allPropertyData = new ArrayList();
public void getContentData(List allPropertyData, int offset){
// Unirest client
HttpResponse jsonResponse =
Unirest.get(endpointUrl).header("Content-Type", "application/json")
.header("accept", "application/json")
.header("Authorization", "Basic " + this.token)
.queryString("limit", this.limit)
.queryString("offset",offset).asJson();
// retrieve the parsed JSONObject from the response
JSONArray propertyData =jsonResponse.getBody().getArray();
// add each paginated API response data to allPropertyData
if (propertyData.length()!=0) {
allPropertyData.put(propertyData);
}
// refer content-range header in response to find the total number of properties and current offset
if (jsonResponse.getHeaders().get("content-range")!=null) {
String itemsRange = jsonResponse.getHeaders().get("content-range").get(0);
String[] ranges = itemsRange.split("/");
totalPropertyCount = Integer.parseInt(ranges[1]);
String[] offsetRanges = ranges[0].substring("items=".length()).split("-");
int toRange = Integer.valueOf(offsetRanges[1]);
offset = toRange + 1;
}
// initiate subsequent call, if API response code is partial content
if (jsonResponse.getStatus() == 206 && offset < totalPropertyCount ){
getContentData(allPropertyData, offset);
}
}
// invoke method
getContentData(allPropertyData, offset);
// your token
var token = "BASE64_ENCODED_CLIENT_ID_AND_SECRET";
let offset = 0;
// default limit is 100 but recommended limit is 50
let limit = 50
// propsextract endpoint url
var defaultEndPointUrl = "https://kapip-s.hilton.io/hospitality-partner/v2/content/propsextracts?limit=" + limit;
// all property data
let allPropertyData = []
// total number of properties
let totalPropertyCount = 0;
function getContentData(offset){
// modify endPointUrl to change offset to make paginated API call
var endPointUrl = defaultEndPointUrl + "&offset=" + offset;
//xhttp client
var xhttp = new XMLHttpRequest();
xhttp.open("GET", endPointUrl, true);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.setRequestHeader("Authorization", "Basic" + token);
xhttp.onreadystatechange = function() {
// retrieve the parsed JSONObject from the response
var jsonObject = JSON.parse(xhttp.responseText);
let statusCode = xhttp.status;
// refer content-range header in response to find the total number of properties and current offset
var contentRange = xhttp.getResponseHeader("content-range");
if (contentRange){
let ranges = contentRange.split("/");
totalPropertyCount = ranges[1];
let offsetRanges = ranges[0].substring("items=".length).split("-");
let toRange = parseInt(offsetRanges[1]);
offset = toRange + 1;
}
// add all property info to final allPropertyData.
for (var i = 0; i < jsonObject.length; i++) {
allPropertyData.push(jsonObject[i])
}
// initiate subsequent call, if API response code is partial content
if (statusCode == 206 && offset < totalPropertyCount){
getContentData(offset);
}
}
xhttp.send();
}
//invoke method
getContentData(offset);
// your token
var token = "BASE64_ENCODED_CLIENT_ID_AND_SECRET";
let offset = 0;
// default limit is 100 but recommended limit is 50
let limit = 50
// propsextract endpoint url
var defaultEndPointUrl = "https://kapip-s.hilton.io/hospitality-partner/v2/content/propsextracts?limit=" + limit;
// all property data
let allPropertyData = []
// total number of properties
let totalPropertyCount=0;
function getContentData(offset){
// modify endPointUrl to change offset to make paginated API call
var endPointUrl = defaultEndPointUrl + "&offset=" + offset;
$.ajax({
type: "GET",
url: endPointUrl,
beforeSend: function(xhr){
xhr.setRequestHeader('Authorization', 'Basic ' + token);
xhr.setRequestHeader('Accept', 'application/json')
},
contentType: 'application/json',
success: function(data, statusText, xhr) {
// refer content-range header in response to find the total number of properties and current offset
var contentRange = xhr.getResponseHeader("content-range");
if (contentRange){
let ranges = contentRange.split("/");
totalPropertyCount = ranges[1];
let offsetRanges = ranges[0].substring("items=".length).split("-");
let toRange = parseInt(offsetRanges[1]);
offset = toRange + 1;
}
// add all property info to final allPropertyData.
for (var i = 0; i < data.length; i++) {
allPropertyData.push(data[i])
}
// initiate subsequent call, if API response code is partial content
if (xhr.status == 206 && offset < totalPropertyCount){
getContentData(offset);
}
}
});
}
//invoke method
getContentData(offset);
// your token
var token = "BASE64_ENCODED_CLIENT_ID_AND_SECRET";
let offset = 0;
// default limit is 100 but recommended limit is 50
let limit = 50
// props extract endpoint url
var defaultEndPointUrl = "https://kapip-s.hilton.io/hospitality-partner/v2/content/propsextracts?limit=" + limit;
// all property data
let allPropertyData = []
// total number of properties
let totalPropertyCount = 0;
function getContentData(offset){
// modify endPointUrl to change offset to make paginated API call
var endPointUrl = defaultEndPointUrl + "&offset=" + offset;
// http client
$http({
method: 'GET',
url: endpointUrl,
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + token
}
}).then(function(response) {
// retrieve the response
var data = response.data;
var statusCode = response.status;
// refer content-range header in response to find the total number of properties and current offset
var contentRange = response.headers("content-range");
if (contentRange){
let ranges = contentRange.split("/");
totalPropertyCount = ranges[1];
let offsetRanges = ranges[0].substring("items=".length).split("-");
let toRange = parseInt(offsetRanges[1]);
offset = toRange + 1;
}
// add all property info to final allPropertyData.
for (var i = 0; i < jsonObject.length; i++) {
allPropertyData.push(jsonObject[i])
}
// initiate subsequent call, if API response code is partial content
if (statusCode == 206 && offset < totalPropertyCount){
getContentData(offset);
}
})
}
//invoke method
getContentData(offset);
// your token
var token = "BASE64_ENCODED_CLIENT_ID_AND_SECRET";
// host address
var host = "kapip-s.hilton.io";
var basePath = "/hospitality-partner/v2";
// create https object
var https = require('https');
let offset = 0;
// default limit is 100 but recommended limit is 50
let limit = 50
// props extract endpoint url
var defaultEndPointUrl = basePath + "/content/propsextracts?limit=" + limit;
// all property data
let allPropertyData = []
// total number of properties
let totalPropertyCount=0;
function getContentData(offset){
// modify endPointUrl to change offset to make paginated API call
var endPointUrl = defaultEndPointUrl + "&offset=" + offset;
var get_options = {
host: host,
path: endPointUrl,
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Accept' : 'application/json',
'Authorization': 'Basic ' + token
}
};
// Set up the request
var req = https.request(get_options, function(response) {
response.setEncoding("utf8");
var rawData = '';
var statusCode = response['statusCode'];
// refer content-range header in response to find the total number of properties and current offset
var contentRange = response.headers['content-range'];
if (contentRange){
let ranges = contentRange.split("/");
totalPropertyCount = ranges[1];
let offsetRanges = ranges[0].substring("items=".length).split("-");
let toRange = parseInt(offsetRanges[1]);
offset = toRange + 1;
}
// process the response object to json
response.on('data', (chunk) => {
rawData += chunk;
});
// parse the json and print the objects
response.on('end', () => {
// retrieve the parsed JSONObject from the response
var jsonObject = JSON.parse(rawData);
// add all property info to final allPropertyData.
for (var i = 0; i < jsonObject.length; i++) {
allPropertyData.push(jsonObject[i])
}
// initiate subsequent call, if API response code is partial content
if (statusCode == 206 && offset < totalPropertyCount){
getContentData(offset);
}
});
});
req.end();
}
//invoke method
getContentData(offset);
Sample Code Flow Diagram
