CenResService

<back to all web services

ProfileRequest

The following routes are available for this service:
GET/v2/profile/{Query}/{CendynPropertyId}
GET/v2/profile/{Query}
import Foundation
import ServiceStack

public class ProfileRequest : Codable
{
    public var cendynPropertyId:String?
    public var query:ProfileQueryType?
    public var id:String?
    public var membershipId:String?
    public var emailAddress:String?
    public var lastName:String?
    public var firstName:String?
    public var phoneNumber:String?
    public var startDate:Date?
    public var endDate:Date?
    // @DataMember(Name="Limit")
    public var pageSize:Int?

    // @DataMember(Name="Page")
    public var pageNumber:Int?

    required public init(){}
}

public enum ProfileQueryType : String, Codable
{
    case ProfileId
    case Name
    case LastUpdated
    case Email
    case MembershipId
    case PhoneNumber
}

public class ProfileResponse : CenResResponse
{
    public var records:[Profile] = []

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case records
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        records = try container.decodeIfPresent([Profile].self, forKey: .records) ?? []
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if records.count > 0 { try container.encode(records, forKey: .records) }
    }
}

public class CenResResponse : Codable
{
    public var status:RequestStatus?
    public var statusMessage:String?
    public var recordsReturned:Int?
    public var recordsAvailable:Int?
    public var pageNumber:Int?
    public var pageSize:Int?

    required public init(){}
}

public enum RequestStatus : String, Codable
{
    case Success
    case Warning
    case Error
    case NotAuthorized
    case Failure
}

public class Profile : Codable
{
    public var cendynPropertyID:String?
    public var propertyName:String?
    public var uniqueIDs:[UniqueIDType] = []
    public var profileTypeCode:String?
    public var profileTypeDescription:String?
    public var nameCode:String?
    public var profileTypeCategory:String?
    public var jobTitle:String?
    public var salutation:String?
    public var firstName:String?
    public var familiarName:String?
    public var middleName:String?
    public var lastName:String?
    public var fullName:String?
    public var nameSuffix:String?
    public var vipid:String?
    public var vipCode:String?
    public var primaryLanguage:String?
    public var genderCode:String?
    public var dobYear:String?
    public var dobMonth:String?
    public var dobDayOfMonth:String?
    public var companyName:String?
    public var arNumber:String?
    public var allowMail:Bool?
    public var allowEMail:Bool?
    public var guestPriv:Bool?
    public var allowPhone:Bool?
    public var allowSMS:Bool?
    public var allowHistory:Bool?
    public var allowMarketResearch:Bool?
    public var allowThirdParty:Bool?
    public var allowLoyaltyProgram:Bool?
    public var creatorCode:String?
    public var lastUpdaterCode:String?
    public var dateProfileCreated:Date?
    public var dateProfileUpdated:Date?
    public var inactiveDate:Date?
    public var nationality:String?
    public var resortCode:String?
    public var retiredProfileId:String?
    public var transferredSubscriptionId:String?
    public var sourceName:String?
    public var sourceID:String?
    public var optOutMarketing:Bool?
    public var optOutDate:Date?
    public var profileExtension:ProfileExtension?
    public var addresses:[Address] = []
    public var memberships:[Membership] = []
    public var contactMethods:[ContactMethod] = []
    public var actionComments:[ActionComment] = []
    public var specialRequests:[SpecialRequest] = []
    public var udfDataCollection:[UDFDataType] = []
    public var lead:Lead?
    public var relatedTravelers:[RelatedTraveler] = []
    public var documents:[Document] = []
    public var vouchers:[Voucher] = []
    public var profilePolicies:[ProfilePolicy] = []

    required public init(){}
}

public class UniqueIDType : Codable
{
    public var id:String?
    public var type:String?
    public var context:String?

    required public init(){}
}

