CenResService

<back to all web services

ReservationRequest

The following routes are available for this service:
GET/v2/reservation/{CendynPropertyId}
GET/v2/reservationfull/{CendynPropertyId}
GET/v2/reservation
GET/v2/reservationfull
import 'package:servicestack/servicestack.dart';

enum RequestStatus
{
    Success,
    Warning,
    Error,
    NotAuthorized,
    Failure,
}

class CenResResponse implements IConvertible
{
    RequestStatus? status;
    String? statusMessage;
    int? recordsReturned;
    int? recordsAvailable;
    int? pageNumber;
    int? pageSize;

    CenResResponse({this.status,this.statusMessage,this.recordsReturned,this.recordsAvailable,this.pageNumber,this.pageSize});
    CenResResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        status = JsonConverters.fromJson(json['status'],'RequestStatus',context!);
        statusMessage = json['statusMessage'];
        recordsReturned = json['recordsReturned'];
        recordsAvailable = json['recordsAvailable'];
        pageNumber = json['pageNumber'];
        pageSize = json['pageSize'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'status': JsonConverters.toJson(status,'RequestStatus',context!),
        'statusMessage': statusMessage,
        'recordsReturned': recordsReturned,
        'recordsAvailable': recordsAvailable,
        'pageNumber': pageNumber,
        'pageSize': pageSize
    };

    getTypeName() => "CenResResponse";
    TypeContext? context = _ctx;
}

class UniqueIDType implements IConvertible
{
    String? id;
    String? type;
    String? Context;

    UniqueIDType({this.id,this.type,this.Context});
    UniqueIDType.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['id'];
        type = json['type'];
        Context = json['context'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'type': type,
        'context': Context
    };

    getTypeName() => "UniqueIDType";
    TypeContext? context = _ctx;
}

class ProfileExtension implements IConvertible
{
    String? languageCode;
    String? salutationExt;
    String? firstNameExt;
    String? familiarNameExt;
    String? middleNameExt;
    String? lastNameExt;
    String? nameSuffixExt;
    String? companyNameExt;
    String? blacklist;
    String? blackListMessage;
    String? anonymizationStatus;

    ProfileExtension({this.languageCode,this.salutationExt,this.firstNameExt,this.familiarNameExt,this.middleNameExt,this.lastNameExt,this.nameSuffixExt,this.companyNameExt,this.blacklist,this.blackListMessage,this.anonymizationStatus});
    ProfileExtension.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        languageCode = json['languageCode'];
        salutationExt = json['salutationExt'];
        firstNameExt = json['firstNameExt'];
        familiarNameExt = json['familiarNameExt'];
        middleNameExt = json['middleNameExt'];
        lastNameExt = json['lastNameExt'];
        nameSuffixExt = json['nameSuffixExt'];
        companyNameExt = json['companyNameExt'];
        blacklist = json['blacklist'];
        blackListMessage = json['blackListMessage'];
        anonymizationStatus = json['anonymizationStatus'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'languageCode': languageCode,
        'salutationExt': salutationExt,
        'firstNameExt': firstNameExt,
        'familiarNameExt': familiarNameExt,
        'middleNameExt': middleNameExt,
        'lastNameExt': lastNameExt,
        'nameSuffixExt': nameSuffixExt,
        'companyNameExt': companyNameExt,
        'blacklist': blacklist,
        'blackListMessage': blackListMessage,
        'anonymizationStatus': anonymizationStatus
    };

    getTypeName() => "ProfileExtension";
    TypeContext? context = _ctx;
}

class Address implements IConvertible
{
    String? addressTypeCode;
    String? addressTypeDescription;
    String? addressStatus;
    String? attn;
    String? address1;
    String? address2;
    String? city;
    String? stateProvince;
    String? postalCode;
    String? countryCode;
    bool? isPrimary;
    String? addressLanguage;
    bool? addressCleansed;
    bool? optOutMarketing;
    DateTime? optOutDate;

    Address({this.addressTypeCode,this.addressTypeDescription,this.addressStatus,this.attn,this.address1,this.address2,this.city,this.stateProvince,this.postalCode,this.countryCode,this.isPrimary,this.addressLanguage,this.addressCleansed,this.optOutMarketing,this.optOutDate});
    Address.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        addressTypeCode = json['addressTypeCode'];
        addressTypeDescription = json['addressTypeDescription'];
        addressStatus = json['addressStatus'];
        attn = json['attn'];
        address1 = json['address1'];
        address2 = json['address2'];
        city = json['city'];
        stateProvince = json['stateProvince'];
        postalCode = json['postalCode'];
        countryCode = json['countryCode'];
        isPrimary = json['isPrimary'];
        addressLanguage = json['addressLanguage'];
        addressCleansed = json['addressCleansed'];
        optOutMarketing = json['optOutMarketing'];
        optOutDate = JsonConverters.fromJson(json['optOutDate'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'addressTypeCode': addressTypeCode,
        'addressTypeDescription': addressTypeDescription,
        'addressStatus': addressStatus,
        'attn': attn,
        'address1': address1,
        'address2': address2,
        'city': city,
        'stateProvince': stateProvince,
        'postalCode': postalCode,
        'countryCode': countryCode,
        'isPrimary': isPrimary,
        'addressLanguage': addressLanguage,
        'addressCleansed': addressCleansed,
        'optOutMarketing': optOutMarketing,
        'optOutDate': JsonConverters.toJson(optOutDate,'DateTime',context!)
    };

    getTypeName() => "Address";
    TypeContext? context = _ctx;
}

class Membership implements IConvertible
{
    String? externalID;
    String? programCode;
    String? membershipID;
    String? membershipCategory;
    String? membershipName;
    String? membershipLevel;
    String? membershipStatus;
    String? enrollmentCode;
    DateTime? dateMembershipStarts;
    DateTime? dateMembershipExpires;
    int? totalStays;
    int? awardCredits;
    int? awardAvailable;
    bool? primaryAirline;
    int? displaySequence;
    String? sourceName;
    String? sourceID;
    bool? isActive;
    DateTime? inactiveDate;
    bool? pointsIndicator;

    Membership({this.externalID,this.programCode,this.membershipID,this.membershipCategory,this.membershipName,this.membershipLevel,this.membershipStatus,this.enrollmentCode,this.dateMembershipStarts,this.dateMembershipExpires,this.totalStays,this.awardCredits,this.awardAvailable,this.primaryAirline,this.displaySequence,this.sourceName,this.sourceID,this.isActive,this.inactiveDate,this.pointsIndicator});
    Membership.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        externalID = json['externalID'];
        programCode = json['programCode'];
        membershipID = json['membershipID'];
        membershipCategory = json['membershipCategory'];
        membershipName = json['membershipName'];
        membershipLevel = json['membershipLevel'];
        membershipStatus = json['membershipStatus'];
        enrollmentCode = json['enrollmentCode'];
        dateMembershipStarts = JsonConverters.fromJson(json['dateMembershipStarts'],'DateTime',context!);
        dateMembershipExpires = JsonConverters.fromJson(json['dateMembershipExpires'],'DateTime',context!);
        totalStays = json['totalStays'];
        awardCredits = json['awardCredits'];
        awardAvailable = json['awardAvailable'];
        primaryAirline = json['primaryAirline'];
        displaySequence = json['displaySequence'];
        sourceName = json['sourceName'];
        sourceID = json['sourceID'];
        isActive = json['isActive'];
        inactiveDate = JsonConverters.fromJson(json['inactiveDate'],'DateTime',context!);
        pointsIndicator = json['pointsIndicator'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'externalID': externalID,
        'programCode': programCode,
        'membershipID': membershipID,
        'membershipCategory': membershipCategory,
        'membershipName': membershipName,
        'membershipLevel': membershipLevel,
        'membershipStatus': membershipStatus,
        'enrollmentCode': enrollmentCode,
        'dateMembershipStarts': JsonConverters.toJson(dateMembershipStarts,'DateTime',context!),
        'dateMembershipExpires': JsonConverters.toJson(dateMembershipExpires,'DateTime',context!),
        'totalStays': totalStays,
        'awardCredits': awardCredits,
        'awardAvailable': awardAvailable,
        'primaryAirline': primaryAirline,
        'displaySequence': displaySequence,
        'sourceName': sourceName,
        'sourceID': sourceID,
        'isActive': isActive,
        'inactiveDate': JsonConverters.toJson(inactiveDate,'DateTime',context!),
        'pointsIndicator': pointsIndicator
    };

    getTypeName() => "Membership";
    TypeContext? context = _ctx;
}

class ContactMethod implements IConvertible
{
    String? type;
    String? category;
    String? dataValue;
    String? extraData;
    bool? optOut;
    DateTime? sourceDate;
    bool? isPrimary;
    bool? confirmation;
    DateTime? inactiveDate;
    bool? optOutMarketing;
    DateTime? optOutDate;

    ContactMethod({this.type,this.category,this.dataValue,this.extraData,this.optOut,this.sourceDate,this.isPrimary,this.confirmation,this.inactiveDate,this.optOutMarketing,this.optOutDate});
    ContactMethod.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        type = json['type'];
        category = json['category'];
        dataValue = json['dataValue'];
        extraData = json['extraData'];
        optOut = json['optOut'];
        sourceDate = JsonConverters.fromJson(json['sourceDate'],'DateTime',context!);
        isPrimary = json['isPrimary'];
        confirmation = json['confirmation'];
        inactiveDate = JsonConverters.fromJson(json['inactiveDate'],'DateTime',context!);
        optOutMarketing = json['optOutMarketing'];
        optOutDate = JsonConverters.fromJson(json['optOutDate'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'type': type,
        'category': category,
        'dataValue': dataValue,
        'extraData': extraData,
        'optOut': optOut,
        'sourceDate': JsonConverters.toJson(sourceDate,'DateTime',context!),
        'isPrimary': isPrimary,
        'confirmation': confirmation,
        'inactiveDate': JsonConverters.toJson(inactiveDate,'DateTime',context!),
        'optOutMarketing': optOutMarketing,
        'optOutDate': JsonConverters.toJson(optOutDate,'DateTime',context!)
    };

    getTypeName() => "ContactMethod";
    TypeContext? context = _ctx;
}

class ActionComment implements IConvertible
{
    String? externalID;
    String? commentType;
    String? commentTitle;
    String? commentClass;
    String? actionType;
    String? comment;
    DateTime? actionDate;
    DateTime? inactiveDate;
    bool? guestViewable;
    String? creatorCode;
    DateTime? dateCommentCreated;
    String? resortCode;

    ActionComment({this.externalID,this.commentType,this.commentTitle,this.commentClass,this.actionType,this.comment,this.actionDate,this.inactiveDate,this.guestViewable,this.creatorCode,this.dateCommentCreated,this.resortCode});
    ActionComment.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        externalID = json['externalID'];
        commentType = json['commentType'];
        commentTitle = json['commentTitle'];
        commentClass = json['commentClass'];
        actionType = json['actionType'];
        comment = json['comment'];
        actionDate = JsonConverters.fromJson(json['actionDate'],'DateTime',context!);
        inactiveDate = JsonConverters.fromJson(json['inactiveDate'],'DateTime',context!);
        guestViewable = json['guestViewable'];
        creatorCode = json['creatorCode'];
        dateCommentCreated = JsonConverters.fromJson(json['dateCommentCreated'],'DateTime',context!);
        resortCode = json['resortCode'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'externalID': externalID,
        'commentType': commentType,
        'commentTitle': commentTitle,
        'commentClass': commentClass,
        'actionType': actionType,
        'comment': comment,
        'actionDate': JsonConverters.toJson(actionDate,'DateTime',context!),
        'inactiveDate': JsonConverters.toJson(inactiveDate,'DateTime',context!),
        'guestViewable': guestViewable,
        'creatorCode': creatorCode,
        'dateCommentCreated': JsonConverters.toJson(dateCommentCreated,'DateTime',context!),
        'resortCode': resortCode
    };

    getTypeName() => "ActionComment";
    TypeContext? context = _ctx;
}

class SpecialRequest implements IConvertible
{
    String? externalID;
    String? requestType;
    String? requestCode;
    String? requestComments;
    String? resortField;
    String? actionTypeCode;
    String? actionType;
    DateTime? inactiveDate;

