"use strict";
export class ApiServiceRequest {
/** @param {{apiKey?:string,latitude?:number,longitude?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/**
* @type {string}
* @description The API Key required for authentication */
apiKey;
/**
* @type {number}
* @description Latitude of the user making this request */
latitude;
/**
* @type {number}
* @description Longitude of the user making this request */
longitude;
}
export class ApiServiceResponse {
/** @param {{description?:string,heading?:string,wasSuccessful?:boolean,modelState?:Object}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
description;
/** @type {string} */
heading;
/** @type {boolean} */
wasSuccessful;
/** @type {Object} */
modelState;
}
/** @typedef {number} */
export var SlotStatus;
(function (SlotStatus) {
SlotStatus[SlotStatus["Available"] = 0] = "Available"
SlotStatus[SlotStatus["Closed"] = 1] = "Closed"
SlotStatus[SlotStatus["Booked"] = 2] = "Booked"
SlotStatus[SlotStatus["UserBooked"] = 3] = "UserBooked"
SlotStatus[SlotStatus["GroupBooked"] = 4] = "GroupBooked"
SlotStatus[SlotStatus["ToBook"] = 5] = "ToBook"
})(SlotStatus || (SlotStatus = {}));
export class UserCustomFieldData {
/** @param {{id?:string,value?:string,name?:string,optional?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
id;
/** @type {string} */
value;
/** @type {string} */
name;
/** @type {boolean} */
optional;
}
export class GuestData {
/** @param {{name?:string,emailAddress?:string,mobileNumber?:string,userCustomFields?:UserCustomFieldData[],isAlreadyUser?:boolean,systemUserId?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
name;
/** @type {string} */
emailAddress;
/** @type {string} */
mobileNumber;
/** @type {UserCustomFieldData[]} */
userCustomFields;
/** @type {boolean} */
isAlreadyUser;
/** @type {number} */
systemUserId;
}
export class SlotData {
/** @param {{start?:string,end?:string,status?:SlotStatus,bookingId?:number,remindStart?:boolean,remind30Mins?:boolean,remind1Hour?:boolean,remind6Hours?:boolean,remind12Hours?:boolean,remind1Day?:boolean,remind1Week?:boolean,billableAmount?:number,bookedByName?:string,billableHours?:number,slotLength?:number,userData?:GuestData,extraRequirements?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
start;
/** @type {string} */
end;
/** @type {SlotStatus} */
status;
/** @type {number} */
bookingId;
/** @type {boolean} */
remindStart;
/** @type {boolean} */
remind30Mins;
/** @type {boolean} */
remind1Hour;
/** @type {boolean} */
remind6Hours;
/** @type {boolean} */
remind12Hours;
/** @type {boolean} */
remind1Day;
/** @type {boolean} */
remind1Week;
/** @type {number} */
billableAmount;
/** @type {string} */
bookedByName;
/** @type {number} */
billableHours;
/** @type {number} */
slotLength;
/** @type {GuestData} */
userData;
/** @type {string} */
extraRequirements;
}
export class ScheduleDayData {
/** @param {{date?:string,slots?:SlotData[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
date;
/** @type {SlotData[]} */
slots;
}
export class RatesItem {
/** @param {{rate?:number,minutes?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
rate;
/** @type {number} */
minutes;
}
export class FacilityData {
/** @param {{facilityId?:number,facilityGuid?:string,name?:string,description?:string,nextAvailable?:string,hasNextAvailable?:boolean,rates?:RatesItem[],themeColor?:string,bookingNotes?:string,leadTime?:number,venueId?:number,allowExtraRequirements?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
facilityId;
/** @type {string} */
facilityGuid;
/** @type {string} */
name;
/** @type {string} */
description;
/** @type {string} */
nextAvailable;
/** @type {boolean} */
hasNextAvailable;
/** @type {RatesItem[]} */
rates;
/** @type {string} */
themeColor;
/** @type {string} */
bookingNotes;
/** @type {number} */
leadTime;
/** @type {number} */
venueId;
/** @type {boolean} */
allowExtraRequirements;
}
export class GetFacilityScheduleResponse extends ApiServiceResponse {
/** @param {{schedule?:ScheduleDayData[],bookAheadMaxDate?:string,openHour?:number,closeHour?:number,duration?:number,isCoordinator?:boolean,facilityTimeOffset?:number,facility?:FacilityData,venueName?:string,allowGuests?:boolean,allowExtraRequirements?:boolean,allowBookingInProgress?:boolean,description?:string,heading?:string,wasSuccessful?:boolean,modelState?:Object}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {ScheduleDayData[]} */
schedule;
/** @type {string} */
bookAheadMaxDate;
/** @type {number} */
openHour;
/** @type {number} */
closeHour;
/** @type {number} */
duration;
/** @type {boolean} */
isCoordinator;
/** @type {number} */
facilityTimeOffset;
/** @type {FacilityData} */
facility;
/** @type {string} */
venueName;
/** @type {boolean} */
allowGuests;
/** @type {boolean} */
allowExtraRequirements;
/** @type {boolean} */
allowBookingInProgress;
}
export class GetFacilitySchedule extends ApiServiceRequest {
/** @param {{facilityId?:number,start?:string,end?:string,apiKey?:string,latitude?:number,longitude?:number}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {number} */
facilityId;
/** @type {string} */
start;
/** @type {string} */
end;
}
JavaScript GetFacilitySchedule DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /jsv/reply/GetFacilitySchedule HTTP/1.1
Host: reservation.api.dev.86degrees.com
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
facilityId: 0,
start: 0001-01-01,
end: 0001-01-01,
apiKey: String,
latitude: 0,
longitude: 0
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
schedule:
[
{
date: String,
slots:
[
{
start: String,
end: String,
status: 0,
bookingId: 0,
remindStart: False,
remind30Mins: False,
remind1Hour: False,
remind6Hours: False,
remind12Hours: False,
remind1Day: False,
remind1Week: False,
billableAmount: 0,
bookedByName: String,
billableHours: 0,
slotLength: 0,
extraRequirements: String
}
]
}
],
bookAheadMaxDate: String,
openHour: 0,
closeHour: 0,
duration: 0,
isCoordinator: False,
facilityTimeOffset: 0,
venueName: String,
allowGuests: False,
allowExtraRequirements: False,
allowBookingInProgress: False,
description: String,
heading: String,
wasSuccessful: False,
modelState: {}
}