public class ProfileExtension : Codable
{
    public var languageCode:String?
    public var salutationExt:String?
    public var firstNameExt:String?
    public var familiarNameExt:String?
    public var middleNameExt:String?
    public var lastNameExt:String?
    public var nameSuffixExt:String?
    public var companyNameExt:String?
    public var blacklist:String?
    public var blackListMessage:String?
    public var anonymizationStatus:String?

    required public init(){}
}

public class Address : Codable
{
    public var addressTypeCode:String?
    public var addressTypeDescription:String?
    public var addressStatus:String?
    public var attn:String?
    public var address1:String?
    public var address2:String?
    public var city:String?
    public var stateProvince:String?
    public var postalCode:String?
    public var countryCode:String?
    public var isPrimary:Bool?
    public var addressLanguage:String?
    public var addressCleansed:Bool?
    public var optOutMarketing:Bool?
    public var optOutDate:Date?

    required public init(){}
}

public class Membership : Codable
{
    public var externalID:String?
    public var programCode:String?
    public var membershipID:String?
    public var membershipCategory:String?
    public var membershipName:String?
    public var membershipLevel:String?
    public var membershipStatus:String?
    public var enrollmentCode:String?
    public var dateMembershipStarts:Date?
    public var dateMembershipExpires:Date?
    public var totalStays:Int?
    public var awardCredits:Int?
    public var awardAvailable:Int?
    public var primaryAirline:Bool?
    public var displaySequence:Int?
    public var sourceName:String?
    public var sourceID:String?
    public var isActive:Bool?
    public var inactiveDate:Date?
    public var pointsIndicator:Bool?

    required public init(){}
}

public class ContactMethod : Codable
{
    public var type:String?
    public var category:String?
    public var dataValue:String?
    public var extraData:String?
    public var optOut:Bool?
    public var sourceDate:Date?
    public var isPrimary:Bool?
    public var confirmation:Bool?
    public var inactiveDate:Date?
    public var optOutMarketing:Bool?
    public var optOutDate:Date?

    required public init(){}
}

public class ActionComment : Codable
{
    public var externalID:String?
    public var commentType:String?
    public var commentTitle:String?
    public var commentClass:String?
    public var actionType:String?
    public var comment:String?
    public var actionDate:Date?
    public var inactiveDate:Date?
    public var guestViewable:Bool?
    public var creatorCode:String?
    public var dateCommentCreated:Date?
    public var resortCode:String?

    required public init(){}
}

public class SpecialRequest : Codable
{
    public var externalID:String?
    public var requestType:String?
    public var requestCode:String?
    public var requestComments:String?
    public var resortField:String?
    public var actionTypeCode:String?
    public var actionType:String?
    public var inactiveDate:Date?

    required public init(){}
}

public class UDFDataType : Codable
{
    public var cendynPropertyID:String?
    public var moduleName:String?
    public var tableName:String?
    public var columnName:String?
    public var udfValue:String?

    required public init(){}
}

public class Lead : Codable
{
    public var fK_Reservation:String?
    public var externalLeadID:String?
    public var externalLeadSource:String?
    public var leadStatus:String?
    public var leadAcquired:Date?
    public var tentativeStartDate:Date?
    public var tentativeEndDate:Date?
    public var assignedAgent:String?
    public var assignedDate:Date?
    public var contactMethod:String?
    public var contactAgent:String?
    public var contactDate:Date?
    public var lastFollowupMethod:String?
    public var lastFollowupAgent:String?
    public var lastFollowupDate:Date?
    public var bookingMethod:String?
    public var bookingAgent:String?
    public var bookingDate:Date?
    public var reasonforStay:String?
    public var marketCode:String?
    public var campaignCode:String?
    public var campaignName:String?
    public var priceEstimate:Double?
    public var flaggedForAttention:Bool?

    required public init(){}
}

public class RelatedTraveler : Codable
{
    public var cendynPropertyID:String?
    public var propertyName:String?
    public var uniqueIDs:[UniqueIDType] = []
    public var salutation:String?
    public var firstName:String?
    public var familiarName:String?
    public var middleName:String?
    public var lastName:String?
    public var fullName:String?
    public var suffix:String?
    public var relation:String?
    public var isPrimary:Bool?