    SpecialRequest({this.externalID,this.requestType,this.requestCode,this.requestComments,this.resortField,this.actionTypeCode,this.actionType,this.inactiveDate});
    SpecialRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        externalID = json['externalID'];
        requestType = json['requestType'];
        requestCode = json['requestCode'];
        requestComments = json['requestComments'];
        resortField = json['resortField'];
        actionTypeCode = json['actionTypeCode'];
        actionType = json['actionType'];
        inactiveDate = JsonConverters.fromJson(json['inactiveDate'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'externalID': externalID,
        'requestType': requestType,
        'requestCode': requestCode,
        'requestComments': requestComments,
        'resortField': resortField,
        'actionTypeCode': actionTypeCode,
        'actionType': actionType,
        'inactiveDate': JsonConverters.toJson(inactiveDate,'DateTime',context!)
    };

    getTypeName() => "SpecialRequest";
    TypeContext? context = _ctx;
}

class UDFDataType implements IConvertible
{
    String? cendynPropertyID;
    String? moduleName;
    String? tableName;
    String? columnName;
    String? udfValue;

    UDFDataType({this.cendynPropertyID,this.moduleName,this.tableName,this.columnName,this.udfValue});
    UDFDataType.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        cendynPropertyID = json['cendynPropertyID'];
        moduleName = json['moduleName'];
        tableName = json['tableName'];
        columnName = json['columnName'];
        udfValue = json['udfValue'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'cendynPropertyID': cendynPropertyID,
        'moduleName': moduleName,
        'tableName': tableName,
        'columnName': columnName,
        'udfValue': udfValue
    };

    getTypeName() => "UDFDataType";
    TypeContext? context = _ctx;
}

class Lead implements IConvertible
{
    String? fK_Reservation;
    String? externalLeadID;
    String? externalLeadSource;
    String? leadStatus;
    DateTime? leadAcquired;
    DateTime? tentativeStartDate;
    DateTime? tentativeEndDate;
    String? assignedAgent;
    DateTime? assignedDate;
    String? contactMethod;
    String? contactAgent;
    DateTime? contactDate;
    String? lastFollowupMethod;
    String? lastFollowupAgent;
    DateTime? lastFollowupDate;
    String? bookingMethod;
    String? bookingAgent;
    DateTime? bookingDate;
    String? reasonforStay;
    String? marketCode;
    String? campaignCode;
    String? campaignName;
    double? priceEstimate;
    bool? flaggedForAttention;

    Lead({this.fK_Reservation,this.externalLeadID,this.externalLeadSource,this.leadStatus,this.leadAcquired,this.tentativeStartDate,this.tentativeEndDate,this.assignedAgent,this.assignedDate,this.contactMethod,this.contactAgent,this.contactDate,this.lastFollowupMethod,this.lastFollowupAgent,this.lastFollowupDate,this.bookingMethod,this.bookingAgent,this.bookingDate,this.reasonforStay,this.marketCode,this.campaignCode,this.campaignName,this.priceEstimate,this.flaggedForAttention});
    Lead.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        fK_Reservation = json['fK_Reservation'];
        externalLeadID = json['externalLeadID'];
        externalLeadSource = json['externalLeadSource'];
        leadStatus = json['leadStatus'];
        leadAcquired = JsonConverters.fromJson(json['leadAcquired'],'DateTime',context!);
        tentativeStartDate = JsonConverters.fromJson(json['tentativeStartDate'],'DateTime',context!);
        tentativeEndDate = JsonConverters.fromJson(json['tentativeEndDate'],'DateTime',context!);
        assignedAgent = json['assignedAgent'];
        assignedDate = JsonConverters.fromJson(json['assignedDate'],'DateTime',context!);
        contactMethod = json['contactMethod'];
        contactAgent = json['contactAgent'];
        contactDate = JsonConverters.fromJson(json['contactDate'],'DateTime',context!);
        lastFollowupMethod = json['lastFollowupMethod'];
        lastFollowupAgent = json['lastFollowupAgent'];
        lastFollowupDate = JsonConverters.fromJson(json['lastFollowupDate'],'DateTime',context!);
        bookingMethod = json['bookingMethod'];
        bookingAgent = json['bookingAgent'];
        bookingDate = JsonConverters.fromJson(json['bookingDate'],'DateTime',context!);
        reasonforStay = json['reasonforStay'];
        marketCode = json['marketCode'];
        campaignCode = json['campaignCode'];
        campaignName = json['campaignName'];
        priceEstimate = JsonConverters.toDouble(json['priceEstimate']);
        flaggedForAttention = json['flaggedForAttention'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'fK_Reservation': fK_Reservation,
        'externalLeadID': externalLeadID,
        'externalLeadSource': externalLeadSource,
        'leadStatus': leadStatus,
        'leadAcquired': JsonConverters.toJson(leadAcquired,'DateTime',context!),
        'tentativeStartDate': JsonConverters.toJson(tentativeStartDate,'DateTime',context!),
        'tentativeEndDate': JsonConverters.toJson(tentativeEndDate,'DateTime',context!),
        'assignedAgent': assignedAgent,
        'assignedDate': JsonConverters.toJson(assignedDate,'DateTime',context!),
        'contactMethod': contactMethod,
        'contactAgent': contactAgent,
        'contactDate': JsonConverters.toJson(contactDate,'DateTime',context!),
        'lastFollowupMethod': lastFollowupMethod,
        'lastFollowupAgent': lastFollowupAgent,
        'lastFollowupDate': JsonConverters.toJson(lastFollowupDate,'DateTime',context!),
        'bookingMethod': bookingMethod,
        'bookingAgent': bookingAgent,
        'bookingDate': JsonConverters.toJson(bookingDate,'DateTime',context!),
        'reasonforStay': reasonforStay,
        'marketCode': marketCode,
        'campaignCode': campaignCode,
        'campaignName': campaignName,
        'priceEstimate': priceEstimate,
        'flaggedForAttention': flaggedForAttention
    };

    getTypeName() => "Lead";
    TypeContext? context = _ctx;
}

class RelatedTraveler implements IConvertible
{
    String? cendynPropertyID;
    String? propertyName;
    List<UniqueIDType>? uniqueIDs;
    String? salutation;
    String? firstName;
    String? familiarName;
    String? middleName;
    String? lastName;
    String? fullName;
    String? suffix;
    String? relation;
    bool? isPrimary;

    RelatedTraveler({this.cendynPropertyID,this.propertyName,this.uniqueIDs,this.salutation,this.firstName,this.familiarName,this.middleName,this.lastName,this.fullName,this.suffix,this.relation,this.isPrimary});
    RelatedTraveler.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        cendynPropertyID = json['cendynPropertyID'];
        propertyName = json['propertyName'];
        uniqueIDs = JsonConverters.fromJson(json['uniqueIDs'],'List<UniqueIDType>',context!);
        salutation = json['salutation'];
        firstName = json['firstName'];
        familiarName = json['familiarName'];
        middleName = json['middleName'];
        lastName = json['lastName'];
        fullName = json['fullName'];
        suffix = json['suffix'];
        relation = json['relation'];
        isPrimary = json['isPrimary'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'cendynPropertyID': cendynPropertyID,
        'propertyName': propertyName,
        'uniqueIDs': JsonConverters.toJson(uniqueIDs,'List<UniqueIDType>',context!),
        'salutation': salutation,
        'firstName': firstName,
        'familiarName': familiarName,
        'middleName': middleName,
        'lastName': lastName,
        'fullName': fullName,
        'suffix': suffix,
        'relation': relation,
        'isPrimary': isPrimary
    };

    getTypeName() => "RelatedTraveler";
    TypeContext? context = _ctx;
}

class Document implements IConvertible
{
    String? documentID;
    String? documentType;
    String? documentSource;
    String? codeOnDocument;
    String? documentNotes;
    String? nameOnDocument;
    String? nationalityOnDocument;
    DateTime? effectiveDate;
    DateTime? expirationDate;
    String? issuer;
    String? issuerCountry;
    bool? isPrimary;
    String? piI_StoredAs;
    DateTime? inactiveDate;

    Document({this.documentID,this.documentType,this.documentSource,this.codeOnDocument,this.documentNotes,this.nameOnDocument,this.nationalityOnDocument,this.effectiveDate,this.expirationDate,this.issuer,this.issuerCountry,this.isPrimary,this.piI_StoredAs,this.inactiveDate});
    Document.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        documentID = json['documentID'];
        documentType = json['documentType'];
        documentSource = json['documentSource'];
        codeOnDocument = json['codeOnDocument'];
        documentNotes = json['documentNotes'];
        nameOnDocument = json['nameOnDocument'];
        nationalityOnDocument = json['nationalityOnDocument'];
        effectiveDate = JsonConverters.fromJson(json['effectiveDate'],'DateTime',context!);
        expirationDate = JsonConverters.fromJson(json['expirationDate'],'DateTime',context!);
        issuer = json['issuer'];
        issuerCountry = json['issuerCountry'];
        isPrimary = json['isPrimary'];
        piI_StoredAs = json['piI_StoredAs'];
        inactiveDate = JsonConverters.fromJson(json['inactiveDate'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'documentID': documentID,
        'documentType': documentType,
        'documentSource': documentSource,
        'codeOnDocument': codeOnDocument,
        'documentNotes': documentNotes,
        'nameOnDocument': nameOnDocument,
        'nationalityOnDocument': nationalityOnDocument,
        'effectiveDate': JsonConverters.toJson(effectiveDate,'DateTime',context!),
        'expirationDate': JsonConverters.toJson(expirationDate,'DateTime',context!),
        'issuer': issuer,
        'issuerCountry': issuerCountry,
        'isPrimary': isPrimary,
        'piI_StoredAs': piI_StoredAs,
        'inactiveDate': JsonConverters.toJson(inactiveDate,'DateTime',context!)
    };

    getTypeName() => "Document";
    TypeContext? context = _ctx;
}

class Voucher implements IConvertible
{
    String? 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;
    double? voucherAmount;
    String? currencyCode;
    String? issueType;
    DateTime? dateConsumed;
    DateTime? expirationDate;
    int? awardPoints;
    String? ruleType;
    String? ruleValue;
    bool? cancelAllowed;
    int? maxExtensions;
    String? referenceType;
    String? referenceID;
    String? promotionCode;
    bool? reservationConsumed;
    bool? webConsumed;
    bool? pmsConsumed;
    bool? verifyCertNo;
    bool? generateInLieu;
    String? creatorCode;
    String? lastUpdaterCode;
    String? folioID;
    DateTime? inactiveDate;

    Voucher({this.hotelCode,this.voucherID,this.voucherID2,this.appliedToResort,this.reservationID,this.profileIDRecipient,this.subscriberIDRecipient,this.recipientName,this.emailaddress,this.profileIDPurchaser,this.purchaserName,this.voucherStatus,this.voucherType,this.membershipType,this.certCode,this.certNo,this.shortDescription,this.giftMessage,this.comments,this.voucherAmount,this.currencyCode,this.issueType,this.dateConsumed,this.expirationDate,this.awardPoints,this.ruleType,this.ruleValue,this.cancelAllowed,this.maxExtensions,this.referenceType,this.referenceID,this.promotionCode,this.reservationConsumed,this.webConsumed,this.pmsConsumed,this.verifyCertNo,this.generateInLieu,this.creatorCode,this.lastUpdaterCode,this.folioID,this.inactiveDate});
    Voucher.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        hotelCode = json['hotelCode'];
        voucherID = json['voucherID'];
        voucherID2 = json['voucherID2'];
        appliedToResort = json['appliedToResort'];
        reservationID = json['reservationID'];
        profileIDRecipient = json['profileIDRecipient'];
        subscriberIDRecipient = json['subscriberIDRecipient'];
        recipientName = json['recipientName'];
        emailaddress = json['emailaddress'];
        profileIDPurchaser = json['profileIDPurchaser'];
        purchaserName = json['purchaserName'];
        voucherStatus = json['voucherStatus'];
        voucherType = json['voucherType'];
        membershipType = json['membershipType'];
        certCode = json['certCode'];
        certNo = json['certNo'];
        shortDescription = json['shortDescription'];
        giftMessage = json['giftMessage'];
        comments = json['comments'];
        voucherAmount = JsonConverters.toDouble(json['voucherAmount']);
        currencyCode = json['currencyCode'];
        issueType = json['issueType'];
        dateConsumed = JsonConverters.fromJson(json['dateConsumed'],'DateTime',context!);
        expirationDate = JsonConverters.fromJson(json['expirationDate'],'DateTime',context!);
        awardPoints = json['awardPoints'];
        ruleType = json['ruleType'];
        ruleValue = json['ruleValue'];
        cancelAllowed = json['cancelAllowed'];
        maxExtensions = json['maxExtensions'];
        referenceType = json['referenceType'];
        referenceID = json['referenceID'];
        promotionCode = json['promotionCode'];
        reservationConsumed = json['reservationConsumed'];
        webConsumed = json['webConsumed'];
        pmsConsumed = json['pmsConsumed'];
        verifyCertNo = json['verifyCertNo'];
        generateInLieu = json['generateInLieu'];
        creatorCode = json['creatorCode'];
        lastUpdaterCode = json['lastUpdaterCode'];
        folioID = json['folioID'];
        inactiveDate = JsonConverters.fromJson(json['inactiveDate'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'hotelCode': hotelCode,
        'voucherID': voucherID,
        'voucherID2': voucherID2,
        'appliedToResort': appliedToResort,
        'reservationID': reservationID,
        'profileIDRecipient': profileIDRecipient,
        'subscriberIDRecipient': subscriberIDRecipient,
        'recipientName': recipientName,
        'emailaddress': emailaddress,
        'profileIDPurchaser': profileIDPurchaser,
        'purchaserName': purchaserName,
        'voucherStatus': voucherStatus,
        'voucherType': voucherType,
        'membershipType': membershipType,
        'certCode': certCode,
        'certNo': certNo,
        'shortDescription': shortDescription,
        'giftMessage': giftMessage,
        'comments': comments,
        'voucherAmount': voucherAmount,
        'currencyCode': currencyCode,
        'issueType': issueType,
        'dateConsumed': JsonConverters.toJson(dateConsumed,'DateTime',context!),
        'expirationDate': JsonConverters.toJson(expirationDate,'DateTime',context!),
        'awardPoints': awardPoints,
        'ruleType': ruleType,
        'ruleValue': ruleValue,
        'cancelAllowed': cancelAllowed,
        'maxExtensions': maxExtensions,
        'referenceType': referenceType,
        'referenceID': referenceID,
        'promotionCode': promotionCode,
        'reservationConsumed': reservationConsumed,
        'webConsumed': webConsumed,
        'pmsConsumed': pmsConsumed,
        'verifyCertNo': verifyCertNo,
        'generateInLieu': generateInLieu,
        'creatorCode': creatorCode,
        'lastUpdaterCode': lastUpdaterCode,
        'folioID': folioID,
        'inactiveDate': JsonConverters.toJson(inactiveDate,'DateTime',context!)
    };

    getTypeName() => "Voucher";
    TypeContext? context = _ctx;
}

class ProfilePolicy implements IConvertible
{
    String? policyType;
    String? attributeName;
    int? integerValue;
    String? stringValue;
    DateTime? effectiveDate;
    DateTime? expirationDate;
    String? comments;
    String? externalID;
    String? appliesTo;
    String? appliesToDescriptor;

