| GET | /v2/stayhistory/{Query}/{CendynPropertyId} | ||
|---|---|---|---|
| GET | /v2/stayhistory/{Query} |
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
class RequestStatus(str, Enum):
SUCCESS = 'Success'
WARNING = 'Warning'
ERROR = 'Error'
NOT_AUTHORIZED = 'NotAuthorized'
FAILURE = 'Failure'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CenResResponse:
status: Optional[RequestStatus] = None
status_message: Optional[str] = None
records_returned: Optional[int] = None
records_available: Optional[int] = None
page_number: Optional[int] = None
page_size: Optional[int] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class UniqueIDType:
id: Optional[str] = None
type: Optional[str] = None
context: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class StayHistoryRevenue:
record_status: Optional[str] = None
revenue_group: Optional[str] = None
revenue_type: Optional[str] = None
amount: Optional[Decimal] = None
currency_code: Optional[str] = None
folio_window: Optional[str] = None
transaction_date: Optional[datetime.datetime] = None
inactive_date: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class StayHistoryDailyRate:
record_status: Optional[str] = None
transaction_date: Optional[datetime.datetime] = None
rate_code: Optional[str] = None
market_code: Optional[str] = None
amount: Optional[Decimal] = None
currency_code: Optional[str] = None
room_number: Optional[str] = None
resource_i_d: Optional[str] = None
pseudo_room: Optional[str] = None
room_category: Optional[str] = None
rate_room_type: Optional[str] = None
inactive_date: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class StayHistory:
cendyn_property_i_d: Optional[str] = None
resort_i_d: Optional[str] = None
external_profile_i_d1: Optional[str] = None
external_res_id1: Optional[str] = None
crs_book_no: Optional[str] = None
resort_book_no: Optional[str] = None
resort_leg_no: Optional[int] = None
confirmation_i_d: Optional[str] = None
reservation_status: Optional[str] = None
has_daily_rooms: Optional[bool] = None
rate_room_type: Optional[str] = None
actual_arrival_date: Optional[datetime.datetime] = None
actual_departure_date: Optional[datetime.datetime] = None
book_date: Optional[datetime.datetime] = None
booked_arrival_date: Optional[datetime.datetime] = None
booked_departure_date: Optional[datetime.datetime] = None
comp_y_n: Optional[str] = None
adults: Optional[int] = None
children: Optional[int] = None
room_category: Optional[str] = None
room_number: Optional[str] = None
rate_amount: Optional[Decimal] = None
rate_code: Optional[str] = None
rate_amount_currency_code: Optional[str] = None
currency_code: Optional[str] = None
source_code: Optional[str] = None
market_code: Optional[str] = None
travel_agent_i_d: Optional[str] = None
company_i_d: Optional[str] = None
channel: Optional[str] = None
payment_method: Optional[str] = None
rate_currency_code: Optional[str] = None
total_revenue: Optional[Decimal] = None
room_revenue: Optional[Decimal] = None
fb_revenue: Optional[Decimal] = None
membership_type: Optional[str] = None
membership_i_d: Optional[str] = None
transaction_i_d: Optional[str] = None
transaction_status: Optional[str] = None
unique_i_ds: Optional[List[UniqueIDType]] = None
stay_history_revenue_collection: Optional[List[StayHistoryRevenue]] = None
stay_history_daily_rate_collection: Optional[List[StayHistoryDailyRate]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class StayHistoryResponse(CenResResponse):
records: Optional[List[StayHistory]] = None
class StayHistoryQueryType(str, Enum):
PROFILE_ID = 'ProfileId'
RES_ID = 'ResId'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class StayHistoryRequest:
cendyn_property_id: Optional[str] = None
query: Optional[StayHistoryQueryType] = None
id: Optional[str] = None
Python StayHistoryRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /v2/stayhistory/{Query}/{CendynPropertyId} HTTP/1.1
Host: cert.cendyn.com
Accept: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length
<StayHistoryResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CenResSS.ServiceModel">
<PageNumber>0</PageNumber>
<PageSize>0</PageSize>
<RecordsAvailable>0</RecordsAvailable>
<RecordsReturned>0</RecordsReturned>
<Status>Success</Status>
<StatusMessage>String</StatusMessage>
<Records>
<StayHistory>
<ActualArrivalDate>0001-01-01T00:00:00</ActualArrivalDate>
<ActualDepartureDate>0001-01-01T00:00:00</ActualDepartureDate>
<Adults>0</Adults>
<BookDate>0001-01-01T00:00:00</BookDate>
<BookedArrivalDate>0001-01-01T00:00:00</BookedArrivalDate>
<BookedDepartureDate>0001-01-01T00:00:00</BookedDepartureDate>
<CRSBookNo>String</CRSBookNo>
<CendynPropertyID>String</CendynPropertyID>
<Channel>String</Channel>
<Children>0</Children>
<CompYN>String</CompYN>
<CompanyID>String</CompanyID>
<ConfirmationID>String</ConfirmationID>
<CurrencyCode>String</CurrencyCode>
<ExternalProfileID1>String</ExternalProfileID1>
<ExternalResId1>String</ExternalResId1>
<FbRevenue>0</FbRevenue>
<HasDailyRooms>false</HasDailyRooms>
<MarketCode>String</MarketCode>
<MembershipID>String</MembershipID>
<MembershipType>String</MembershipType>
<PaymentMethod>String</PaymentMethod>
<RateAmount>0</RateAmount>
<RateAmountCurrencyCode>String</RateAmountCurrencyCode>
<RateCode>String</RateCode>
<RateCurrencyCode>String</RateCurrencyCode>
<RateRoomType>String</RateRoomType>
<ReservationStatus>String</ReservationStatus>
<ResortBookNo>String</ResortBookNo>
<ResortID>String</ResortID>
<ResortLegNo>0</ResortLegNo>
<RoomCategory>String</RoomCategory>
<RoomNumber>String</RoomNumber>
<RoomRevenue>0</RoomRevenue>
<SourceCode>String</SourceCode>
<StayHistoryDailyRateCollection>
<StayHistoryDailyRate>
<Amount>0</Amount>
<CurrencyCode>String</CurrencyCode>
<InactiveDate>0001-01-01T00:00:00</InactiveDate>
<MarketCode>String</MarketCode>
<PseudoRoom>String</PseudoRoom>
<RateCode>String</RateCode>
<RateRoomType>String</RateRoomType>
<RecordStatus>String</RecordStatus>
<ResourceID>String</ResourceID>
<RoomCategory>String</RoomCategory>
<RoomNumber>String</RoomNumber>
<TransactionDate>0001-01-01T00:00:00</TransactionDate>
</StayHistoryDailyRate>
</StayHistoryDailyRateCollection>
<StayHistoryRevenueCollection>
<StayHistoryRevenue>
<Amount>0</Amount>
<CurrencyCode>String</CurrencyCode>
<FolioWindow>String</FolioWindow>
<InactiveDate>0001-01-01T00:00:00</InactiveDate>
<RecordStatus>String</RecordStatus>
<RevenueGroup>String</RevenueGroup>
<RevenueType>String</RevenueType>
<TransactionDate>0001-01-01T00:00:00</TransactionDate>
</StayHistoryRevenue>
</StayHistoryRevenueCollection>
<TotalRevenue>0</TotalRevenue>
<TransactionID>String</TransactionID>
<TransactionStatus>String</TransactionStatus>
<TravelAgentID>String</TravelAgentID>
<UniqueIDs>
<UniqueIDType>
<Context>String</Context>
<ID>String</ID>
<Type>String</Type>
</UniqueIDType>
</UniqueIDs>
</StayHistory>
</Records>
</StayHistoryResponse>