    required public init(){}
}

public class Document : Codable
{
    public var documentID:String?
    public var documentType:String?
    public var documentSource:String?
    public var codeOnDocument:String?
    public var documentNotes:String?
    public var nameOnDocument:String?
    public var nationalityOnDocument:String?
    public var effectiveDate:Date?
    public var expirationDate:Date?
    public var issuer:String?
    public var issuerCountry:String?
    public var isPrimary:Bool?
    public var piI_StoredAs:String?
    public var inactiveDate:Date?

    required public init(){}
}

public class Voucher : Codable
{
    public var hotelCode:String?
    public var voucherID:String?
    public var voucherID2:String?
    public var appliedToResort:String?
    public var reservationID:String?
    public var profileIDRecipient:String?
    public var subscriberIDRecipient:String?
    public var recipientName:String?
    public var emailaddress:String?
    public var profileIDPurchaser:String?
    public var purchaserName:String?
    public var voucherStatus:String?
    public var voucherType:String?
    public var membershipType:String?
    public var certCode:String?
    public var certNo:String?
    public var shortDescription:String?
    public var giftMessage:String?
    public var comments:String?
    public var voucherAmount:Double?
    public var currencyCode:String?
    public var issueType:String?
    public var dateConsumed:Date?
    public var expirationDate:Date?
    public var awardPoints:Int?
    public var ruleType:String?
    public var ruleValue:String?
    public var cancelAllowed:Bool?
    public var maxExtensions:Int?
    public var referenceType:String?
    public var referenceID:String?
    public var promotionCode:String?
    public var reservationConsumed:Bool?
    public var webConsumed:Bool?
    public var pmsConsumed:Bool?
    public var verifyCertNo:Bool?
    public var generateInLieu:Bool?
    public var creatorCode:String?
    public var lastUpdaterCode:String?
    public var folioID:String?
    public var inactiveDate:Date?

    required public init(){}
}

public class ProfilePolicy : Codable
{
    public var policyType:String?
    public var attributeName:String?
    public var integerValue:Int?
    public var stringValue:String?
    public var effectiveDate:Date?
    public var expirationDate:Date?
    public var comments:String?
    public var externalID:String?
    public var appliesTo:String?
    public var appliesToDescriptor:String?

    required public init(){}
}


Swift ProfileRequest 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.