    ProfilePolicy({this.policyType,this.attributeName,this.integerValue,this.stringValue,this.effectiveDate,this.expirationDate,this.comments,this.externalID,this.appliesTo,this.appliesToDescriptor});
    ProfilePolicy.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        policyType = json['policyType'];
        attributeName = json['attributeName'];
        integerValue = json['integerValue'];
        stringValue = json['stringValue'];
        effectiveDate = JsonConverters.fromJson(json['effectiveDate'],'DateTime',context!);
        expirationDate = JsonConverters.fromJson(json['expirationDate'],'DateTime',context!);
        comments = json['comments'];
        externalID = json['externalID'];
        appliesTo = json['appliesTo'];
        appliesToDescriptor = json['appliesToDescriptor'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'policyType': policyType,
        'attributeName': attributeName,
        'integerValue': integerValue,
        'stringValue': stringValue,
        'effectiveDate': JsonConverters.toJson(effectiveDate,'DateTime',context!),
        'expirationDate': JsonConverters.toJson(expirationDate,'DateTime',context!),
        'comments': comments,
        'externalID': externalID,
        'appliesTo': appliesTo,
        'appliesToDescriptor': appliesToDescriptor
    };

    getTypeName() => "ProfilePolicy";
    TypeContext? context = _ctx;
}

class Profile implements IConvertible
{
    String? cendynPropertyID;
    String? propertyName;
    List<UniqueIDType>? uniqueIDs;
    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;
    bool? allowMail;
    bool? allowEMail;
    bool? guestPriv;
    bool? allowPhone;
    bool? allowSMS;
    bool? allowHistory;
    bool? allowMarketResearch;
    bool? allowThirdParty;
    bool? allowLoyaltyProgram;
    String? creatorCode;
    String? lastUpdaterCode;
    DateTime? dateProfileCreated;
    DateTime? dateProfileUpdated;
    DateTime? inactiveDate;
    String? nationality;
    String? resortCode;
    String? retiredProfileId;
    String? transferredSubscriptionId;
    String? sourceName;
    String? sourceID;
    bool? optOutMarketing;
    DateTime? optOutDate;
    ProfileExtension? profileExtension;
    List<Address>? addresses;
    List<Membership>? memberships;
    List<ContactMethod>? contactMethods;
    List<ActionComment>? actionComments;
    List<SpecialRequest>? specialRequests;
    List<UDFDataType>? udfDataCollection;
    Lead? lead;
    List<RelatedTraveler>? relatedTravelers;
    List<Document>? documents;
    List<Voucher>? vouchers;
    List<ProfilePolicy>? profilePolicies;

    Profile({this.cendynPropertyID,this.propertyName,this.uniqueIDs,this.profileTypeCode,this.profileTypeDescription,this.nameCode,this.profileTypeCategory,this.jobTitle,this.salutation,this.firstName,this.familiarName,this.middleName,this.lastName,this.fullName,this.nameSuffix,this.vipid,this.vipCode,this.primaryLanguage,this.genderCode,this.dobYear,this.dobMonth,this.dobDayOfMonth,this.companyName,this.arNumber,this.allowMail,this.allowEMail,this.guestPriv,this.allowPhone,this.allowSMS,this.allowHistory,this.allowMarketResearch,this.allowThirdParty,this.allowLoyaltyProgram,this.creatorCode,this.lastUpdaterCode,this.dateProfileCreated,this.dateProfileUpdated,this.inactiveDate,this.nationality,this.resortCode,this.retiredProfileId,this.transferredSubscriptionId,this.sourceName,this.sourceID,this.optOutMarketing,this.optOutDate,this.profileExtension,this.addresses,this.memberships,this.contactMethods,this.actionComments,this.specialRequests,this.udfDataCollection,this.lead,this.relatedTravelers,this.documents,this.vouchers,this.profilePolicies});
    Profile.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        cendynPropertyID = json['cendynPropertyID'];
        propertyName = json['propertyName'];
        uniqueIDs = JsonConverters.fromJson(json['uniqueIDs'],'List<UniqueIDType>',context!);
        profileTypeCode = json['profileTypeCode'];
        profileTypeDescription = json['profileTypeDescription'];
        nameCode = json['nameCode'];
        profileTypeCategory = json['profileTypeCategory'];
        jobTitle = json['jobTitle'];
        salutation = json['salutation'];
        firstName = json['firstName'];
        familiarName = json['familiarName'];
        middleName = json['middleName'];
        lastName = json['lastName'];
        fullName = json['fullName'];
        nameSuffix = json['nameSuffix'];
        vipid = json['vipid'];
        vipCode = json['vipCode'];
        primaryLanguage = json['primaryLanguage'];
        genderCode = json['genderCode'];
        dobYear = json['dobYear'];
        dobMonth = json['dobMonth'];
        dobDayOfMonth = json['dobDayOfMonth'];
        companyName = json['companyName'];
        arNumber = json['arNumber'];
        allowMail = json['allowMail'];
        allowEMail = json['allowEMail'];
        guestPriv = json['guestPriv'];
        allowPhone = json['allowPhone'];
        allowSMS = json['allowSMS'];
        allowHistory = json['allowHistory'];
        allowMarketResearch = json['allowMarketResearch'];
        allowThirdParty = json['allowThirdParty'];
        allowLoyaltyProgram = json['allowLoyaltyProgram'];
        creatorCode = json['creatorCode'];
        lastUpdaterCode = json['lastUpdaterCode'];
        dateProfileCreated = JsonConverters.fromJson(json['dateProfileCreated'],'DateTime',context!);
        dateProfileUpdated = JsonConverters.fromJson(json['dateProfileUpdated'],'DateTime',context!);
        inactiveDate = JsonConverters.fromJson(json['inactiveDate'],'DateTime',context!);
        nationality = json['nationality'];
        resortCode = json['resortCode'];
        retiredProfileId = json['retiredProfileId'];
        transferredSubscriptionId = json['transferredSubscriptionId'];
        sourceName = json['sourceName'];
        sourceID = json['sourceID'];
        optOutMarketing = json['optOutMarketing'];
        optOutDate = JsonConverters.fromJson(json['optOutDate'],'DateTime',context!);
        profileExtension = JsonConverters.fromJson(json['profileExtension'],'ProfileExtension',context!);
        addresses = JsonConverters.fromJson(json['addresses'],'List<Address>',context!);
        memberships = JsonConverters.fromJson(json['memberships'],'List<Membership>',context!);
        contactMethods = JsonConverters.fromJson(json['contactMethods'],'List<ContactMethod>',context!);
        actionComments = JsonConverters.fromJson(json['actionComments'],'List<ActionComment>',context!);
        specialRequests = JsonConverters.fromJson(json['specialRequests'],'List<SpecialRequest>',context!);
        udfDataCollection = JsonConverters.fromJson(json['udfDataCollection'],'List<UDFDataType>',context!);
        lead = JsonConverters.fromJson(json['lead'],'Lead',context!);
        relatedTravelers = JsonConverters.fromJson(json['relatedTravelers'],'List<RelatedTraveler>',context!);
        documents = JsonConverters.fromJson(json['documents'],'List<Document>',context!);
        vouchers = JsonConverters.fromJson(json['vouchers'],'List<Voucher>',context!);
        profilePolicies = JsonConverters.fromJson(json['profilePolicies'],'List<ProfilePolicy>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'cendynPropertyID': cendynPropertyID,
        'propertyName': propertyName,
        'uniqueIDs': JsonConverters.toJson(uniqueIDs,'List<UniqueIDType>',context!),
        'profileTypeCode': profileTypeCode,
        'profileTypeDescription': profileTypeDescription,
        'nameCode': nameCode,
        'profileTypeCategory': profileTypeCategory,
        'jobTitle': jobTitle,
        'salutation': salutation,
        'firstName': firstName,
        'familiarName': familiarName,
        'middleName': middleName,
        'lastName': lastName,
        'fullName': fullName,
        'nameSuffix': nameSuffix,
        'vipid': vipid,
        'vipCode': vipCode,
        'primaryLanguage': primaryLanguage,
        'genderCode': genderCode,
        'dobYear': dobYear,
        'dobMonth': dobMonth,
        'dobDayOfMonth': dobDayOfMonth,
        'companyName': companyName,
        'arNumber': arNumber,
        'allowMail': allowMail,
        'allowEMail': allowEMail,
        'guestPriv': guestPriv,
        'allowPhone': allowPhone,
        'allowSMS': allowSMS,
        'allowHistory': allowHistory,
        'allowMarketResearch': allowMarketResearch,
        'allowThirdParty': allowThirdParty,
        'allowLoyaltyProgram': allowLoyaltyProgram,
        'creatorCode': creatorCode,
        'lastUpdaterCode': lastUpdaterCode,
        'dateProfileCreated': JsonConverters.toJson(dateProfileCreated,'DateTime',context!),
        'dateProfileUpdated': JsonConverters.toJson(dateProfileUpdated,'DateTime',context!),
        'inactiveDate': JsonConverters.toJson(inactiveDate,'DateTime',context!),
        'nationality': nationality,
        'resortCode': resortCode,
        'retiredProfileId': retiredProfileId,
        'transferredSubscriptionId': transferredSubscriptionId,
        'sourceName': sourceName,
        'sourceID': sourceID,
        'optOutMarketing': optOutMarketing,
        'optOutDate': JsonConverters.toJson(optOutDate,'DateTime',context!),
        'profileExtension': JsonConverters.toJson(profileExtension,'ProfileExtension',context!),
        'addresses': JsonConverters.toJson(addresses,'List<Address>',context!),
        'memberships': JsonConverters.toJson(memberships,'List<Membership>',context!),
        'contactMethods': JsonConverters.toJson(contactMethods,'List<ContactMethod>',context!),
        'actionComments': JsonConverters.toJson(actionComments,'List<ActionComment>',context!),
        'specialRequests': JsonConverters.toJson(specialRequests,'List<SpecialRequest>',context!),
        'udfDataCollection': JsonConverters.toJson(udfDataCollection,'List<UDFDataType>',context!),
        'lead': JsonConverters.toJson(lead,'Lead',context!),
        'relatedTravelers': JsonConverters.toJson(relatedTravelers,'List<RelatedTraveler>',context!),
        'documents': JsonConverters.toJson(documents,'List<Document>',context!),
        'vouchers': JsonConverters.toJson(vouchers,'List<Voucher>',context!),
        'profilePolicies': JsonConverters.toJson(profilePolicies,'List<ProfilePolicy>',context!)
    };

