| GET | /v2/profile/{Query}/{CendynPropertyId} | ||
|---|---|---|---|
| GET | /v2/profile/{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 ProfileExtension:
language_code: Optional[str] = None
salutation_ext: Optional[str] = None
first_name_ext: Optional[str] = None
familiar_name_ext: Optional[str] = None
middle_name_ext: Optional[str] = None
last_name_ext: Optional[str] = None
name_suffix_ext: Optional[str] = None
company_name_ext: Optional[str] = None
blacklist: Optional[str] = None
black_list_message: Optional[str] = None
anonymization_status: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Address:
address_type_code: Optional[str] = None
address_type_description: Optional[str] = None
address_status: Optional[str] = None
attn: Optional[str] = None
address1: Optional[str] = None
address2: Optional[str] = None
city: Optional[str] = None
state_province: Optional[str] = None
postal_code: Optional[str] = None
country_code: Optional[str] = None
is_primary: Optional[bool] = None
address_language: Optional[str] = None
address_cleansed: Optional[bool] = None
opt_out_marketing: Optional[bool] = None
opt_out_date: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Membership:
external_i_d: Optional[str] = None
program_code: Optional[str] = None
membership_i_d: Optional[str] = None
membership_category: Optional[str] = None
membership_name: Optional[str] = None
membership_level: Optional[str] = None
membership_status: Optional[str] = None
enrollment_code: Optional[str] = None
date_membership_starts: Optional[datetime.datetime] = None
date_membership_expires: Optional[datetime.datetime] = None
total_stays: Optional[int] = None
award_credits: Optional[int] = None
award_available: Optional[int] = None
primary_airline: Optional[bool] = None
display_sequence: Optional[int] = None
source_name: Optional[str] = None
source_i_d: Optional[str] = None
is_active: Optional[bool] = None
inactive_date: Optional[datetime.datetime] = None
points_indicator: Optional[bool] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ContactMethod:
type: Optional[str] = None
category: Optional[str] = None
data_value: Optional[str] = None
extra_data: Optional[str] = None
opt_out: Optional[bool] = None
source_date: Optional[datetime.datetime] = None
is_primary: Optional[bool] = None
confirmation: Optional[bool] = None
inactive_date: Optional[datetime.datetime] = None
opt_out_marketing: Optional[bool] = None
opt_out_date: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ActionComment:
external_i_d: Optional[str] = None
comment_type: Optional[str] = None
comment_title: Optional[str] = None
comment_class: Optional[str] = None
action_type: Optional[str] = None
comment: Optional[str] = None
action_date: Optional[datetime.datetime] = None
inactive_date: Optional[datetime.datetime] = None
guest_viewable: Optional[bool] = None
creator_code: Optional[str] = None
date_comment_created: Optional[datetime.datetime] = None
resort_code: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SpecialRequest:
external_i_d: Optional[str] = None
request_type: Optional[str] = None
request_code: Optional[str] = None
request_comments: Optional[str] = None
resort_field: Optional[str] = None
action_type_code: Optional[str] = None
action_type: Optional[str] = None
inactive_date: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class UDFDataType:
cendyn_property_i_d: Optional[str] = None
module_name: Optional[str] = None
table_name: Optional[str] = None
column_name: Optional[str] = None
udf_value: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Lead:
f_k__reservation: Optional[str] = None
external_lead_i_d: Optional[str] = None
external_lead_source: Optional[str] = None
lead_status: Optional[str] = None
lead_acquired: Optional[datetime.datetime] = None
tentative_start_date: Optional[datetime.datetime] = None
tentative_end_date: Optional[datetime.datetime] = None
assigned_agent: Optional[str] = None
assigned_date: Optional[datetime.datetime] = None
contact_method: Optional[str] = None
contact_agent: Optional[str] = None
contact_date: Optional[datetime.datetime] = None
last_followup_method: Optional[str] = None
last_followup_agent: Optional[str] = None
last_followup_date: Optional[datetime.datetime] = None
booking_method: Optional[str] = None
booking_agent: Optional[str] = None
booking_date: Optional[datetime.datetime] = None
reasonfor_stay: Optional[str] = None
market_code: Optional[str] = None
campaign_code: Optional[str] = None
campaign_name: Optional[str] = None
price_estimate: Optional[Decimal] = None
flagged_for_attention: Optional[bool] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RelatedTraveler:
cendyn_property_i_d: Optional[str] = None
property_name: Optional[str] = None
unique_i_ds: Optional[List[UniqueIDType]] = None
salutation: Optional[str] = None
first_name: Optional[str] = None
familiar_name: Optional[str] = None
middle_name: Optional[str] = None
last_name: Optional[str] = None
full_name: Optional[str] = None
suffix: Optional[str] = None
relation: Optional[str] = None
is_primary: Optional[bool] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Document:
document_i_d: Optional[str] = None
document_type: Optional[str] = None
document_source: Optional[str] = None
code_on_document: Optional[str] = None
document_notes: Optional[str] = None
name_on_document: Optional[str] = None
nationality_on_document: Optional[str] = None
effective_date: Optional[datetime.datetime] = None
expiration_date: Optional[datetime.datetime] = None
issuer: Optional[str] = None
issuer_country: Optional[str] = None
is_primary: Optional[bool] = None
pi_i__stored_as: Optional[str] = None
inactive_date: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Voucher:
hotel_code: Optional[str] = None
voucher_i_d: Optional[str] = None
voucher_i_d2: Optional[str] = None
applied_to_resort: Optional[str] = None
reservation_i_d: Optional[str] = None
profile_i_d_recipient: Optional[str] = None
subscriber_i_d_recipient: Optional[str] = None
recipient_name: Optional[str] = None
emailaddress: Optional[str] = None
profile_i_d_purchaser: Optional[str] = None
purchaser_name: Optional[str] = None
voucher_status: Optional[str] = None
voucher_type: Optional[str] = None
membership_type: Optional[str] = None
cert_code: Optional[str] = None
cert_no: Optional[str] = None
short_description: Optional[str] = None
gift_message: Optional[str] = None
comments: Optional[str] = None
voucher_amount: Optional[Decimal] = None
currency_code: Optional[str] = None
issue_type: Optional[str] = None
date_consumed: Optional[datetime.datetime] = None
expiration_date: Optional[datetime.datetime] = None
award_points: Optional[int] = None
rule_type: Optional[str] = None
rule_value: Optional[str] = None
cancel_allowed: Optional[bool] = None
max_extensions: Optional[int] = None
reference_type: Optional[str] = None
reference_i_d: Optional[str] = None
promotion_code: Optional[str] = None
reservation_consumed: Optional[bool] = None
web_consumed: Optional[bool] = None
pms_consumed: Optional[bool] = None
verify_cert_no: Optional[bool] = None
generate_in_lieu: Optional[bool] = None
creator_code: Optional[str] = None
last_updater_code: Optional[str] = None
folio_i_d: Optional[str] = None
inactive_date: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProfilePolicy:
policy_type: Optional[str] = None
attribute_name: Optional[str] = None
integer_value: Optional[int] = None
string_value: Optional[str] = None
effective_date: Optional[datetime.datetime] = None
expiration_date: Optional[datetime.datetime] = None
comments: Optional[str] = None
external_i_d: Optional[str] = None
applies_to: Optional[str] = None
applies_to_descriptor: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Profile:
cendyn_property_i_d: Optional[str] = None
property_name: Optional[str] = None
unique_i_ds: Optional[List[UniqueIDType]] = None
profile_type_code: Optional[str] = None
profile_type_description: Optional[str] = None
name_code: Optional[str] = None
profile_type_category: Optional[str] = None
job_title: Optional[str] = None
salutation: Optional[str] = None
first_name: Optional[str] = None
familiar_name: Optional[str] = None
middle_name: Optional[str] = None
last_name: Optional[str] = None
full_name: Optional[str] = None
name_suffix: Optional[str] = None
vipid: Optional[str] = None
vip_code: Optional[str] = None
primary_language: Optional[str] = None
gender_code: Optional[str] = None
dob_year: Optional[str] = None
dob_month: Optional[str] = None
dob_day_of_month: Optional[str] = None
company_name: Optional[str] = None
ar_number: Optional[str] = None
allow_mail: Optional[bool] = None
allow_e_mail: Optional[bool] = None
guest_priv: Optional[bool] = None
allow_phone: Optional[bool] = None
allow_s_m_s: Optional[bool] = None
allow_history: Optional[bool] = None
allow_market_research: Optional[bool] = None
allow_third_party: Optional[bool] = None
allow_loyalty_program: Optional[bool] = None
creator_code: Optional[str] = None
last_updater_code: Optional[str] = None
date_profile_created: Optional[datetime.datetime] = None
date_profile_updated: Optional[datetime.datetime] = None
inactive_date: Optional[datetime.datetime] = None
nationality: Optional[str] = None
resort_code: Optional[str] = None
retired_profile_id: Optional[str] = None
transferred_subscription_id: Optional[str] = None
source_name: Optional[str] = None
source_i_d: Optional[str] = None
opt_out_marketing: Optional[bool] = None
opt_out_date: Optional[datetime.datetime] = None
profile_extension: Optional[ProfileExtension] = None
addresses: Optional[List[Address]] = None
memberships: Optional[List[Membership]] = None
contact_methods: Optional[List[ContactMethod]] = None
action_comments: Optional[List[ActionComment]] = None
special_requests: Optional[List[SpecialRequest]] = None
udf_data_collection: Optional[List[UDFDataType]] = None
lead: Optional[Lead] = None
related_travelers: Optional[List[RelatedTraveler]] = None
documents: Optional[List[Document]] = None
vouchers: Optional[List[Voucher]] = None
profile_policies: Optional[List[ProfilePolicy]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProfileResponse(CenResResponse):
records: Optional[List[Profile]] = None
class ProfileQueryType(str, Enum):
PROFILE_ID = 'ProfileId'
NAME = 'Name'
LAST_UPDATED = 'LastUpdated'
EMAIL = 'Email'
MEMBERSHIP_ID = 'MembershipId'
PHONE_NUMBER = 'PhoneNumber'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProfileRequest:
cendyn_property_id: Optional[str] = None
query: Optional[ProfileQueryType] = None
id: Optional[str] = None
membership_id: Optional[str] = None
email_address: Optional[str] = None
last_name: Optional[str] = None
first_name: Optional[str] = None
phone_number: Optional[str] = None
start_date: Optional[datetime.datetime] = None
end_date: Optional[datetime.datetime] = None
page_size: Optional[int] = None
page_number: Optional[int] = None
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /v2/profile/{Query}/{CendynPropertyId} HTTP/1.1
Host: cert.cendyn.com
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length
{"records":[{"cendynPropertyID":"String","propertyName":"String","uniqueIDs":[{"id":"String","type":"String","context":"String"}],"profileTypeCode":"String","profileTypeDescription":"String","nameCode":"String","profileTypeCategory":"String","jobTitle":"String","salutation":"String","firstName":"String","familiarName":"String","middleName":"String","lastName":"String","fullName":"String","nameSuffix":"String","vipid":"String","vipCode":"String","primaryLanguage":"String","genderCode":"String","dobYear":"String","dobMonth":"String","dobDayOfMonth":"String","companyName":"String","arNumber":"String","allowMail":false,"allowEMail":false,"guestPriv":false,"allowPhone":false,"allowSMS":false,"allowHistory":false,"allowMarketResearch":false,"allowThirdParty":false,"allowLoyaltyProgram":false,"creatorCode":"String","lastUpdaterCode":"String","dateProfileCreated":"0001-01-01T00:00:00.0000000","dateProfileUpdated":"0001-01-01T00:00:00.0000000","inactiveDate":"0001-01-01T00:00:00.0000000","nationality":"String","resortCode":"String","retiredProfileId":"String","transferredSubscriptionId":"String","sourceName":"String","sourceID":"String","optOutMarketing":false,"optOutDate":"0001-01-01T00:00:00.0000000","profileExtension":{"languageCode":"String","salutationExt":"String","firstNameExt":"String","familiarNameExt":"String","middleNameExt":"String","lastNameExt":"String","nameSuffixExt":"String","companyNameExt":"String","blacklist":"String","blackListMessage":"String","anonymizationStatus":"String"},"addresses":[{"addressTypeCode":"String","addressTypeDescription":"String","addressStatus":"String","attn":"String","address1":"String","address2":"String","city":"String","stateProvince":"String","postalCode":"String","countryCode":"String","isPrimary":false,"addressLanguage":"String","addressCleansed":false,"optOutMarketing":false,"optOutDate":"0001-01-01T00:00:00.0000000"}],"memberships":[{"externalID":"String","programCode":"String","membershipID":"String","membershipCategory":"String","membershipName":"String","membershipLevel":"String","membershipStatus":"String","enrollmentCode":"String","dateMembershipStarts":"0001-01-01T00:00:00.0000000","dateMembershipExpires":"0001-01-01T00:00:00.0000000","totalStays":0,"awardCredits":0,"awardAvailable":0,"primaryAirline":false,"displaySequence":0,"sourceName":"String","sourceID":"String","isActive":false,"inactiveDate":"0001-01-01T00:00:00.0000000","pointsIndicator":false}],"contactMethods":[{"type":"String","category":"String","dataValue":"String","extraData":"String","optOut":false,"sourceDate":"0001-01-01T00:00:00.0000000","isPrimary":false,"confirmation":false,"inactiveDate":"0001-01-01T00:00:00.0000000","optOutMarketing":false,"optOutDate":"0001-01-01T00:00:00.0000000"}],"actionComments":[{"externalID":"String","commentType":"String","commentTitle":"String","commentClass":"String","actionType":"String","comment":"String","actionDate":"0001-01-01T00:00:00.0000000","inactiveDate":"0001-01-01T00:00:00.0000000","guestViewable":false,"creatorCode":"String","dateCommentCreated":"0001-01-01T00:00:00.0000000","resortCode":"String"}],"specialRequests":[{"externalID":"String","requestType":"String","requestCode":"String","requestComments":"String","resortField":"String","actionTypeCode":"String","actionType":"String","inactiveDate":"0001-01-01T00:00:00.0000000"}],"udfDataCollection":[{"cendynPropertyID":"String","moduleName":"String","tableName":"String","columnName":"String","udfValue":"String"}],"lead":{"fK_Reservation":"00000000000000000000000000000000","externalLeadID":"String","externalLeadSource":"String","leadStatus":"String","leadAcquired":"0001-01-01T00:00:00.0000000","tentativeStartDate":"0001-01-01T00:00:00.0000000","tentativeEndDate":"0001-01-01T00:00:00.0000000","assignedAgent":"String","assignedDate":"0001-01-01T00:00:00.0000000","contactMethod":"String","contactAgent":"String","contactDate":"0001-01-01T00:00:00.0000000","lastFollowupMethod":"String","lastFollowupAgent":"String","lastFollowupDate":"0001-01-01T00:00:00.0000000","bookingMethod":"String","bookingAgent":"String","bookingDate":"0001-01-01T00:00:00.0000000","reasonforStay":"String","marketCode":"String","campaignCode":"String","campaignName":"String","priceEstimate":0,"flaggedForAttention":false},"relatedTravelers":[{"cendynPropertyID":"String","propertyName":"String","uniqueIDs":[{"id":"String","type":"String","context":"String"}],"salutation":"String","firstName":"String","familiarName":"String","middleName":"String","lastName":"String","fullName":"String","suffix":"String","relation":"String","isPrimary":false}],"documents":[{"documentID":"String","documentType":"String","documentSource":"String","codeOnDocument":"String","documentNotes":"String","nameOnDocument":"String","nationalityOnDocument":"String","effectiveDate":"0001-01-01T00:00:00.0000000","expirationDate":"0001-01-01T00:00:00.0000000","issuer":"String","issuerCountry":"String","isPrimary":false,"piI_StoredAs":"String","inactiveDate":"0001-01-01T00:00:00.0000000"}],"vouchers":[{"hotelCode":"String","voucherID":"String","voucherID2":"String","appliedToResort":"String","reservationID":"String","profileIDRecipient":"String","subscriberIDRecipient":"String","recipientName":"String","emailaddress":"String","profileIDPurchaser":"String","purchaserName":"String","voucherStatus":"String","voucherType":"String","membershipType":"String","certCode":"String","certNo":"String","shortDescription":"String","giftMessage":"String","comments":"String","voucherAmount":0,"currencyCode":"String","issueType":"String","dateConsumed":"0001-01-01T00:00:00.0000000","expirationDate":"0001-01-01T00:00:00.0000000","awardPoints":0,"ruleType":"String","ruleValue":"String","cancelAllowed":false,"maxExtensions":0,"referenceType":"String","referenceID":"String","promotionCode":"String","reservationConsumed":false,"webConsumed":false,"pmsConsumed":false,"verifyCertNo":false,"generateInLieu":false,"creatorCode":"String","lastUpdaterCode":"String","folioID":"String","inactiveDate":"0001-01-01T00:00:00.0000000"}],"profilePolicies":[{"policyType":"String","attributeName":"String","integerValue":0,"stringValue":"String","effectiveDate":"0001-01-01T00:00:00.0000000","expirationDate":"0001-01-01T00:00:00.0000000","comments":"String","externalID":"String","appliesTo":"String","appliesToDescriptor":"String"}]}],"status":"Success","statusMessage":"String","recordsReturned":0,"recordsAvailable":0,"pageNumber":0,"pageSize":0}