feat(LOY-232): DTMC API Integration * feat(LOY-232): DTMC API Integration * feat(LOY-232): use employment data in team member card * refactor(LOY-232): remove static data, return employment details in parsed response & fix tests * refactor(LOY-232): improve DTMC API Linking error control flow + make res type safe * fix(LOY-232): remove unused utils * fix(LOY-232): error vars Approved-by: Christian Andolf Approved-by: Erik Tiekstra
233 lines
8.2 KiB
TypeScript
233 lines
8.2 KiB
TypeScript
/**
|
|
* Nested enum requires namespace
|
|
*/
|
|
export namespace endpoints {
|
|
namespace base {
|
|
export const enum path {
|
|
availability = "availability",
|
|
booking = "booking",
|
|
hotel = "hotel",
|
|
package = "package",
|
|
profile = "profile",
|
|
}
|
|
|
|
export const enum enitity {
|
|
Ancillary = "Ancillary",
|
|
Availabilities = "availabilities",
|
|
Bookings = "Bookings",
|
|
Breakfast = "breakfast",
|
|
Cities = "Cities",
|
|
Countries = "Countries",
|
|
Hotels = "Hotels",
|
|
Locations = "Locations",
|
|
Packages = "packages",
|
|
Profile = "Profile",
|
|
Reward = "Reward",
|
|
Stays = "Stays",
|
|
Transaction = "Transaction",
|
|
RoomFeature = "RoomFeature",
|
|
}
|
|
}
|
|
|
|
export namespace v1 {
|
|
const version = "v1"
|
|
/**
|
|
* availability (Swagger)
|
|
* https://tstapi.scandichotels.com/availability/swagger/v1/index.html
|
|
*/
|
|
export namespace Availability {
|
|
export function city(cityId: string) {
|
|
return `${base.path.availability}/${version}/${base.enitity.Availabilities}/city/${cityId}`
|
|
}
|
|
export function hotels() {
|
|
return `${base.path.availability}/${version}/${base.enitity.Availabilities}/hotels`
|
|
}
|
|
export function hotel(hotelId: string) {
|
|
return `${base.path.availability}/${version}/${base.enitity.Availabilities}/hotel/${hotelId}`
|
|
}
|
|
export function roomFeatures(hotelId: string) {
|
|
return `${base.path.availability}/${version}/${base.enitity.RoomFeature}/features/hotel/${hotelId}`
|
|
}
|
|
}
|
|
|
|
/**
|
|
* booking (Swagger)
|
|
* https://tstapi.scandichotels.com/booking/swagger/v1/index.html
|
|
*/
|
|
export namespace Booking {
|
|
export const bookings = `${base.path.booking}/${version}/${base.enitity.Bookings}`
|
|
|
|
export function booking(confirmationNumber: string) {
|
|
return `${bookings}/${confirmationNumber}`
|
|
}
|
|
export function find(confirmationNumber: string) {
|
|
return `${bookings}/${confirmationNumber}/find`
|
|
}
|
|
export function cancel(confirmationNumber: string) {
|
|
return `${bookings}/${confirmationNumber}/cancel`
|
|
}
|
|
export function status(confirmationNumber: string) {
|
|
return `${bookings}/${confirmationNumber}/status`
|
|
}
|
|
export function priceChange(confirmationNumber: string) {
|
|
return `${bookings}/${confirmationNumber}/priceChange`
|
|
}
|
|
export function packages(confirmationNumber: string) {
|
|
return `${bookings}/${confirmationNumber}/packages`
|
|
}
|
|
export function guarantee(confirmationNumber: string) {
|
|
return `${bookings}/${confirmationNumber}/guarantee`
|
|
}
|
|
|
|
export const enum Stays {
|
|
future = `${base.path.booking}/${version}/${base.enitity.Stays}/future`,
|
|
past = `${base.path.booking}/${version}/${base.enitity.Stays}/past`,
|
|
}
|
|
}
|
|
|
|
/**
|
|
* hotel (Swagger)
|
|
* https://tstapi.scandichotels.com/hotel/swagger/v1/index.html
|
|
*/
|
|
export namespace Hotel {
|
|
export const cities = `${base.path.hotel}/${version}/${base.enitity.Cities}`
|
|
export namespace Cities {
|
|
export function city(cityId: string) {
|
|
return `${cities}/${cityId}`
|
|
}
|
|
export function country(countryId: string) {
|
|
return `${cities}/country/${countryId}`
|
|
}
|
|
export function hotel(hotelId: string) {
|
|
return `${cities}/hotel/${hotelId}`
|
|
}
|
|
}
|
|
|
|
export const countries = `${base.path.hotel}/${version}/${base.enitity.Countries}`
|
|
export namespace Countries {
|
|
export function country(countryId: string) {
|
|
return `${countries}/${countryId}`
|
|
}
|
|
}
|
|
|
|
export const hotels = `${base.path.hotel}/${version}/${base.enitity.Hotels}`
|
|
export namespace Hotels {
|
|
export function hotel(hotelId: string) {
|
|
return `${hotels}/${hotelId}`
|
|
}
|
|
export function meetingRooms(hotelId: string) {
|
|
return `${hotels}/${hotelId}/meetingRooms`
|
|
}
|
|
export function merchantInformation(hotelId: string) {
|
|
return `${hotels}/${hotelId}/merchantInformation`
|
|
}
|
|
export function nearbyHotels(hotelId: string) {
|
|
return `${hotels}/${hotelId}/nearbyHotels`
|
|
}
|
|
export function restaurants(hotelId: string) {
|
|
return `${hotels}/${hotelId}/restaurants`
|
|
}
|
|
export function roomCategories(hotelId: string) {
|
|
return `${hotels}/${hotelId}/roomCategories`
|
|
}
|
|
export function additionalData(hotelId: string) {
|
|
return `${hotels}/${hotelId}/additionalData`
|
|
}
|
|
}
|
|
|
|
export const locations = `${base.path.hotel}/${version}/${base.enitity.Locations}`
|
|
}
|
|
|
|
/**
|
|
* package (Swagger)
|
|
* https://tstapi.scandichotels.com/package/swagger/v1/index.html
|
|
*/
|
|
export namespace Package {
|
|
export namespace Ancillary {
|
|
export function hotel(hotelId: string) {
|
|
return `${base.path.package}/${version}/${base.enitity.Ancillary}/hotel/${hotelId}`
|
|
}
|
|
export function hotelAncillaries(hotelId: string) {
|
|
return `${base.path.package}/${version}/${base.enitity.Ancillary}/hotel/${hotelId}/ancillaries`
|
|
}
|
|
}
|
|
|
|
export namespace Breakfast {
|
|
export function hotel(hotelId: string) {
|
|
return `${base.path.package}/${version}/${base.enitity.Breakfast}/hotel/${hotelId}`
|
|
}
|
|
}
|
|
|
|
export namespace Packages {
|
|
export function hotel(hotelId: string) {
|
|
return `${base.path.package}/${version}/${base.enitity.Packages}/hotel/${hotelId}`
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* profile (Swagger)
|
|
* https://tstapi.scandichotels.com/profile/swagger/v1/index.html
|
|
*/
|
|
export namespace Profile {
|
|
export const invalidateSessions = `${base.path.profile}/${version}/${base.enitity.Profile}/invalidateSessions`
|
|
export const membership = `${base.path.profile}/${version}/${base.enitity.Profile}/membership`
|
|
export const profile = `${base.path.profile}/${version}/${base.enitity.Profile}`
|
|
export const subscriberId = `${base.path.profile}/${version}/${base.enitity.Profile}/SubscriberId`
|
|
export const link = `${base.path.profile}/${version}/${base.enitity.Profile}/link`
|
|
export const unlink = `${base.path.profile}/${version}/${base.enitity.Profile}/Unlink`
|
|
export const matchTier = `${base.path.profile}/${version}/${base.enitity.Profile}/MatchTier`
|
|
export const pointTransfer = `${base.path.profile}/${version}/${base.enitity.Profile}/PointTransfer/Partner`
|
|
|
|
export function deleteProfile(profileId: string) {
|
|
return `${profile}/${profileId}`
|
|
}
|
|
|
|
export const creditCards = `${base.path.profile}/${version}/${base.enitity.Profile}/creditCards`
|
|
export namespace CreditCards {
|
|
export const initiateSaveCard = `${creditCards}/initiateSaveCard`
|
|
|
|
export function deleteCreditCard(creditCardId: string) {
|
|
return `${creditCards}/${creditCardId}`
|
|
}
|
|
export function transaction(transactionId: string) {
|
|
return `${creditCards}/${transactionId}`
|
|
}
|
|
}
|
|
|
|
export namespace Reward {
|
|
export const allTiers = `${base.path.profile}/${version}/${base.enitity.Reward}/allTiers`
|
|
export const reward = `${base.path.profile}/${version}/${base.enitity.Reward}`
|
|
export const redeem = `${base.path.profile}/${version}/${base.enitity.Reward}/redeem`
|
|
export const unwrap = `${base.path.profile}/${version}/${base.enitity.Reward}/unwrap`
|
|
|
|
export function claim(rewardId: string) {
|
|
return `${base.path.profile}/${version}/${base.enitity.Reward}/Claim/${rewardId}`
|
|
}
|
|
}
|
|
|
|
export const enum Transaction {
|
|
friendTransactions = `${base.path.profile}/${version}/${base.enitity.Transaction}/friendTransactions`,
|
|
}
|
|
}
|
|
}
|
|
|
|
export namespace v2 {
|
|
const version = "v2"
|
|
|
|
/**
|
|
* profile (Swagger)
|
|
* https://tstapi.scandichotels.com/profile/swagger/v2/index.html
|
|
*/
|
|
export namespace Profile {
|
|
export const profile = `${base.path.profile}/${version}/${base.enitity.Profile}`
|
|
|
|
export function teamMemberCard(employeeId: string) {
|
|
return `${profile}/${employeeId}/TeamMemberCard`
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
export type Endpoint = string
|