    getTypeName() => "Profile";
    TypeContext? context = _ctx;
}

class ExternalReference implements IConvertible
{
    String? pK_ExternalReferences;
    String? fK_Internal;
    int? fK_InternalId;
    String? keyTable;
    String? referenceType;
    String? referenceSource;
    String? referenceNumber;
    int? legNumber;

    ExternalReference({this.pK_ExternalReferences,this.fK_Internal,this.fK_InternalId,this.keyTable,this.referenceType,this.referenceSource,this.referenceNumber,this.legNumber});
    ExternalReference.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        pK_ExternalReferences = json['pK_ExternalReferences'];
        fK_Internal = json['fK_Internal'];
        fK_InternalId = json['fK_InternalId'];
        keyTable = json['keyTable'];
        referenceType = json['referenceType'];
        referenceSource = json['referenceSource'];
        referenceNumber = json['referenceNumber'];
        legNumber = json['legNumber'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'pK_ExternalReferences': pK_ExternalReferences,
        'fK_Internal': fK_Internal,
        'fK_InternalId': fK_InternalId,
        'keyTable': keyTable,
        'referenceType': referenceType,
        'referenceSource': referenceSource,
        'referenceNumber': referenceNumber,
        'legNumber': legNumber
    };

    getTypeName() => "ExternalReference";
    TypeContext? context = _ctx;
}

class Activity implements IConvertible
{
    String? cendynPropertyID;
    String? reservationID;
    String? profileID;
    String? activityStatus;
    String? activityCategory;
    String? activityID1;
    String? activitySource1;
    String? activityID2;
    String? activitySource2;
    String? activityName;
    String? activityDescription;
    String? activityNotes;
    String? groupCode;
    String? currencyCode;
    double? amount;
    double? depositRequired;
    String? depositCollectorType;
    DateTime? inactiveDate;
    String? urlLink;
    String? confirmationNum;
    String? activityClass;
    String? activityCode;
    String? activitySubCode;
    String? languageCode;
    int? numAdults;
    int? numYouths;
    int? numChildren;
    DateTime? startDate;
    String? startTaskType;
    String? startLocationCode;
    String? startLocationName;
    DateTime? endDate;
    String? endTaskType;
    String? endLocationCode;
    String? durationUnit;
    DateTime? relatedDate;
    String? relatedType;
    String? relatedLocationCode;
    String? relatedDescription;
    String? vipCode;
    String? assignedUser;
    DateTime? bookedDate;
    String? bookedBy;
    DateTime? lastUpdatedDate;
    String? lastUpdatedBy;
    String? cancellationCode;
    String? customField1;
    String? customField2;
    String? customField3;
    String? customField4;
    String? customField5;

    Activity({this.cendynPropertyID,this.reservationID,this.profileID,this.activityStatus,this.activityCategory,this.activityID1,this.activitySource1,this.activityID2,this.activitySource2,this.activityName,this.activityDescription,this.activityNotes,this.groupCode,this.currencyCode,this.amount,this.depositRequired,this.depositCollectorType,this.inactiveDate,this.urlLink,this.confirmationNum,this.activityClass,this.activityCode,this.activitySubCode,this.languageCode,this.numAdults,this.numYouths,this.numChildren,this.startDate,this.startTaskType,this.startLocationCode,this.startLocationName,this.endDate,this.endTaskType,this.endLocationCode,this.durationUnit,this.relatedDate,this.relatedType,this.relatedLocationCode,this.relatedDescription,this.vipCode,this.assignedUser,this.bookedDate,this.bookedBy,this.lastUpdatedDate,this.lastUpdatedBy,this.cancellationCode,this.customField1,this.customField2,this.customField3,this.customField4,this.customField5});
    Activity.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        cendynPropertyID = json['cendynPropertyID'];
        reservationID = json['reservationID'];
        profileID = json['profileID'];
        activityStatus = json['activityStatus'];
        activityCategory = json['activityCategory'];
        activityID1 = json['activityID1'];
        activitySource1 = json['activitySource1'];
        activityID2 = json['activityID2'];
        activitySource2 = json['activitySource2'];
        activityName = json['activityName'];
        activityDescription = json['activityDescription'];
        activityNotes = json['activityNotes'];
        groupCode = json['groupCode'];
        currencyCode = json['currencyCode'];
        amount = JsonConverters.toDouble(json['amount']);
        depositRequired = JsonConverters.toDouble(json['depositRequired']);
        depositCollectorType = json['depositCollectorType'];
        inactiveDate = JsonConverters.fromJson(json['inactiveDate'],'DateTime',context!);
        urlLink = json['urlLink'];
        confirmationNum = json['confirmationNum'];
        activityClass = json['activityClass'];
        activityCode = json['activityCode'];
        activitySubCode = json['activitySubCode'];
        languageCode = json['languageCode'];
        numAdults = json['numAdults'];
        numYouths = json['numYouths'];
        numChildren = json['numChildren'];
        startDate = JsonConverters.fromJson(json['startDate'],'DateTime',context!);
        startTaskType = json['startTaskType'];
        startLocationCode = json['startLocationCode'];
        startLocationName = json['startLocationName'];
        endDate = JsonConverters.fromJson(json['endDate'],'DateTime',context!);
        endTaskType = json['endTaskType'];
        endLocationCode = json['endLocationCode'];
        durationUnit = json['durationUnit'];
        relatedDate = JsonConverters.fromJson(json['relatedDate'],'DateTime',context!);
        relatedType = json['relatedType'];
        relatedLocationCode = json['relatedLocationCode'];
        relatedDescription = json['relatedDescription'];
        vipCode = json['vipCode'];
        assignedUser = json['assignedUser'];
        bookedDate = JsonConverters.fromJson(json['bookedDate'],'DateTime',context!);
        bookedBy = json['bookedBy'];
        lastUpdatedDate = JsonConverters.fromJson(json['lastUpdatedDate'],'DateTime',context!);
        lastUpdatedBy = json['lastUpdatedBy'];
        cancellationCode = json['cancellationCode'];
        customField1 = json['customField1'];
        customField2 = json['customField2'];
        customField3 = json['customField3'];
        customField4 = json['customField4'];
        customField5 = json['customField5'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'cendynPropertyID': cendynPropertyID,
        'reservationID': reservationID,
        'profileID': profileID,
        'activityStatus': activityStatus,
        'activityCategory': activityCategory,
        'activityID1': activityID1,
        'activitySource1': activitySource1,
        'activityID2': activityID2,
        'activitySource2': activitySource2,
        'activityName': activityName,
        'activityDescription': activityDescription,
        'activityNotes': activityNotes,
        'groupCode': groupCode,
        'currencyCode': currencyCode,
        'amount': amount,
        'depositRequired': depositRequired,
        'depositCollectorType': depositCollectorType,
        'inactiveDate': JsonConverters.toJson(inactiveDate,'DateTime',context!),
        'urlLink': urlLink,
        'confirmationNum': confirmationNum,
        'activityClass': activityClass,
        'activityCode': activityCode,
        'activitySubCode': activitySubCode,
        'languageCode': languageCode,
        'numAdults': numAdults,
        'numYouths': numYouths,
        'numChildren': numChildren,
        'startDate': JsonConverters.toJson(startDate,'DateTime',context!),
        'startTaskType': startTaskType,
        'startLocationCode': startLocationCode,
        'startLocationName': startLocationName,
        'endDate': JsonConverters.toJson(endDate,'DateTime',context!),
        'endTaskType': endTaskType,
        'endLocationCode': endLocationCode,
        'durationUnit': durationUnit,
        'relatedDate': JsonConverters.toJson(relatedDate,'DateTime',context!),
        'relatedType': relatedType,
        'relatedLocationCode': relatedLocationCode,
        'relatedDescription': relatedDescription,
        'vipCode': vipCode,
        'assignedUser': assignedUser,
        'bookedDate': JsonConverters.toJson(bookedDate,'DateTime',context!),
        'bookedBy': bookedBy,
        'lastUpdatedDate': JsonConverters.toJson(lastUpdatedDate,'DateTime',context!),
        'lastUpdatedBy': lastUpdatedBy,
        'cancellationCode': cancellationCode,
        'customField1': customField1,
        'customField2': customField2,
        'customField3': customField3,
        'customField4': customField4,
        'customField5': customField5
    };

    getTypeName() => "Activity";
    TypeContext? context = _ctx;
}

class Guest implements IConvertible
{
    DateTime? arrivalDate;
    DateTime? departureDate;
    int? profileSequence;
    bool? isPrimary;
    String? folioID;
    double? percentageBilled;
    String? purposeOfStay;
    String? originalReservationNum;
    String? originalConfirmationNum;
    int? guestGroupSequence;
    String? taxType;
    Profile? guestProfile;
    List<ExternalReference>? externalReferences;
    List<Activity>? activities;
    List<UDFDataType>? udfDataCollection;

    Guest({this.arrivalDate,this.departureDate,this.profileSequence,this.isPrimary,this.folioID,this.percentageBilled,this.purposeOfStay,this.originalReservationNum,this.originalConfirmationNum,this.guestGroupSequence,this.taxType,this.guestProfile,this.externalReferences,this.activities,this.udfDataCollection});
    Guest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        arrivalDate = JsonConverters.fromJson(json['arrivalDate'],'DateTime',context!);
        departureDate = JsonConverters.fromJson(json['departureDate'],'DateTime',context!);
        profileSequence = json['profileSequence'];
        isPrimary = json['isPrimary'];
        folioID = json['folioID'];
        percentageBilled = JsonConverters.toDouble(json['percentageBilled']);
        purposeOfStay = json['purposeOfStay'];
        originalReservationNum = json['originalReservationNum'];
        originalConfirmationNum = json['originalConfirmationNum'];
        guestGroupSequence = json['guestGroupSequence'];
        taxType = json['taxType'];
        guestProfile = JsonConverters.fromJson(json['guestProfile'],'Profile',context!);
        externalReferences = JsonConverters.fromJson(json['externalReferences'],'List<ExternalReference>',context!);
        activities = JsonConverters.fromJson(json['activities'],'List<Activity>',context!);
        udfDataCollection = JsonConverters.fromJson(json['udfDataCollection'],'List<UDFDataType>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'arrivalDate': JsonConverters.toJson(arrivalDate,'DateTime',context!),
        'departureDate': JsonConverters.toJson(departureDate,'DateTime',context!),
        'profileSequence': profileSequence,
        'isPrimary': isPrimary,
        'folioID': folioID,
        'percentageBilled': percentageBilled,
        'purposeOfStay': purposeOfStay,
        'originalReservationNum': originalReservationNum,
        'originalConfirmationNum': originalConfirmationNum,
        'guestGroupSequence': guestGroupSequence,
        'taxType': taxType,
        'guestProfile': JsonConverters.toJson(guestProfile,'Profile',context!),
        'externalReferences': JsonConverters.toJson(externalReferences,'List<ExternalReference>',context!),
        'activities': JsonConverters.toJson(activities,'List<Activity>',context!),
        'udfDataCollection': JsonConverters.toJson(udfDataCollection,'List<UDFDataType>',context!)
    };

    getTypeName() => "Guest";
    TypeContext? context = _ctx;
}

class TaxType implements IConvertible
{
    double? amount;
    String? code;
    String? description;

    TaxType({this.amount,this.code,this.description});
    TaxType.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        amount = JsonConverters.toDouble(json['amount']);
        code = json['code'];
        description = json['description'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'amount': amount,
        'code': code,
        'description': description
    };

    getTypeName() => "TaxType";
    TypeContext? context = _ctx;
}

class StayDetail implements IConvertible
{
    String? externalID;
    DateTime? stayDate;
    String? roomNumber;
    String? roomType;
    String? rateType;
    String? marketCode;
    String? resSourceCode;
    int? numberOfRooms;
    double? dailyRate;
    String? currencyCode;
    DateTime? dateStayDetailUpdated;
    double? dailyRateBeforeTax;
    double? dailyRateAfterTax;
    List<TaxType>? taxTypes;

