CenResService

<back to all web services

HotelRate

The following routes are available for this service:
POST/hotelrate/{SubscriptionId}/{CendynPropertyId}
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


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Response:
    status_code: Optional[str] = None
    record_count: Optional[int] = None
    error_count: Optional[int] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RateType:
    hotel_code: Optional[str] = None
    rate_code: Optional[str] = None
    rate_category: Optional[str] = None
    rate_name: Optional[str] = None
    start_date: Optional[datetime.datetime] = None
    end_date: Optional[datetime.datetime] = None
    rate_status: Optional[str] = None
    base_rate_code: Optional[str] = None
    market_code: Optional[str] = None
    confidential: Optional[bool] = None
    meals_included: Optional[bool] = None
    tax_included_indicator: Optional[str] = None
    rate_category_description: Optional[str] = None
    display_text: Optional[str] = None
    short_description: Optional[str] = None
    long_description: Optional[str] = None
    min_l_o_s: Optional[int] = None
    source_name: Optional[str] = None
    source_i_d: Optional[str] = None
    rate_adjust_direction: Optional[str] = None
    rate_adjust_amount: Optional[Decimal] = None
    rate_adjust_percent: Optional[Decimal] = None
    currency_code: Optional[str] = None
    is_daily: Optional[bool] = None
    is_active: Optional[bool] = None
    inactive_date: Optional[datetime.datetime] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RateChargeDetail:
    charge_code: Optional[str] = None
    is_base_rate: Optional[bool] = None
    rate_before_tax: Optional[Decimal] = None
    rate_after_tax: Optional[Decimal] = None
    unit_count: Optional[int] = None
    tax_amount: Optional[Decimal] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RateGuestCountDetail:
    guest_count: Optional[int] = None
    min_rate: Optional[Decimal] = None
    max_rate: Optional[Decimal] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Rate:
    hotel_code: Optional[str] = None
    rate_code: Optional[str] = None
    room_code: Optional[str] = None
    start_date: Optional[datetime.datetime] = None
    end_date: Optional[datetime.datetime] = None
    rate1: Optional[Decimal] = None
    rate2: Optional[Decimal] = None
    rate3: Optional[Decimal] = None
    rate4: Optional[Decimal] = None
    extra_adult: Optional[Decimal] = None
    extra_child: Optional[Decimal] = None
    extra_bed: Optional[Decimal] = None
    currency_code: Optional[str] = None
    free_child_limit: Optional[int] = None
    include_monday: Optional[bool] = None
    include_tuesday: Optional[bool] = None
    include_wednesday: Optional[bool] = None
    include_thursday: Optional[bool] = None
    include_friday: Optional[bool] = None
    include_saturday: Optional[bool] = None
    include_sunday: Optional[bool] = None
    customer_segment: Optional[str] = None
    source_name: Optional[str] = None
    source_i_d: Optional[str] = None
    is_active: Optional[bool] = None
    inactive_date: Optional[datetime.datetime] = None
    rate_set_i_d: Optional[str] = None
    rate_charge_details: Optional[List[RateChargeDetail]] = None
    rate_guest_count_details: Optional[List[RateGuestCountDetail]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RateContainer:
    echo_token: Optional[str] = None
    rate_type: Optional[RateType] = None
    change_action: Optional[str] = None
    rates: Optional[List[Rate]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class HotelRate:
    rate_container: Optional[RateContainer] = None
    subscription_id: Optional[str] = None
    cendyn_property_id: Optional[str] = None

Python HotelRate DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml

HTTP + XML

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /hotelrate/{SubscriptionId}/{CendynPropertyId} HTTP/1.1 
Host: cert.cendyn.com 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<HotelRate xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CenResSS.ServiceModel">
  <CendynPropertyId>String</CendynPropertyId>
  <RateContainer>
    <ChangeAction>String</ChangeAction>
    <EchoToken>String</EchoToken>
    <RateType>
      <BaseRateCode>String</BaseRateCode>
      <Confidential>false</Confidential>
      <CurrencyCode>String</CurrencyCode>
      <DisplayText>String</DisplayText>
      <EndDate>0001-01-01T00:00:00</EndDate>
      <HotelCode>String</HotelCode>
      <InactiveDate>0001-01-01T00:00:00</InactiveDate>
      <IsActive>false</IsActive>
      <IsDaily>false</IsDaily>
      <LongDescription>String</LongDescription>
      <MarketCode>String</MarketCode>
      <MealsIncluded>false</MealsIncluded>
      <MinLOS>0</MinLOS>
      <RateAdjustAmount>0</RateAdjustAmount>
      <RateAdjustDirection>String</RateAdjustDirection>
      <RateAdjustPercent>0</RateAdjustPercent>
      <RateCategory>String</RateCategory>
      <RateCategoryDescription>String</RateCategoryDescription>
      <RateCode>String</RateCode>
      <RateName>String</RateName>
      <RateStatus>String</RateStatus>
      <ShortDescription>String</ShortDescription>
      <SourceID>String</SourceID>
      <SourceName>String</SourceName>
      <StartDate>0001-01-01T00:00:00</StartDate>
      <TaxIncludedIndicator>String</TaxIncludedIndicator>
    </RateType>
    <Rates>
      <Rate>
        <CurrencyCode>String</CurrencyCode>
        <CustomerSegment>String</CustomerSegment>
        <EndDate>0001-01-01T00:00:00</EndDate>
        <ExtraAdult>0</ExtraAdult>
        <ExtraBed>0</ExtraBed>
        <ExtraChild>0</ExtraChild>
        <FreeChildLimit>0</FreeChildLimit>
        <HotelCode>String</HotelCode>
        <InactiveDate>0001-01-01T00:00:00</InactiveDate>
        <IncludeFriday>false</IncludeFriday>
        <IncludeMonday>false</IncludeMonday>
        <IncludeSaturday>false</IncludeSaturday>
        <IncludeSunday>false</IncludeSunday>
        <IncludeThursday>false</IncludeThursday>
        <IncludeTuesday>false</IncludeTuesday>
        <IncludeWednesday>false</IncludeWednesday>
        <IsActive>false</IsActive>
        <Rate1>0</Rate1>
        <Rate2>0</Rate2>
        <Rate3>0</Rate3>
        <Rate4>0</Rate4>
        <RateChargeDetails>
          <RateChargeDetail>
            <ChargeCode>String</ChargeCode>
            <IsBaseRate>false</IsBaseRate>
            <RateAfterTax>0</RateAfterTax>
            <RateBeforeTax>0</RateBeforeTax>
            <TaxAmount>0</TaxAmount>
            <UnitCount>0</UnitCount>
          </RateChargeDetail>
        </RateChargeDetails>
        <RateCode>String</RateCode>
        <RateGuestCountDetails>
          <RateGuestCountDetail>
            <GuestCount>0</GuestCount>
            <MaxRate>0</MaxRate>
            <MinRate>0</MinRate>
          </RateGuestCountDetail>
        </RateGuestCountDetails>
        <RateSetID>String</RateSetID>
        <RoomCode>String</RoomCode>
        <SourceID>String</SourceID>
        <SourceName>String</SourceName>
        <StartDate>0001-01-01T00:00:00</StartDate>
      </Rate>
    </Rates>
  </RateContainer>
  <SubscriptionId>String</SubscriptionId>
</HotelRate>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<Response xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CenResSS.ServiceModel">
  <ErrorCount>0</ErrorCount>
  <RecordCount>0</RecordCount>
  <StatusCode>String</StatusCode>
</Response>