GET /v2/profile/{Query}/{CendynPropertyId} HTTP/1.1 
Host: cert.cendyn.com 
Accept: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<ProfileResponse 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>
    <Profile>
      <ARNumber>String</ARNumber>
      <ActionComments>
        <ActionComment>
          <ActionDate>0001-01-01T00:00:00</ActionDate>
          <ActionType>String</ActionType>
          <Comment>String</Comment>
          <CommentClass>String</CommentClass>
          <CommentTitle>String</CommentTitle>
          <CommentType>String</CommentType>
          <CreatorCode>String</CreatorCode>
          <DateCommentCreated>0001-01-01T00:00:00</DateCommentCreated>
          <ExternalID>String</ExternalID>
          <GuestViewable>false</GuestViewable>
          <InactiveDate>0001-01-01T00:00:00</InactiveDate>
          <ResortCode>String</ResortCode>
        </ActionComment>
      </ActionComments>
      <Addresses>
        <Address>
          <Address1>String</Address1>
          <Address2>String</Address2>
          <AddressCleansed>false</AddressCleansed>
          <AddressLanguage>String</AddressLanguage>
          <AddressStatus>String</AddressStatus>
          <AddressTypeCode>String</AddressTypeCode>
          <AddressTypeDescription>String</AddressTypeDescription>
          <Attn>String</Attn>
          <City>String</City>
          <CountryCode>String</CountryCode>
          <IsPrimary>false</IsPrimary>
          <OptOutDate>0001-01-01T00:00:00</OptOutDate>
          <OptOutMarketing>false</OptOutMarketing>
          <PostalCode>String</PostalCode>
          <StateProvince>String</StateProvince>
        </Address>
      </Addresses>
      <AllowEMail>false</AllowEMail>
      <AllowHistory>false</AllowHistory>
      <AllowLoyaltyProgram>false</AllowLoyaltyProgram>
      <AllowMail>false</AllowMail>
      <AllowMarketResearch>false</AllowMarketResearch>
      <AllowPhone>false</AllowPhone>
      <AllowSMS>false</AllowSMS>
      <AllowThirdParty>false</AllowThirdParty>
      <CendynPropertyID>String</CendynPropertyID>
      <CompanyName>String</CompanyName>
      <ContactMethods>
        <ContactMethod>
          <Category>String</Category>
          <Confirmation>false</Confirmation>
          <DataValue>String</DataValue>
          <ExtraData>String</ExtraData>
          <InactiveDate>0001-01-01T00:00:00</InactiveDate>
          <IsPrimary>false</IsPrimary>
          <OptOut>false</OptOut>
          <OptOutDate>0001-01-01T00:00:00</OptOutDate>
          <OptOutMarketing>false</OptOutMarketing>
          <SourceDate>0001-01-01T00:00:00</SourceDate>
          <Type>String</Type>
        </ContactMethod>
      </ContactMethods>
      <CreatorCode>String</CreatorCode>
      <DOBDayOfMonth>String</DOBDayOfMonth>
      <DOBMonth>String</DOBMonth>
      <DOBYear>String</DOBYear>
      <DateProfileCreated>0001-01-01T00:00:00</DateProfileCreated>
      <DateProfileUpdated>0001-01-01T00:00:00</DateProfileUpdated>
      <Documents>
        <Document>
          <CodeOnDocument>String</CodeOnDocument>
          <DocumentID>String</DocumentID>
          <DocumentNotes>String</DocumentNotes>
          <DocumentSource>String</DocumentSource>
          <DocumentType>String</DocumentType>
          <EffectiveDate>0001-01-01T00:00:00</EffectiveDate>
          <ExpirationDate>0001-01-01T00:00:00</ExpirationDate>
          <InactiveDate>0001-01-01T00:00:00</InactiveDate>
          <IsPrimary>false</IsPrimary>
          <Issuer>String</Issuer>
          <IssuerCountry>String</IssuerCountry>
          <NameOnDocument>String</NameOnDocument>
          <NationalityOnDocument>String</NationalityOnDocument>
          <PII_StoredAs>String</PII_StoredAs>
        </Document>
      </Documents>
      <FamiliarName>String</FamiliarName>
      <FirstName>String</FirstName>
      <FullName>String</FullName>
      <GenderCode>String</GenderCode>
      <GuestPriv>false</GuestPriv>
      <InactiveDate>0001-01-01T00:00:00</InactiveDate>
      <JobTitle>String</JobTitle>
      <LastName>String</LastName>
      <LastUpdaterCode>String</LastUpdaterCode>
      <Lead>
        <AssignedAgent>String</AssignedAgent>
        <AssignedDate>0001-01-01T00:00:00</AssignedDate>
        <BookingAgent>String</BookingAgent>
        <BookingDate>0001-01-01T00:00:00</BookingDate>
        <BookingMethod>String</BookingMethod>
        <CampaignCode>String</CampaignCode>
        <CampaignName>String</CampaignName>
        <ContactAgent>String</ContactAgent>
        <ContactDate>0001-01-01T00:00:00</ContactDate>
        <ContactMethod>String</ContactMethod>
        <ExternalLeadID>String</ExternalLeadID>
        <ExternalLeadSource>String</ExternalLeadSource>
        <FK_Reservation>00000000-0000-0000-0000-000000000000</FK_Reservation>
        <FlaggedForAttention>false</FlaggedForAttention>
        <LastFollowupAgent>String</LastFollowupAgent>
        <LastFollowupDate>0001-01-01T00:00:00</LastFollowupDate>
        <LastFollowupMethod>String</LastFollowupMethod>
        <LeadAcquired>0001-01-01T00:00:00</LeadAcquired>
        <LeadStatus>String</LeadStatus>
        <MarketCode>String</MarketCode>
        <PriceEstimate>0</PriceEstimate>
        <ReasonforStay>String</ReasonforStay>
        <TentativeEndDate>0001-01-01T00:00:00</TentativeEndDate>
        <TentativeStartDate>0001-01-01T00:00:00</TentativeStartDate>
      </Lead>
      <Memberships>
        <Membership>
          <AwardAvailable>0</AwardAvailable>
          <AwardCredits>0</AwardCredits>
          <DateMembershipExpires>0001-01-01T00:00:00</DateMembershipExpires>
          <DateMembershipStarts>0001-01-01T00:00:00</DateMembershipStarts>
          <DisplaySequence>0</DisplaySequence>
          <EnrollmentCode>String</EnrollmentCode>
          <ExternalID>String</ExternalID>
          <InactiveDate>0001-01-01T00:00:00</InactiveDate>
          <IsActive>false</IsActive>
          <MembershipCategory>String</MembershipCategory>
          <MembershipID>String</MembershipID>
          <MembershipLevel>String</MembershipLevel>
          <MembershipName>String</MembershipName>
          <MembershipStatus>String</MembershipStatus>
          <PointsIndicator>false</PointsIndicator>
          <PrimaryAirline>false</PrimaryAirline>
          <ProgramCode>String</ProgramCode>
          <SourceID>String</SourceID>
          <SourceName>String</SourceName>
          <TotalStays>0</TotalStays>
        </Membership>
      </Memberships>
      <MiddleName>String</MiddleName>
      <NameCode>String</NameCode>
      <NameSuffix>String</NameSuffix>
      <Nationality>String</Nationality>
      <OptOutDate>0001-01-01T00:00:00</OptOutDate>
      <OptOutMarketing>false</OptOutMarketing>
      <PrimaryLanguage>String</PrimaryLanguage>
      <ProfileExtension>
        <AnonymizationStatus>String</AnonymizationStatus>
        <BlackListMessage>String</BlackListMessage>
        <Blacklist>String</Blacklist>
        <CompanyNameExt>String</CompanyNameExt>
        <FamiliarNameExt>String</FamiliarNameExt>
        <FirstNameExt>String</FirstNameExt>
        <LanguageCode>String</LanguageCode>
        <LastNameExt>String</LastNameExt>
        <MiddleNameExt>String</MiddleNameExt>
        <NameSuffixExt>String</NameSuffixExt>
        <SalutationExt>String</SalutationExt>
      </ProfileExtension>
      <ProfilePolicies>
        <ProfilePolicy>
          <AppliesTo>String</AppliesTo>
          <AppliesToDescriptor>String</AppliesToDescriptor>
          <AttributeName>String</AttributeName>
          <Comments>String</Comments>
          <EffectiveDate>0001-01-01T00:00:00</EffectiveDate>
          <ExpirationDate>0001-01-01T00:00:00</ExpirationDate>
          <ExternalID>String</ExternalID>
          <IntegerValue>0</IntegerValue>
          <PolicyType>String</PolicyType>
          <StringValue>String</StringValue>
        </ProfilePolicy>
      </ProfilePolicies>
      <ProfileTypeCategory>String</ProfileTypeCategory>
      <ProfileTypeCode>String</ProfileTypeCode>
      <ProfileTypeDescription>String</ProfileTypeDescription>
      <PropertyName>String</PropertyName>
      <RelatedTravelers>
        <RelatedTraveler>
          <CendynPropertyID>String</CendynPropertyID>
          <FamiliarName>String</FamiliarName>
          <FirstName>String</FirstName>
          <FullName>String</FullName>
          <IsPrimary>false</IsPrimary>
          <LastName>String</LastName>
          <MiddleName>String</MiddleName>
          <PropertyName>String</PropertyName>
          <Relation>String</Relation>
          <Salutation>String</Salutation>
          <Suffix>String</Suffix>
          <UniqueIDs>
            <UniqueIDType>
              <Context>String</Context>
              <ID>String</ID>
              <Type>String</Type>
            </UniqueIDType>
          </UniqueIDs>
        </RelatedTraveler>
      </RelatedTravelers>
      <ResortCode>String</ResortCode>
      <RetiredProfileId>String</RetiredProfileId>
      <Salutation>String</Salutation>
      <SourceID>String</SourceID>
      <SourceName>String</SourceName>
      <SpecialRequests>
        <SpecialRequest>
          <ActionType>String</ActionType>
          <ActionTypeCode>String</ActionTypeCode>
          <ExternalID>String</ExternalID>
          <InactiveDate>0001-01-01T00:00:00</InactiveDate>
          <RequestCode>String</RequestCode>
          <RequestComments>String</RequestComments>
          <RequestType>String</RequestType>
          <ResortField>String</ResortField>
        </SpecialRequest>
      </SpecialRequests>
      <TransferredSubscriptionId>String</TransferredSubscriptionId>
      <UDFDataCollection>
        <UDFDataType>
          <CendynPropertyID>String</CendynPropertyID>
          <ColumnName>String</ColumnName>
          <ModuleName>String</ModuleName>
          <TableName>String</TableName>
          <UDFValue>String</UDFValue>
        </UDFDataType>
      </UDFDataCollection>
      <UniqueIDs>
        <UniqueIDType>
          <Context>String</Context>
          <ID>String</ID>
          <Type>String</Type>
        </UniqueIDType>
      </UniqueIDs>
      <VIPCode>String</VIPCode>
      <VIPID>String</VIPID>
      <Vouchers>
        <Voucher>
          <AppliedToResort>String</AppliedToResort>
          <AwardPoints>0</AwardPoints>
          <CancelAllowed>false</CancelAllowed>
          <CertCode>String</CertCode>
          <CertNo>String</CertNo>
          <Comments>String</Comments>
          <CreatorCode>String</CreatorCode>
          <CurrencyCode>String</CurrencyCode>
          <DateConsumed>0001-01-01T00:00:00</DateConsumed>
          <Emailaddress>String</Emailaddress>
          <ExpirationDate>0001-01-01T00:00:00</ExpirationDate>
          <FolioID>String</FolioID>
          <GenerateInLieu>false</GenerateInLieu>
          <GiftMessage>String</GiftMessage>
          <HotelCode>String</HotelCode>
          <InactiveDate>0001-01-01T00:00:00</InactiveDate>
          <IssueType>String</IssueType>
          <LastUpdaterCode>String</LastUpdaterCode>
          <MaxExtensions>0</MaxExtensions>
          <MembershipType>String</MembershipType>
          <PMSConsumed>false</PMSConsumed>
          <ProfileIDPurchaser>String</ProfileIDPurchaser>
          <ProfileIDRecipient>String</ProfileIDRecipient>
          <PromotionCode>String</PromotionCode>
          <PurchaserName>String</PurchaserName>
          <RecipientName>String</RecipientName>
          <ReferenceID>String</ReferenceID>
          <ReferenceType>String</ReferenceType>
          <ReservationConsumed>false</ReservationConsumed>
          <ReservationID>String</ReservationID>
          <RuleType>String</RuleType>
          <RuleValue>String</RuleValue>
          <ShortDescription>String</ShortDescription>
          <SubscriberIDRecipient>String</SubscriberIDRecipient>
          <VerifyCertNo>false</VerifyCertNo>
          <VoucherAmount>0</VoucherAmount>
          <VoucherID>String</VoucherID>
          <VoucherID2>String</VoucherID2>
          <VoucherStatus>String</VoucherStatus>
          <VoucherType>String</VoucherType>
          <WebConsumed>false</WebConsumed>
        </Voucher>
      </Vouchers>
    </Profile>
  </Records>
</ProfileResponse>