    StayDetail({this.externalID,this.stayDate,this.roomNumber,this.roomType,this.rateType,this.marketCode,this.resSourceCode,this.numberOfRooms,this.dailyRate,this.currencyCode,this.dateStayDetailUpdated,this.dailyRateBeforeTax,this.dailyRateAfterTax,this.taxTypes});
    StayDetail.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        externalID = json['externalID'];
        stayDate = JsonConverters.fromJson(json['stayDate'],'DateTime',context!);
        roomNumber = json['roomNumber'];
        roomType = json['roomType'];
        rateType = json['rateType'];
        marketCode = json['marketCode'];
        resSourceCode = json['resSourceCode'];
        numberOfRooms = json['numberOfRooms'];
        dailyRate = JsonConverters.toDouble(json['dailyRate']);
        currencyCode = json['currencyCode'];
        dateStayDetailUpdated = JsonConverters.fromJson(json['dateStayDetailUpdated'],'DateTime',context!);
        dailyRateBeforeTax = JsonConverters.toDouble(json['dailyRateBeforeTax']);
        dailyRateAfterTax = JsonConverters.toDouble(json['dailyRateAfterTax']);
        taxTypes = JsonConverters.fromJson(json['taxTypes'],'List<TaxType>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'externalID': externalID,
        'stayDate': JsonConverters.toJson(stayDate,'DateTime',context!),
        'roomNumber': roomNumber,
        'roomType': roomType,
        'rateType': rateType,
        'marketCode': marketCode,
        'resSourceCode': resSourceCode,
        'numberOfRooms': numberOfRooms,
        'dailyRate': dailyRate,
        'currencyCode': currencyCode,
        'dateStayDetailUpdated': JsonConverters.toJson(dateStayDetailUpdated,'DateTime',context!),
        'dailyRateBeforeTax': dailyRateBeforeTax,
        'dailyRateAfterTax': dailyRateAfterTax,
        'taxTypes': JsonConverters.toJson(taxTypes,'List<TaxType>',context!)
    };

    getTypeName() => "StayDetail";
    TypeContext? context = _ctx;
}

class CancelPenalty implements IConvertible
{
    String? ruleType;
    String? ruleCode;
    String? ruleDescription;
    String? resortRuleID;
    String? ruleID;
    double? amount;
    double? percentage;
    DateTime? cancelByDate;
    double? cancelPercentDue;
    int? cancelRoomNights;
    double? activityDeposit;
    double? roomDeposit;
    String? ruleScope;
    String? currencyCode;

    CancelPenalty({this.ruleType,this.ruleCode,this.ruleDescription,this.resortRuleID,this.ruleID,this.amount,this.percentage,this.cancelByDate,this.cancelPercentDue,this.cancelRoomNights,this.activityDeposit,this.roomDeposit,this.ruleScope,this.currencyCode});
    CancelPenalty.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ruleType = json['ruleType'];
        ruleCode = json['ruleCode'];
        ruleDescription = json['ruleDescription'];
        resortRuleID = json['resortRuleID'];
        ruleID = json['ruleID'];
        amount = JsonConverters.toDouble(json['amount']);
        percentage = JsonConverters.toDouble(json['percentage']);
        cancelByDate = JsonConverters.fromJson(json['cancelByDate'],'DateTime',context!);
        cancelPercentDue = JsonConverters.toDouble(json['cancelPercentDue']);
        cancelRoomNights = json['cancelRoomNights'];
        activityDeposit = JsonConverters.toDouble(json['activityDeposit']);
        roomDeposit = JsonConverters.toDouble(json['roomDeposit']);
        ruleScope = json['ruleScope'];
        currencyCode = json['currencyCode'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ruleType': ruleType,
        'ruleCode': ruleCode,
        'ruleDescription': ruleDescription,
        'resortRuleID': resortRuleID,
        'ruleID': ruleID,
        'amount': amount,
        'percentage': percentage,
        'cancelByDate': JsonConverters.toJson(cancelByDate,'DateTime',context!),
        'cancelPercentDue': cancelPercentDue,
        'cancelRoomNights': cancelRoomNights,
        'activityDeposit': activityDeposit,
        'roomDeposit': roomDeposit,
        'ruleScope': ruleScope,
        'currencyCode': currencyCode
    };

    getTypeName() => "CancelPenalty";
    TypeContext? context = _ctx;
}

class ResServicePrice implements IConvertible
{
    String? externalID;
    DateTime? actualBeginDate;
    DateTime? actualEndDate;
    double? unitPrice;

    ResServicePrice({this.externalID,this.actualBeginDate,this.actualEndDate,this.unitPrice});
    ResServicePrice.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        externalID = json['externalID'];
        actualBeginDate = JsonConverters.fromJson(json['actualBeginDate'],'DateTime',context!);
        actualEndDate = JsonConverters.fromJson(json['actualEndDate'],'DateTime',context!);
        unitPrice = JsonConverters.toDouble(json['unitPrice']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'externalID': externalID,
        'actualBeginDate': JsonConverters.toJson(actualBeginDate,'DateTime',context!),
        'actualEndDate': JsonConverters.toJson(actualEndDate,'DateTime',context!),
        'unitPrice': unitPrice
    };

    getTypeName() => "ResServicePrice";
    TypeContext? context = _ctx;
}

class ResService implements IConvertible
{
    String? externalID;
    String? serviceType;
    String? serviceGroup;
    String? resAction;
    String? servicePricingType;
    int? serviceSequence;
    String? serviceInventoryCode;
    DateTime? startDate;
    DateTime? endDate;
    String? frequency;
    double? priceAmount;
    String? currencyCode;
    int? quantity;
    String? ratePlanCode;
    String? inventoryBlockCode;
    bool? priceGuaranteed;
    bool? inclusive;
    String? serviceComments;
    DateTime? inactiveDate;
    List<ResServicePrice>? servicePrices;

    ResService({this.externalID,this.serviceType,this.serviceGroup,this.resAction,this.servicePricingType,this.serviceSequence,this.serviceInventoryCode,this.startDate,this.endDate,this.frequency,this.priceAmount,this.currencyCode,this.quantity,this.ratePlanCode,this.inventoryBlockCode,this.priceGuaranteed,this.inclusive,this.serviceComments,this.inactiveDate,this.servicePrices});
    ResService.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        externalID = json['externalID'];
        serviceType = json['serviceType'];
        serviceGroup = json['serviceGroup'];
        resAction = json['resAction'];
        servicePricingType = json['servicePricingType'];
        serviceSequence = json['serviceSequence'];
        serviceInventoryCode = json['serviceInventoryCode'];
        startDate = JsonConverters.fromJson(json['startDate'],'DateTime',context!);
        endDate = JsonConverters.fromJson(json['endDate'],'DateTime',context!);
        frequency = json['frequency'];
        priceAmount = JsonConverters.toDouble(json['priceAmount']);
        currencyCode = json['currencyCode'];
        quantity = json['quantity'];
        ratePlanCode = json['ratePlanCode'];
        inventoryBlockCode = json['inventoryBlockCode'];
        priceGuaranteed = json['priceGuaranteed'];
        inclusive = json['inclusive'];
        serviceComments = json['serviceComments'];
        inactiveDate = JsonConverters.fromJson(json['inactiveDate'],'DateTime',context!);
        servicePrices = JsonConverters.fromJson(json['servicePrices'],'List<ResServicePrice>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'externalID': externalID,
        'serviceType': serviceType,
        'serviceGroup': serviceGroup,
        'resAction': resAction,
        'servicePricingType': servicePricingType,
        'serviceSequence': serviceSequence,
        'serviceInventoryCode': serviceInventoryCode,
        'startDate': JsonConverters.toJson(startDate,'DateTime',context!),
        'endDate': JsonConverters.toJson(endDate,'DateTime',context!),
        'frequency': frequency,
        'priceAmount': priceAmount,
        'currencyCode': currencyCode,
        'quantity': quantity,
        'ratePlanCode': ratePlanCode,
        'inventoryBlockCode': inventoryBlockCode,
        'priceGuaranteed': priceGuaranteed,
        'inclusive': inclusive,
        'serviceComments': serviceComments,
        'inactiveDate': JsonConverters.toJson(inactiveDate,'DateTime',context!),
        'servicePrices': JsonConverters.toJson(servicePrices,'List<ResServicePrice>',context!)
    };

    getTypeName() => "ResService";
    TypeContext? context = _ctx;
}

class PayInfo implements IConvertible
{
    String? recordType;
    String? methodTypeCode;
    String? methodType;
    DateTime? dueDate;
    double? amount;
    String? currencyCode;
    bool? cancelIfNotReceived;
    DateTime? dropTime;

    PayInfo({this.recordType,this.methodTypeCode,this.methodType,this.dueDate,this.amount,this.currencyCode,this.cancelIfNotReceived,this.dropTime});
    PayInfo.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        recordType = json['recordType'];
        methodTypeCode = json['methodTypeCode'];
        methodType = json['methodType'];
        dueDate = JsonConverters.fromJson(json['dueDate'],'DateTime',context!);
        amount = JsonConverters.toDouble(json['amount']);
        currencyCode = json['currencyCode'];
        cancelIfNotReceived = json['cancelIfNotReceived'];
        dropTime = JsonConverters.fromJson(json['dropTime'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'recordType': recordType,
        'methodTypeCode': methodTypeCode,
        'methodType': methodType,
        'dueDate': JsonConverters.toJson(dueDate,'DateTime',context!),
        'amount': amount,
        'currencyCode': currencyCode,
        'cancelIfNotReceived': cancelIfNotReceived,
        'dropTime': JsonConverters.toJson(dropTime,'DateTime',context!)
    };

    getTypeName() => "PayInfo";
    TypeContext? context = _ctx;
}

class FixedCharge implements IConvertible
{
    String? chargeCode;
    String? chargeName;
    String? description;
    String? frequency;
    int? chargeUnit;
    String? chargeType;
    String? curencyCode;
    double? amount;
    bool? taxInclusive;
    double? taxAmount;
    double? percentage;
    DateTime? effectiveDate;
    DateTime? expirationDate;
    bool? taxable;
    String? customCode1;
    String? customCode2;
    String? customCode3;
    DateTime? inactiveDate;

    FixedCharge({this.chargeCode,this.chargeName,this.description,this.frequency,this.chargeUnit,this.chargeType,this.curencyCode,this.amount,this.taxInclusive,this.taxAmount,this.percentage,this.effectiveDate,this.expirationDate,this.taxable,this.customCode1,this.customCode2,this.customCode3,this.inactiveDate});
    FixedCharge.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        chargeCode = json['chargeCode'];
        chargeName = json['chargeName'];
        description = json['description'];
        frequency = json['frequency'];
        chargeUnit = json['chargeUnit'];
        chargeType = json['chargeType'];
        curencyCode = json['curencyCode'];
        amount = JsonConverters.toDouble(json['amount']);
        taxInclusive = json['taxInclusive'];
        taxAmount = JsonConverters.toDouble(json['taxAmount']);
        percentage = JsonConverters.toDouble(json['percentage']);
        effectiveDate = JsonConverters.fromJson(json['effectiveDate'],'DateTime',context!);
        expirationDate = JsonConverters.fromJson(json['expirationDate'],'DateTime',context!);
        taxable = json['taxable'];
        customCode1 = json['customCode1'];
        customCode2 = json['customCode2'];
        customCode3 = json['customCode3'];
        inactiveDate = JsonConverters.fromJson(json['inactiveDate'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'chargeCode': chargeCode,
        'chargeName': chargeName,
        'description': description,
        'frequency': frequency,
        'chargeUnit': chargeUnit,
        'chargeType': chargeType,
        'curencyCode': curencyCode,
        'amount': amount,
        'taxInclusive': taxInclusive,
        'taxAmount': taxAmount,
        'percentage': percentage,
        'effectiveDate': JsonConverters.toJson(effectiveDate,'DateTime',context!),
        'expirationDate': JsonConverters.toJson(expirationDate,'DateTime',context!),
        'taxable': taxable,
        'customCode1': customCode1,
        'customCode2': customCode2,
        'customCode3': customCode3,
        'inactiveDate': JsonConverters.toJson(inactiveDate,'DateTime',context!)
    };

    getTypeName() => "FixedCharge";
    TypeContext? context = _ctx;
}

class StayHeader implements IConvertible
{
    String? externalID;
    DateTime? stayBeginDate;
    DateTime? stayEndDate;
    String? buildingCode;
    String? roomNumber;
    String? roomType;
    String? marketSegmentCode;
    String? resSourceCode;
    String? shareCode;
    String? invBlockCode;
    String? resStatusType;
    String? rtc;
    String? channelCode;
    int? sourceSequence;
    String? rateType;
    String? rateCategory;
    double? dailyRate;
    String? currencyCode;
    String? promotionCode;
    List<StayDetail>? stayDetails;
    List<CancelPenalty>? cancelPenalties;
    List<ResService>? resServices;
    List<PayInfo>? payInfoCollection;
    List<FixedCharge>? fixedCharges;

    StayHeader({this.externalID,this.stayBeginDate,this.stayEndDate,this.buildingCode,this.roomNumber,this.roomType,this.marketSegmentCode,this.resSourceCode,this.shareCode,this.invBlockCode,this.resStatusType,this.rtc,this.channelCode,this.sourceSequence,this.rateType,this.rateCategory,this.dailyRate,this.currencyCode,this.promotionCode,this.stayDetails,this.cancelPenalties,this.resServices,this.payInfoCollection,this.fixedCharges});
    StayHeader.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        externalID = json['externalID'];
        stayBeginDate = JsonConverters.fromJson(json['stayBeginDate'],'DateTime',context!);
        stayEndDate = JsonConverters.fromJson(json['stayEndDate'],'DateTime',context!);
        buildingCode = json['buildingCode'];
        roomNumber = json['roomNumber'];
        roomType = json['roomType'];
        marketSegmentCode = json['marketSegmentCode'];
        resSourceCode = json['resSourceCode'];
        shareCode = json['shareCode'];
        invBlockCode = json['invBlockCode'];
        resStatusType = json['resStatusType'];
        rtc = json['rtc'];
        channelCode = json['channelCode'];
        sourceSequence = json['sourceSequence'];
        rateType = json['rateType'];
        rateCategory = json['rateCategory'];
        dailyRate = JsonConverters.toDouble(json['dailyRate']);
        currencyCode = json['currencyCode'];
        promotionCode = json['promotionCode'];
        stayDetails = JsonConverters.fromJson(json['stayDetails'],'List<StayDetail>',context!);
        cancelPenalties = JsonConverters.fromJson(json['cancelPenalties'],'List<CancelPenalty>',context!);
        resServices = JsonConverters.fromJson(json['resServices'],'List<ResService>',context!);
        payInfoCollection = JsonConverters.fromJson(json['payInfoCollection'],'List<PayInfo>',context!);
        fixedCharges = JsonConverters.fromJson(json['fixedCharges'],'List<FixedCharge>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'externalID': externalID,
        'stayBeginDate': JsonConverters.toJson(stayBeginDate,'DateTime',context!),
        'stayEndDate': JsonConverters.toJson(stayEndDate,'DateTime',context!),
        'buildingCode': buildingCode,
        'roomNumber': roomNumber,
        'roomType': roomType,
        'marketSegmentCode': marketSegmentCode,
        'resSourceCode': resSourceCode,
        'shareCode': shareCode,
        'invBlockCode': invBlockCode,
        'resStatusType': resStatusType,
        'rtc': rtc,
        'channelCode': channelCode,
        'sourceSequence': sourceSequence,
        'rateType': rateType,
        'rateCategory': rateCategory,
        'dailyRate': dailyRate,
        'currencyCode': currencyCode,
        'promotionCode': promotionCode,
        'stayDetails': JsonConverters.toJson(stayDetails,'List<StayDetail>',context!),
        'cancelPenalties': JsonConverters.toJson(cancelPenalties,'List<CancelPenalty>',context!),
        'resServices': JsonConverters.toJson(resServices,'List<ResService>',context!),
        'payInfoCollection': JsonConverters.toJson(payInfoCollection,'List<PayInfo>',context!),
        'fixedCharges': JsonConverters.toJson(fixedCharges,'List<FixedCharge>',context!)
    };

    getTypeName() => "StayHeader";
    TypeContext? context = _ctx;
}

class StayHistoryRevenue implements IConvertible
{
    String? recordStatus;
    // @DataMember(IsRequired=true)
    String? revenueGroup;

    // @DataMember(IsRequired=true)
    String? revenueType;

    // @DataMember(IsRequired=true)
    double? amount;

    String? currencyCode;
    String? folioWindow;
    DateTime? transactionDate;
    DateTime? inactiveDate;

    StayHistoryRevenue({this.recordStatus,this.revenueGroup,this.revenueType,this.amount,this.currencyCode,this.folioWindow,this.transactionDate,this.inactiveDate});
    StayHistoryRevenue.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        recordStatus = json['recordStatus'];
        revenueGroup = json['revenueGroup'];
        revenueType = json['revenueType'];
        amount = JsonConverters.toDouble(json['amount']);
        currencyCode = json['currencyCode'];
        folioWindow = json['folioWindow'];
        transactionDate = JsonConverters.fromJson(json['transactionDate'],'DateTime',context!);
        inactiveDate = JsonConverters.fromJson(json['inactiveDate'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'recordStatus': recordStatus,
        'revenueGroup': revenueGroup,
        'revenueType': revenueType,
        'amount': amount,
        'currencyCode': currencyCode,
        'folioWindow': folioWindow,
        'transactionDate': JsonConverters.toJson(transactionDate,'DateTime',context!),
        'inactiveDate': JsonConverters.toJson(inactiveDate,'DateTime',context!)
    };

    getTypeName() => "StayHistoryRevenue";
    TypeContext? context = _ctx;
}

class PaymentCard implements IConvertible
{
    String? cardType;
    String? cardHolderName;
    String? cardValue;
    String? cardValueType;
    int? expirationMonth;
    int? expirationYear;
    String? securityCode;
    bool? isPrimary;

    PaymentCard({this.cardType,this.cardHolderName,this.cardValue,this.cardValueType,this.expirationMonth,this.expirationYear,this.securityCode,this.isPrimary});
    PaymentCard.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        cardType = json['cardType'];
        cardHolderName = json['cardHolderName'];
        cardValue = json['cardValue'];
        cardValueType = json['cardValueType'];
        expirationMonth = json['expirationMonth'];
        expirationYear = json['expirationYear'];
        securityCode = json['securityCode'];
        isPrimary = json['isPrimary'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'cardType': cardType,
        'cardHolderName': cardHolderName,
        'cardValue': cardValue,
        'cardValueType': cardValueType,
        'expirationMonth': expirationMonth,
        'expirationYear': expirationYear,
        'securityCode': securityCode,
        'isPrimary': isPrimary
    };

    getTypeName() => "PaymentCard";
    TypeContext? context = _ctx;
}

class PaymentMethod implements IConvertible
{
    String? methodOfPayment;
    String? folioID;
    List<PaymentCard>? paymentCards;

    PaymentMethod({this.methodOfPayment,this.folioID,this.paymentCards});
    PaymentMethod.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        methodOfPayment = json['methodOfPayment'];
        folioID = json['folioID'];
        paymentCards = JsonConverters.fromJson(json['paymentCards'],'List<PaymentCard>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'methodOfPayment': methodOfPayment,
        'folioID': folioID,
        'paymentCards': JsonConverters.toJson(paymentCards,'List<PaymentCard>',context!)
    };

    getTypeName() => "PaymentMethod";
    TypeContext? context = _ctx;
}

enum ResActionTypeCode
{
    RT,
    AT,
    TR,
}

class ResAction implements IConvertible
{
    String? externalID;
    String? resActionTypeID;
    ResActionTypeCode? resActionType;
    String? sourceResAction;
    String? resActionText;
    String? resActionBy;
    DateTime? resActionDate;
    DateTime? inactiveDate;

    ResAction({this.externalID,this.resActionTypeID,this.resActionType,this.sourceResAction,this.resActionText,this.resActionBy,this.resActionDate,this.inactiveDate});
    ResAction.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        externalID = json['externalID'];
        resActionTypeID = json['resActionTypeID'];
        resActionType = JsonConverters.fromJson(json['resActionType'],'ResActionTypeCode',context!);
        sourceResAction = json['sourceResAction'];
        resActionText = json['resActionText'];
        resActionBy = json['resActionBy'];
        resActionDate = JsonConverters.fromJson(json['resActionDate'],'DateTime',context!);
        inactiveDate = JsonConverters.fromJson(json['inactiveDate'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'externalID': externalID,
        'resActionTypeID': resActionTypeID,
        'resActionType': JsonConverters.toJson(resActionType,'ResActionTypeCode',context!),
        'sourceResAction': sourceResAction,
        'resActionText': resActionText,
        'resActionBy': resActionBy,
        'resActionDate': JsonConverters.toJson(resActionDate,'DateTime',context!),
        'inactiveDate': JsonConverters.toJson(inactiveDate,'DateTime',context!)
    };

    getTypeName() => "ResAction";
    TypeContext? context = _ctx;
}

class Reservation implements IConvertible
{
    String? cendynPropertyID;
    String? propertyName;
    List<UniqueIDType>? uniqueIDs;
    String? resTypeCode;
    String? resStatusCode;
    String? resStatus;
    String? confirmationNum;
    String? centralResNum;
    DateTime? resArriveDate;
    DateTime? resDepartDate;
    String? resArriveTime;
    String? resDepartTime;
    int? numRooms;
    String? buildingCode;
    String? roomTypeCode;
    String? roomNumber;
    String? rateCode;
    String? rateCategoryCode;
    double? rateAmount;
    bool? rateConfidential;
    String? packageCode;
    double? packageAmount;
    String? packageDescription;
    String? discountCode;
    double? discountAmount;
    double? discountPercent;
    String? discountReasonCode;
    String? guaranteedByCode;
    String? mop;
    bool? isNotRefundable;
    String? sharerCode;
    String? legNumbers;
    String? groupID;
    String? groupName;
    String? resSourceCode;
    String? resSourceCategory;
    String? trvlAgntPmsID;
    String? trvlAgntCode;
    String? trvlAgntIATA;
    String? trvlAgntName;
    String? marketSegmentCode;
    String? marketCodeCategory;
    String? marketRegionCode;
    String? companyCode;
    String? companyName;
    String? billingCode;
    String? billingName;
    String? customerSegment;
    int? numAdults;
    int? numYouths;
    int? numChildren;
    int? totalRoomNights;
    DateTime? dateResMade;
    DateTime? dateResUpdated;
    String? resMadeBy;
    String? resUpdatedBy;
    String? checkedInBy;
    String? checkedOutBy;
    String? cancellationID;
    String? cancellationCode;
    String? cancellationComment;
    DateTime? cancellationDate;
    String? sourceName;
    String? sourceID;
    double? averageRoomRate;
    double? depositAmountDue;
    double? depositAmountPaid;
    double? accountBalance;
    double? totalOtherRevenue;
    double? totalFBRevenue;
    double? totalRoomRevenue;
    double? totalTax;
    double? totalRevenue;
    String? currencyCode;
    List<Guest>? guests;
    List<StayHeader>? stayHeaders;
    List<ActionComment>? actionComments;
    List<SpecialRequest>? specialRequests;
    List<UDFDataType>? udfDataCollection;
    List<TaxType>? taxTypes;
    List<StayHistoryRevenue>? stayHistoryRevenueCollection;
    List<ResService>? resServices;
    List<ExternalReference>? externalReferences;
    List<PaymentMethod>? paymentMethods;
    List<ResAction>? resActions;

    Reservation({this.cendynPropertyID,this.propertyName,this.uniqueIDs,this.resTypeCode,this.resStatusCode,this.resStatus,this.confirmationNum,this.centralResNum,this.resArriveDate,this.resDepartDate,this.resArriveTime,this.resDepartTime,this.numRooms,this.buildingCode,this.roomTypeCode,this.roomNumber,this.rateCode,this.rateCategoryCode,this.rateAmount,this.rateConfidential,this.packageCode,this.packageAmount,this.packageDescription,this.discountCode,this.discountAmount,this.discountPercent,this.discountReasonCode,this.guaranteedByCode,this.mop,this.isNotRefundable,this.sharerCode,this.legNumbers,this.groupID,this.groupName,this.resSourceCode,this.resSourceCategory,this.trvlAgntPmsID,this.trvlAgntCode,this.trvlAgntIATA,this.trvlAgntName,this.marketSegmentCode,this.marketCodeCategory,this.marketRegionCode,this.companyCode,this.companyName,this.billingCode,this.billingName,this.customerSegment,this.numAdults,this.numYouths,this.numChildren,this.totalRoomNights,this.dateResMade,this.dateResUpdated,this.resMadeBy,this.resUpdatedBy,this.checkedInBy,this.checkedOutBy,this.cancellationID,this.cancellationCode,this.cancellationComment,this.cancellationDate,this.sourceName,this.sourceID,this.averageRoomRate,this.depositAmountDue,this.depositAmountPaid,this.accountBalance,this.totalOtherRevenue,this.totalFBRevenue,this.totalRoomRevenue,this.totalTax,this.totalRevenue,this.currencyCode,this.guests,this.stayHeaders,this.actionComments,this.specialRequests,this.udfDataCollection,this.taxTypes,this.stayHistoryRevenueCollection,this.resServices,this.externalReferences,this.paymentMethods,this.resActions});
    Reservation.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        cendynPropertyID = json['cendynPropertyID'];
        propertyName = json['propertyName'];
        uniqueIDs = JsonConverters.fromJson(json['uniqueIDs'],'List<UniqueIDType>',context!);
        resTypeCode = json['resTypeCode'];
        resStatusCode = json['resStatusCode'];
        resStatus = json['resStatus'];
        confirmationNum = json['confirmationNum'];
        centralResNum = json['centralResNum'];
        resArriveDate = JsonConverters.fromJson(json['resArriveDate'],'DateTime',context!);
        resDepartDate = JsonConverters.fromJson(json['resDepartDate'],'DateTime',context!);
        resArriveTime = json['resArriveTime'];
        resDepartTime = json['resDepartTime'];
        numRooms = json['numRooms'];
        buildingCode = json['buildingCode'];
        roomTypeCode = json['roomTypeCode'];
        roomNumber = json['roomNumber'];
        rateCode = json['rateCode'];
        rateCategoryCode = json['rateCategoryCode'];
        rateAmount = JsonConverters.toDouble(json['rateAmount']);
        rateConfidential = json['rateConfidential'];
        packageCode = json['packageCode'];
        packageAmount = JsonConverters.toDouble(json['packageAmount']);
        packageDescription = json['packageDescription'];
        discountCode = json['discountCode'];
        discountAmount = JsonConverters.toDouble(json['discountAmount']);
        discountPercent = JsonConverters.toDouble(json['discountPercent']);
        discountReasonCode = json['discountReasonCode'];
        guaranteedByCode = json['guaranteedByCode'];
        mop = json['mop'];
        isNotRefundable = json['isNotRefundable'];
        sharerCode = json['sharerCode'];
        legNumbers = json['legNumbers'];
        groupID = json['groupID'];
        groupName = json['groupName'];
        resSourceCode = json['resSourceCode'];
        resSourceCategory = json['resSourceCategory'];
        trvlAgntPmsID = json['trvlAgntPmsID'];
        trvlAgntCode = json['trvlAgntCode'];
        trvlAgntIATA = json['trvlAgntIATA'];
        trvlAgntName = json['trvlAgntName'];
        marketSegmentCode = json['marketSegmentCode'];
        marketCodeCategory = json['marketCodeCategory'];
        marketRegionCode = json['marketRegionCode'];
        companyCode = json['companyCode'];
        companyName = json['companyName'];
        billingCode = json['billingCode'];
        billingName = json['billingName'];
        customerSegment = json['customerSegment'];
        numAdults = json['numAdults'];
        numYouths = json['numYouths'];
        numChildren = json['numChildren'];
        totalRoomNights = json['totalRoomNights'];
        dateResMade = JsonConverters.fromJson(json['dateResMade'],'DateTime',context!);
        dateResUpdated = JsonConverters.fromJson(json['dateResUpdated'],'DateTime',context!);
        resMadeBy = json['resMadeBy'];
        resUpdatedBy = json['resUpdatedBy'];
        checkedInBy = json['checkedInBy'];
        checkedOutBy = json['checkedOutBy'];
        cancellationID = json['cancellationID'];
        cancellationCode = json['cancellationCode'];
        cancellationComment = json['cancellationComment'];
        cancellationDate = JsonConverters.fromJson(json['cancellationDate'],'DateTime',context!);
        sourceName = json['sourceName'];
        sourceID = json['sourceID'];
        averageRoomRate = JsonConverters.toDouble(json['averageRoomRate']);
        depositAmountDue = JsonConverters.toDouble(json['depositAmountDue']);
        depositAmountPaid = JsonConverters.toDouble(json['depositAmountPaid']);
        accountBalance = JsonConverters.toDouble(json['accountBalance']);
        totalOtherRevenue = JsonConverters.toDouble(json['totalOtherRevenue']);
        totalFBRevenue = JsonConverters.toDouble(json['totalFBRevenue']);
        totalRoomRevenue = JsonConverters.toDouble(json['totalRoomRevenue']);
        totalTax = JsonConverters.toDouble(json['totalTax']);
        totalRevenue = JsonConverters.toDouble(json['totalRevenue']);
        currencyCode = json['currencyCode'];
        guests = JsonConverters.fromJson(json['guests'],'List<Guest>',context!);
        stayHeaders = JsonConverters.fromJson(json['stayHeaders'],'List<StayHeader>',context!);
        actionComments = JsonConverters.fromJson(json['actionComments'],'List<ActionComment>',context!);
        specialRequests = JsonConverters.fromJson(json['specialRequests'],'List<SpecialRequest>',context!);
        udfDataCollection = JsonConverters.fromJson(json['udfDataCollection'],'List<UDFDataType>',context!);
        taxTypes = JsonConverters.fromJson(json['taxTypes'],'List<TaxType>',context!);
        stayHistoryRevenueCollection = JsonConverters.fromJson(json['stayHistoryRevenueCollection'],'List<StayHistoryRevenue>',context!);
        resServices = JsonConverters.fromJson(json['resServices'],'List<ResService>',context!);
        externalReferences = JsonConverters.fromJson(json['externalReferences'],'List<ExternalReference>',context!);
        paymentMethods = JsonConverters.fromJson(json['paymentMethods'],'List<PaymentMethod>',context!);
        resActions = JsonConverters.fromJson(json['resActions'],'List<ResAction>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'cendynPropertyID': cendynPropertyID,
        'propertyName': propertyName,
        'uniqueIDs': JsonConverters.toJson(uniqueIDs,'List<UniqueIDType>',context!),
        'resTypeCode': resTypeCode,
        'resStatusCode': resStatusCode,
        'resStatus': resStatus,
        'confirmationNum': confirmationNum,
        'centralResNum': centralResNum,
        'resArriveDate': JsonConverters.toJson(resArriveDate,'DateTime',context!),
        'resDepartDate': JsonConverters.toJson(resDepartDate,'DateTime',context!),
        'resArriveTime': resArriveTime,
        'resDepartTime': resDepartTime,
        'numRooms': numRooms,
        'buildingCode': buildingCode,
        'roomTypeCode': roomTypeCode,
        'roomNumber': roomNumber,
        'rateCode': rateCode,
        'rateCategoryCode': rateCategoryCode,
        'rateAmount': rateAmount,
        'rateConfidential': rateConfidential,
        'packageCode': packageCode,
        'packageAmount': packageAmount,
        'packageDescription': packageDescription,
        'discountCode': discountCode,
        'discountAmount': discountAmount,
        'discountPercent': discountPercent,
        'discountReasonCode': discountReasonCode,
        'guaranteedByCode': guaranteedByCode,
        'mop': mop,
        'isNotRefundable': isNotRefundable,
        'sharerCode': sharerCode,
        'legNumbers': legNumbers,
        'groupID': groupID,
        'groupName': groupName,
        'resSourceCode': resSourceCode,
        'resSourceCategory': resSourceCategory,
        'trvlAgntPmsID': trvlAgntPmsID,
        'trvlAgntCode': trvlAgntCode,
        'trvlAgntIATA': trvlAgntIATA,
        'trvlAgntName': trvlAgntName,
        'marketSegmentCode': marketSegmentCode,
        'marketCodeCategory': marketCodeCategory,
        'marketRegionCode': marketRegionCode,
        'companyCode': companyCode,
        'companyName': companyName,
        'billingCode': billingCode,
        'billingName': billingName,
        'customerSegment': customerSegment,
        'numAdults': numAdults,
        'numYouths': numYouths,
        'numChildren': numChildren,
        'totalRoomNights': totalRoomNights,
        'dateResMade': JsonConverters.toJson(dateResMade,'DateTime',context!),
        'dateResUpdated': JsonConverters.toJson(dateResUpdated,'DateTime',context!),
        'resMadeBy': resMadeBy,
        'resUpdatedBy': resUpdatedBy,
        'checkedInBy': checkedInBy,
        'checkedOutBy': checkedOutBy,
        'cancellationID': cancellationID,
        'cancellationCode': cancellationCode,
        'cancellationComment': cancellationComment,
        'cancellationDate': JsonConverters.toJson(cancellationDate,'DateTime',context!),
        'sourceName': sourceName,
        'sourceID': sourceID,
        'averageRoomRate': averageRoomRate,
        'depositAmountDue': depositAmountDue,
        'depositAmountPaid': depositAmountPaid,
        'accountBalance': accountBalance,
        'totalOtherRevenue': totalOtherRevenue,
        'totalFBRevenue': totalFBRevenue,
        'totalRoomRevenue': totalRoomRevenue,
        'totalTax': totalTax,
        'totalRevenue': totalRevenue,
        'currencyCode': currencyCode,
        'guests': JsonConverters.toJson(guests,'List<Guest>',context!),
        'stayHeaders': JsonConverters.toJson(stayHeaders,'List<StayHeader>',context!),
        'actionComments': JsonConverters.toJson(actionComments,'List<ActionComment>',context!),
        'specialRequests': JsonConverters.toJson(specialRequests,'List<SpecialRequest>',context!),
        'udfDataCollection': JsonConverters.toJson(udfDataCollection,'List<UDFDataType>',context!),
        'taxTypes': JsonConverters.toJson(taxTypes,'List<TaxType>',context!),
        'stayHistoryRevenueCollection': JsonConverters.toJson(stayHistoryRevenueCollection,'List<StayHistoryRevenue>',context!),
        'resServices': JsonConverters.toJson(resServices,'List<ResService>',context!),
        'externalReferences': JsonConverters.toJson(externalReferences,'List<ExternalReference>',context!),
        'paymentMethods': JsonConverters.toJson(paymentMethods,'List<PaymentMethod>',context!),
        'resActions': JsonConverters.toJson(resActions,'List<ResAction>',context!)
    };

    getTypeName() => "Reservation";
    TypeContext? context = _ctx;
}

class ResFullResponse extends CenResResponse implements IConvertible
{
    Reservation? reservation;

    ResFullResponse({this.reservation});
    ResFullResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        reservation = JsonConverters.fromJson(json['reservation'],'Reservation',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'reservation': JsonConverters.toJson(reservation,'Reservation',context!)
    });

    getTypeName() => "ResFullResponse";
    TypeContext? context = _ctx;
}

class ReservationRequest implements IConvertible
{
    String? cendynPropertyId;
    String? id;

    ReservationRequest({this.cendynPropertyId,this.id});
    ReservationRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        cendynPropertyId = json['cendynPropertyId'];
        id = json['id'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'cendynPropertyId': cendynPropertyId,
        'id': id
    };

    getTypeName() => "ReservationRequest";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'cert.cendyn.com', types: <String, TypeInfo> {
    'RequestStatus': TypeInfo(TypeOf.Enum, enumValues:RequestStatus.values),
    'CenResResponse': TypeInfo(TypeOf.Class, create:() => CenResResponse()),
    'UniqueIDType': TypeInfo(TypeOf.Class, create:() => UniqueIDType()),
    'ProfileExtension': TypeInfo(TypeOf.Class, create:() => ProfileExtension()),
    'Address': TypeInfo(TypeOf.Class, create:() => Address()),
    'Membership': TypeInfo(TypeOf.Class, create:() => Membership()),
    'ContactMethod': TypeInfo(TypeOf.Class, create:() => ContactMethod()),
    'ActionComment': TypeInfo(TypeOf.Class, create:() => ActionComment()),
    'SpecialRequest': TypeInfo(TypeOf.Class, create:() => SpecialRequest()),
    'UDFDataType': TypeInfo(TypeOf.Class, create:() => UDFDataType()),
    'Lead': TypeInfo(TypeOf.Class, create:() => Lead()),
    'RelatedTraveler': TypeInfo(TypeOf.Class, create:() => RelatedTraveler()),
    'List<UniqueIDType>': TypeInfo(TypeOf.Class, create:() => <UniqueIDType>[]),
    'Document': TypeInfo(TypeOf.Class, create:() => Document()),
    'Voucher': TypeInfo(TypeOf.Class, create:() => Voucher()),
    'ProfilePolicy': TypeInfo(TypeOf.Class, create:() => ProfilePolicy()),
    'Profile': TypeInfo(TypeOf.Class, create:() => Profile()),
    'List<Address>': TypeInfo(TypeOf.Class, create:() => <Address>[]),
    'List<Membership>': TypeInfo(TypeOf.Class, create:() => <Membership>[]),
    'List<ContactMethod>': TypeInfo(TypeOf.Class, create:() => <ContactMethod>[]),
    'List<ActionComment>': TypeInfo(TypeOf.Class, create:() => <ActionComment>[]),
    'List<SpecialRequest>': TypeInfo(TypeOf.Class, create:() => <SpecialRequest>[]),
    'List<UDFDataType>': TypeInfo(TypeOf.Class, create:() => <UDFDataType>[]),
    'List<RelatedTraveler>': TypeInfo(TypeOf.Class, create:() => <RelatedTraveler>[]),
    'List<Document>': TypeInfo(TypeOf.Class, create:() => <Document>[]),
    'List<Voucher>': TypeInfo(TypeOf.Class, create:() => <Voucher>[]),
    'List<ProfilePolicy>': TypeInfo(TypeOf.Class, create:() => <ProfilePolicy>[]),
    'ExternalReference': TypeInfo(TypeOf.Class, create:() => ExternalReference()),
    'Activity': TypeInfo(TypeOf.Class, create:() => Activity()),
    'Guest': TypeInfo(TypeOf.Class, create:() => Guest()),
    'List<ExternalReference>': TypeInfo(TypeOf.Class, create:() => <ExternalReference>[]),
    'List<Activity>': TypeInfo(TypeOf.Class, create:() => <Activity>[]),
    'TaxType': TypeInfo(TypeOf.Class, create:() => TaxType()),
    'StayDetail': TypeInfo(TypeOf.Class, create:() => StayDetail()),
    'List<TaxType>': TypeInfo(TypeOf.Class, create:() => <TaxType>[]),
    'CancelPenalty': TypeInfo(TypeOf.Class, create:() => CancelPenalty()),
    'ResServicePrice': TypeInfo(TypeOf.Class, create:() => ResServicePrice()),
    'ResService': TypeInfo(TypeOf.Class, create:() => ResService()),
    'List<ResServicePrice>': TypeInfo(TypeOf.Class, create:() => <ResServicePrice>[]),
    'PayInfo': TypeInfo(TypeOf.Class, create:() => PayInfo()),
    'FixedCharge': TypeInfo(TypeOf.Class, create:() => FixedCharge()),
    'StayHeader': TypeInfo(TypeOf.Class, create:() => StayHeader()),
    'List<StayDetail>': TypeInfo(TypeOf.Class, create:() => <StayDetail>[]),
    'List<CancelPenalty>': TypeInfo(TypeOf.Class, create:() => <CancelPenalty>[]),
    'List<ResService>': TypeInfo(TypeOf.Class, create:() => <ResService>[]),
    'List<PayInfo>': TypeInfo(TypeOf.Class, create:() => <PayInfo>[]),
    'List<FixedCharge>': TypeInfo(TypeOf.Class, create:() => <FixedCharge>[]),
    'StayHistoryRevenue': TypeInfo(TypeOf.Class, create:() => StayHistoryRevenue()),
    'PaymentCard': TypeInfo(TypeOf.Class, create:() => PaymentCard()),
    'PaymentMethod': TypeInfo(TypeOf.Class, create:() => PaymentMethod()),
    'List<PaymentCard>': TypeInfo(TypeOf.Class, create:() => <PaymentCard>[]),
    'ResActionTypeCode': TypeInfo(TypeOf.Enum, enumValues:ResActionTypeCode.values),
    'ResAction': TypeInfo(TypeOf.Class, create:() => ResAction()),
    'Reservation': TypeInfo(TypeOf.Class, create:() => Reservation()),
    'List<Guest>': TypeInfo(TypeOf.Class, create:() => <Guest>[]),
    'List<StayHeader>': TypeInfo(TypeOf.Class, create:() => <StayHeader>[]),
    'List<StayHistoryRevenue>': TypeInfo(TypeOf.Class, create:() => <StayHistoryRevenue>[]),
    'List<PaymentMethod>': TypeInfo(TypeOf.Class, create:() => <PaymentMethod>[]),
    'List<ResAction>': TypeInfo(TypeOf.Class, create:() => <ResAction>[]),
    'ResFullResponse': TypeInfo(TypeOf.Class, create:() => ResFullResponse()),
    'ReservationRequest': TypeInfo(TypeOf.Class, create:() => ReservationRequest()),
});

Dart ReservationRequest DTOs

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

HTTP + JSON

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

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

{"reservation":{"cendynPropertyID":"String","propertyName":"String","uniqueIDs":[{"id":"String","type":"String","context":"String"}],"resTypeCode":"String","resStatusCode":"String","resStatus":"String","confirmationNum":"String","centralResNum":"String","resArriveDate":"0001-01-01T00:00:00.0000000","resDepartDate":"0001-01-01T00:00:00.0000000","resArriveTime":"String","resDepartTime":"String","numRooms":0,"buildingCode":"String","roomTypeCode":"String","roomNumber":"String","rateCode":"String","rateCategoryCode":"String","rateAmount":0,"rateConfidential":false,"packageCode":"String","packageAmount":0,"packageDescription":"String","discountCode":"String","discountAmount":0,"discountPercent":0,"discountReasonCode":"String","guaranteedByCode":"String","mop":"String","isNotRefundable":false,"sharerCode":"String","legNumbers":"String","groupID":"String","groupName":"String","resSourceCode":"String","resSourceCategory":"String","trvlAgntPmsID":"String","trvlAgntCode":"String","trvlAgntIATA":"String","trvlAgntName":"String","marketSegmentCode":"String","marketCodeCategory":"String","marketRegionCode":"String","companyCode":"String","companyName":"String","billingCode":"String","billingName":"String","customerSegment":"String","numAdults":0,"numYouths":0,"numChildren":0,"totalRoomNights":0,"dateResMade":"0001-01-01T00:00:00.0000000","dateResUpdated":"0001-01-01T00:00:00.0000000","resMadeBy":"String","resUpdatedBy":"String","checkedInBy":"String","checkedOutBy":"String","cancellationID":"String","cancellationCode":"String","cancellationComment":"String","cancellationDate":"0001-01-01T00:00:00.0000000","sourceName":"String","sourceID":"String","averageRoomRate":0,"depositAmountDue":0,"depositAmountPaid":0,"accountBalance":0,"totalOtherRevenue":0,"totalFBRevenue":0,"totalRoomRevenue":0,"totalTax":0,"totalRevenue":0,"currencyCode":"String","guests":[{"arrivalDate":"0001-01-01T00:00:00.0000000","departureDate":"0001-01-01T00:00:00.0000000","profileSequence":0,"isPrimary":false,"folioID":"String","percentageBilled":0,"purposeOfStay":"String","originalReservationNum":"String","originalConfirmationNum":"String","guestGroupSequence":0,"taxType":"String","guestProfile":{"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"}]},"externalReferences":[{"pK_ExternalReferences":"00000000000000000000000000000000","fK_Internal":"00000000000000000000000000000000","fK_InternalId":0,"keyTable":"String","referenceType":"String","referenceSource":"String","referenceNumber":"String","legNumber":0}],"activities":[{"cendynPropertyID":"String","reservationID":"String","profileID":"String","activityStatus":"String","activityCategory":"String","activityID1":"String","activitySource1":"String","activityID2":"String","activitySource2":"String","activityName":"String","activityDescription":"String","activityNotes":"String","groupCode":"String","currencyCode":"String","amount":0,"depositRequired":0,"depositCollectorType":"String","inactiveDate":"0001-01-01T00:00:00.0000000","urlLink":"String","confirmationNum":"String","activityClass":"String","activityCode":"String","activitySubCode":"String","languageCode":"String","numAdults":0,"numYouths":0,"numChildren":0,"startDate":"0001-01-01T00:00:00.0000000","startTaskType":"String","startLocationCode":"String","startLocationName":"String","endDate":"0001-01-01T00:00:00.0000000","endTaskType":"String","endLocationCode":"String","durationUnit":"String","relatedDate":"0001-01-01T00:00:00.0000000","relatedType":"String","relatedLocationCode":"String","relatedDescription":"String","vipCode":"String","assignedUser":"String","bookedDate":"0001-01-01T00:00:00.0000000","bookedBy":"String","lastUpdatedDate":"0001-01-01T00:00:00.0000000","lastUpdatedBy":"String","cancellationCode":"String","customField1":"String","customField2":"String","customField3":"String","customField4":"String","customField5":"String"}],"udfDataCollection":[{"cendynPropertyID":"String","moduleName":"String","tableName":"String","columnName":"String","udfValue":"String"}]}],"stayHeaders":[{"externalID":"String","stayBeginDate":"0001-01-01T00:00:00.0000000","stayEndDate":"0001-01-01T00:00:00.0000000","buildingCode":"String","roomNumber":"String","roomType":"String","marketSegmentCode":"String","resSourceCode":"String","shareCode":"String","invBlockCode":"String","resStatusType":"String","rtc":"String","channelCode":"String","sourceSequence":0,"rateType":"String","rateCategory":"String","dailyRate":0,"currencyCode":"String","promotionCode":"String","stayDetails":[{"externalID":"String","stayDate":"0001-01-01T00:00:00.0000000","roomNumber":"String","roomType":"String","rateType":"String","marketCode":"String","resSourceCode":"String","numberOfRooms":0,"dailyRate":0,"currencyCode":"String","dateStayDetailUpdated":"0001-01-01T00:00:00.0000000","dailyRateBeforeTax":0,"dailyRateAfterTax":0,"taxTypes":[{"amount":0,"code":"String","description":"String"}]}],"cancelPenalties":[{"ruleType":"String","ruleCode":"String","ruleDescription":"String","resortRuleID":"String","ruleID":"String","amount":0,"percentage":0,"cancelByDate":"0001-01-01T00:00:00.0000000","cancelPercentDue":0,"cancelRoomNights":0,"activityDeposit":0,"roomDeposit":0,"ruleScope":"String","currencyCode":"String"}],"resServices":[{"externalID":"String","serviceType":"String","serviceGroup":"String","resAction":"String","servicePricingType":"String","serviceSequence":0,"serviceInventoryCode":"String","startDate":"0001-01-01T00:00:00.0000000","endDate":"0001-01-01T00:00:00.0000000","frequency":"String","priceAmount":0,"currencyCode":"String","quantity":0,"ratePlanCode":"String","inventoryBlockCode":"String","priceGuaranteed":false,"inclusive":false,"serviceComments":"String","inactiveDate":"0001-01-01T00:00:00.0000000","servicePrices":[{"externalID":"String","actualBeginDate":"0001-01-01T00:00:00.0000000","actualEndDate":"0001-01-01T00:00:00.0000000","unitPrice":0}]}],"payInfoCollection":[{"recordType":"String","methodTypeCode":"String","methodType":"String","dueDate":"0001-01-01T00:00:00.0000000","amount":0,"currencyCode":"String","cancelIfNotReceived":false,"dropTime":"0001-01-01T00:00:00.0000000"}],"fixedCharges":[{"chargeCode":"String","chargeName":"String","description":"String","frequency":"String","chargeUnit":0,"chargeType":"String","curencyCode":"String","amount":0,"taxInclusive":false,"taxAmount":0,"percentage":0,"effectiveDate":"0001-01-01T00:00:00.0000000","expirationDate":"0001-01-01T00:00:00.0000000","taxable":false,"customCode1":"String","customCode2":"String","customCode3":"String","inactiveDate":"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"}],"taxTypes":[{"amount":0,"code":"String","description":"String"}],"stayHistoryRevenueCollection":[{"recordStatus":"String","revenueGroup":"String","revenueType":"String","amount":0,"currencyCode":"String","folioWindow":"String","transactionDate":"0001-01-01T00:00:00.0000000","inactiveDate":"0001-01-01T00:00:00.0000000"}],"resServices":[{"externalID":"String","serviceType":"String","serviceGroup":"String","resAction":"String","servicePricingType":"String","serviceSequence":0,"serviceInventoryCode":"String","startDate":"0001-01-01T00:00:00.0000000","endDate":"0001-01-01T00:00:00.0000000","frequency":"String","priceAmount":0,"currencyCode":"String","quantity":0,"ratePlanCode":"String","inventoryBlockCode":"String","priceGuaranteed":false,"inclusive":false,"serviceComments":"String","inactiveDate":"0001-01-01T00:00:00.0000000","servicePrices":[{"externalID":"String","actualBeginDate":"0001-01-01T00:00:00.0000000","actualEndDate":"0001-01-01T00:00:00.0000000","unitPrice":0}]}],"externalReferences":[{"pK_ExternalReferences":"00000000000000000000000000000000","fK_Internal":"00000000000000000000000000000000","fK_InternalId":0,"keyTable":"String","referenceType":"String","referenceSource":"String","referenceNumber":"String","legNumber":0}],"paymentMethods":[{"methodOfPayment":"String","folioID":"String","paymentCards":[{"cardType":"String","cardHolderName":"String","cardValue":"String","cardValueType":"String","expirationMonth":0,"expirationYear":0,"securityCode":"String","isPrimary":false}]}],"resActions":[{"externalID":"String","resActionTypeID":"String","resActionType":"RT","sourceResAction":"String","resActionText":"String","resActionBy":"String","resActionDate":"0001-01-01T00:00:00.0000000","inactiveDate":"0001-01-01T00:00:00.0000000"}]},"status":"Success","statusMessage":"String","recordsReturned":0,"recordsAvailable":0,"pageNumber":0,"pageSize":0}