Agentivity API

<back to all web services

BookingDetailsByRef

The following routes are available for this service:
GET/BookingDetails
import 'package:servicestack/servicestack.dart';

// @DataContract(Name="Metadata", Namespace="schemas.agentivity.com/types")
class PagingMetadata implements IConvertible
{
    /**
    * Starting Record
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Starting Record", Name="Offset", ParameterType="query")
    String? Offset;

    /**
    * Number of records to return (PageSize)
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Number of records to return (PageSize)", Name="Limit", ParameterType="query")
    String? Limit;

    /**
    * Total Number of Records in a Full Reponse (if no paging)
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Total Number of Records in a Full Reponse (if no paging)", Name="TotalRecords", ParameterType="query")
    int? TotalRecords;

    /**
    * Total Number of Records in this Reponse (on this page)
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Total Number of Records in this Reponse (on this page)", Name="ResponseRecords", ParameterType="query")
    int? ResponseRecords;

    PagingMetadata({this.Offset,this.Limit,this.TotalRecords,this.ResponseRecords});
    PagingMetadata.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Offset = json['Offset'];
        Limit = json['Limit'];
        TotalRecords = json['TotalRecords'];
        ResponseRecords = json['ResponseRecords'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Offset': Offset,
        'Limit': Limit,
        'TotalRecords': TotalRecords,
        'ResponseRecords': ResponseRecords
    };

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

// @DataContract(Namespace="schemas.agentivity.com/types")
abstract class CompanyLevelRequestBase extends PagingMetadata implements IMemberUsername, IMemberOwningCompanyCode
{
    /**
    * Comma Delimited List of Owning Company Codes
    */
    // @DataMember
    List<String>? OwningCompanyCode;

    /**
    * UserName in form of an email address
    */
    // @DataMember
    String? UserName;

    CompanyLevelRequestBase({this.OwningCompanyCode,this.UserName});
    CompanyLevelRequestBase.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

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

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

// @DataContract(Name="FrequentFlyer", Namespace="schemas.agentivity.com/types")
class FrequentFlyerDetails implements IConvertible
{
    // @DataMember(Order=10)
    String? Vendor;

    // @DataMember(Order=20)
    String? Number;

    // @DataMember(Order=30)
    String? FullNumber;

    FrequentFlyerDetails({this.Vendor,this.Number,this.FullNumber});
    FrequentFlyerDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Vendor = json['Vendor'];
        Number = json['Number'];
        FullNumber = json['FullNumber'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Vendor': Vendor,
        'Number': Number,
        'FullNumber': FullNumber
    };

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

// @DataContract(Name="Passenger", Namespace="schemas.agentivity.com/types")
class PassengerDetails implements IConvertible
{
    // @DataMember(Order=10)
    int? Id;

    // @DataMember(Order=20)
    String? FirstName;

    // @DataMember(Order=30)
    String? LastName;

    // @DataMember(Order=40)
    List<FrequentFlyerDetails>? FrequentFlyers;

    // @DataMember(Order=50)
    int? SequenceNbr;

    // @DataMember(Order=60)
    int? LastNameElement;

    // @DataMember(Order=70)
    bool? IsVip;

    // @DataMember(Order=80)
    String? TravellerGUID;

    PassengerDetails({this.Id,this.FirstName,this.LastName,this.FrequentFlyers,this.SequenceNbr,this.LastNameElement,this.IsVip,this.TravellerGUID});
    PassengerDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        FirstName = json['FirstName'];
        LastName = json['LastName'];
        FrequentFlyers = JsonConverters.fromJson(json['FrequentFlyers'],'List<FrequentFlyerDetails>',context!);
        SequenceNbr = json['SequenceNbr'];
        LastNameElement = json['LastNameElement'];
        IsVip = json['IsVip'];
        TravellerGUID = json['TravellerGUID'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'FirstName': FirstName,
        'LastName': LastName,
        'FrequentFlyers': JsonConverters.toJson(FrequentFlyers,'List<FrequentFlyerDetails>',context!),
        'SequenceNbr': SequenceNbr,
        'LastNameElement': LastNameElement,
        'IsVip': IsVip,
        'TravellerGUID': TravellerGUID
    };

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

// @DataContract(Name="Phone", Namespace="schemas.agentivity.com/types")
class BookingPhone implements IConvertible
{
    // @DataMember(Order=10)
    String? PhoneType;

    // @DataMember(Order=20)
    String? City;

    // @DataMember(Order=30)
    String? Number;

    // @DataMember(Order=40)
    int? SequenceNbr;

    BookingPhone({this.PhoneType,this.City,this.Number,this.SequenceNbr});
    BookingPhone.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        PhoneType = json['PhoneType'];
        City = json['City'];
        Number = json['Number'];
        SequenceNbr = json['SequenceNbr'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'PhoneType': PhoneType,
        'City': City,
        'Number': Number,
        'SequenceNbr': SequenceNbr
    };

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

// @DataContract(Name="Notepad", Namespace="schemas.agentivity.com/types")
class BookingNotepad implements IConvertible
{
    // @DataMember(Order=10)
    String? Remark;

    // @DataMember(Order=20)
    DateTime? CreatedDate;

    // @DataMember(Order=30)
    String? CreatedTime;

    // @DataMember(Order=30)
    String? Qualifier;

    // @DataMember(Order=40)
    int? SequenceNbr;

    BookingNotepad({this.Remark,this.CreatedDate,this.CreatedTime,this.Qualifier,this.SequenceNbr});
    BookingNotepad.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Remark = json['Remark'];
        CreatedDate = JsonConverters.fromJson(json['CreatedDate'],'DateTime',context!);
        CreatedTime = json['CreatedTime'];
        Qualifier = json['Qualifier'];
        SequenceNbr = json['SequenceNbr'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Remark': Remark,
        'CreatedDate': JsonConverters.toJson(CreatedDate,'DateTime',context!),
        'CreatedTime': CreatedTime,
        'Qualifier': Qualifier,
        'SequenceNbr': SequenceNbr
    };

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

// @DataContract(Namespace="schemas.agentivity.com/types")
abstract class VendorRemarkBase
{
    // @DataMember
    int? TravelOrderIdentifier;

    // @DataMember
    int? RmkNum;

    // @DataMember
    DateTime? DateStamp;

    // @DataMember
    String? TimeStamp;

    // @DataMember
    String? RemarkType;

    // @DataMember
    String? VendorType;

    // @DataMember
    String? Vendor;

    // @DataMember
    String? Remark;

    VendorRemarkBase({this.TravelOrderIdentifier,this.RmkNum,this.DateStamp,this.TimeStamp,this.RemarkType,this.VendorType,this.Vendor,this.Remark});
    VendorRemarkBase.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        TravelOrderIdentifier = json['TravelOrderIdentifier'];
        RmkNum = json['RmkNum'];
        DateStamp = JsonConverters.fromJson(json['DateStamp'],'DateTime',context!);
        TimeStamp = json['TimeStamp'];
        RemarkType = json['RemarkType'];
        VendorType = json['VendorType'];
        Vendor = json['Vendor'];
        Remark = json['Remark'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'TravelOrderIdentifier': TravelOrderIdentifier,
        'RmkNum': RmkNum,
        'DateStamp': JsonConverters.toJson(DateStamp,'DateTime',context!),
        'TimeStamp': TimeStamp,
        'RemarkType': RemarkType,
        'VendorType': VendorType,
        'Vendor': Vendor,
        'Remark': Remark
    };

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

// @DataContract(Namespace="schemas.agentivity.com/types")
class VendorRemark extends VendorRemarkBase implements IConvertible
{
    // @DataMember
    int? VendorRemarkID;

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

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        VendorRemarkID = json['VendorRemarkID'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'VendorRemarkID': VendorRemarkID
    });

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

// @DataContract(Name="DIEntry", Namespace="schemas.agentivity.com/types")
class DiEntry implements IConvertible
{
    // @DataMember(Order=10)
    int? SequenceNbr;

    // @DataMember(Order=20)
    String? Keyword;

    // @DataMember(Order=30)
    String? Remark;

    DiEntry({this.SequenceNbr,this.Keyword,this.Remark});
    DiEntry.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        SequenceNbr = json['SequenceNbr'];
        Keyword = json['Keyword'];
        Remark = json['Remark'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'SequenceNbr': SequenceNbr,
        'Keyword': Keyword,
        'Remark': Remark
    };

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

// @DataContract(Name="Ticket", Namespace="schemas.agentivity.com/types")
class BookingTicket implements IConvertible
{
    // @DataMember(Order=10)
    int? SegmentNbr;

    // @DataMember(Order=20)
    String? TicketNumber;

    // @DataMember(Order=30)
    String? TicketType;

    // @DataMember(Order=40)
    bool? TicketDetailsAvailable;

    BookingTicket({this.SegmentNbr,this.TicketNumber,this.TicketType,this.TicketDetailsAvailable});
    BookingTicket.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        SegmentNbr = json['SegmentNbr'];
        TicketNumber = json['TicketNumber'];
        TicketType = json['TicketType'];
        TicketDetailsAvailable = json['TicketDetailsAvailable'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'SegmentNbr': SegmentNbr,
        'TicketNumber': TicketNumber,
        'TicketType': TicketType,
        'TicketDetailsAvailable': TicketDetailsAvailable
    };

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

// @DataContract(Name="Version", Namespace="schemas.agentivity.com/types")
class BookingVersion implements IConvertible
{
    // @DataMember(Order=10)
    int? AgentivityRef;

    // @DataMember(Order=20)
    DateTime? DataBaseTimeStamp;

    // @DataMember(Order=30)
    String? EventType;

    // @DataMember(Order=40)
    String? PnrTicketed;

    // @DataMember(Order=50)
    String? LastActionAgentId;

    // @DataMember(Order=60)
    int? AirSegs;

    // @DataMember(Order=70)
    int? AirPSegs;

    // @DataMember(Order=80)
    int? HtlSegs;

    // @DataMember(Order=90)
    int? HtlPSegs;

    // @DataMember(Order=100)
    int? CarSegs;

    // @DataMember(Order=110)
    int? CarPSegs;

    // @DataMember(Order=120)
    int? TrnPSegs;

    // @DataMember(Order=130)
    String? OwningAgencyLocationID;

    BookingVersion({this.AgentivityRef,this.DataBaseTimeStamp,this.EventType,this.PnrTicketed,this.LastActionAgentId,this.AirSegs,this.AirPSegs,this.HtlSegs,this.HtlPSegs,this.CarSegs,this.CarPSegs,this.TrnPSegs,this.OwningAgencyLocationID});
    BookingVersion.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        AgentivityRef = json['AgentivityRef'];
        DataBaseTimeStamp = JsonConverters.fromJson(json['DataBaseTimeStamp'],'DateTime',context!);
        EventType = json['EventType'];
        PnrTicketed = json['PnrTicketed'];
        LastActionAgentId = json['LastActionAgentId'];
        AirSegs = json['AirSegs'];
        AirPSegs = json['AirPSegs'];
        HtlSegs = json['HtlSegs'];
        HtlPSegs = json['HtlPSegs'];
        CarSegs = json['CarSegs'];
        CarPSegs = json['CarPSegs'];
        TrnPSegs = json['TrnPSegs'];
        OwningAgencyLocationID = json['OwningAgencyLocationID'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'AgentivityRef': AgentivityRef,
        'DataBaseTimeStamp': JsonConverters.toJson(DataBaseTimeStamp,'DateTime',context!),
        'EventType': EventType,
        'PnrTicketed': PnrTicketed,
        'LastActionAgentId': LastActionAgentId,
        'AirSegs': AirSegs,
        'AirPSegs': AirPSegs,
        'HtlSegs': HtlSegs,
        'HtlPSegs': HtlPSegs,
        'CarSegs': CarSegs,
        'CarPSegs': CarPSegs,
        'TrnPSegs': TrnPSegs,
        'OwningAgencyLocationID': OwningAgencyLocationID
    };

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

// @DataContract(Name="VendorLocator", Namespace="schemas.agentivity.com/types")
class BookingVendorLocator implements IConvertible
{
    // @DataMember(Order=10)
    int? AirSegmentNbr;

    // @DataMember(Order=20)
    String? CarrierCode;

    // @DataMember(Order=30)
    String? VendorLocator;

    BookingVendorLocator({this.AirSegmentNbr,this.CarrierCode,this.VendorLocator});
    BookingVendorLocator.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        AirSegmentNbr = json['AirSegmentNbr'];
        CarrierCode = json['CarrierCode'];
        VendorLocator = json['VendorLocator'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'AirSegmentNbr': AirSegmentNbr,
        'CarrierCode': CarrierCode,
        'VendorLocator': VendorLocator
    };

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

// @DataContract(Name="CustomFieldValue", Namespace="schemas.agentivity.com/types")
class CustomFieldValue implements IConvertible
{
    // @DataMember(Order=10)
    String? PNRPropertiesCustomFieldID;

    // @DataMember(Order=20)
    String? RecordLocator;

    // @DataMember(Order=30)
    DateTime? PNRCreationDate;

    // @DataMember(Order=40)
    String? FieldName;

    // @DataMember(Order=50)
    String? FieldValue;

    // @DataMember(Order=60)
    int? CustomFieldID;

    // @DataMember(Order=70)
    DateTime? CreationDateTime;

    // @DataMember(Order=80)
    int? ElementNumber;

    // @DataMember(Order=90)
    String? GDS;

    CustomFieldValue({this.PNRPropertiesCustomFieldID,this.RecordLocator,this.PNRCreationDate,this.FieldName,this.FieldValue,this.CustomFieldID,this.CreationDateTime,this.ElementNumber,this.GDS});
    CustomFieldValue.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        PNRPropertiesCustomFieldID = json['PNRPropertiesCustomFieldID'];
        RecordLocator = json['RecordLocator'];
        PNRCreationDate = JsonConverters.fromJson(json['PNRCreationDate'],'DateTime',context!);
        FieldName = json['FieldName'];
        FieldValue = json['FieldValue'];
        CustomFieldID = json['CustomFieldID'];
        CreationDateTime = JsonConverters.fromJson(json['CreationDateTime'],'DateTime',context!);
        ElementNumber = json['ElementNumber'];
        GDS = json['GDS'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'PNRPropertiesCustomFieldID': PNRPropertiesCustomFieldID,
        'RecordLocator': RecordLocator,
        'PNRCreationDate': JsonConverters.toJson(PNRCreationDate,'DateTime',context!),
        'FieldName': FieldName,
        'FieldValue': FieldValue,
        'CustomFieldID': CustomFieldID,
        'CreationDateTime': JsonConverters.toJson(CreationDateTime,'DateTime',context!),
        'ElementNumber': ElementNumber,
        'GDS': GDS
    };

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

// @DataContract(Name="Email", Namespace="schemas.agentivity.com/types")
class BookingEmail implements IConvertible
{
    // @DataMember(Order=10)
    int? SequenceNbr;

    // @DataMember(Order=20)
    String? EmailType;

    // @DataMember(Order=30)
    String? Email;

    BookingEmail({this.SequenceNbr,this.EmailType,this.Email});
    BookingEmail.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        SequenceNbr = json['SequenceNbr'];
        EmailType = json['EmailType'];
        Email = json['Email'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'SequenceNbr': SequenceNbr,
        'EmailType': EmailType,
        'Email': Email
    };

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

// @DataContract(Name="EventDetail", Namespace="schemas.agentivity.com/types")
class BookingEventDetail implements IConvertible
{
    // @DataMember(Order=10)
    int? ItineraryEventTypeDetailID;

    // @DataMember(Order=20)
    int? AgentivityRef;

    // @DataMember(Order=30)
    String? EventTypeDetail;

    // @DataMember(Order=40)
    String? OldData;

    // @DataMember(Order=50)
    String? NewData;

    // @DataMember(Order=60)
    DateTime? DateTimeStamp;

    // @DataMember(Order=70)
    int? EventTypeDetailID;

    BookingEventDetail({this.ItineraryEventTypeDetailID,this.AgentivityRef,this.EventTypeDetail,this.OldData,this.NewData,this.DateTimeStamp,this.EventTypeDetailID});
    BookingEventDetail.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ItineraryEventTypeDetailID = json['ItineraryEventTypeDetailID'];
        AgentivityRef = json['AgentivityRef'];
        EventTypeDetail = json['EventTypeDetail'];
        OldData = json['OldData'];
        NewData = json['NewData'];
        DateTimeStamp = JsonConverters.fromJson(json['DateTimeStamp'],'DateTime',context!);
        EventTypeDetailID = json['EventTypeDetailID'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ItineraryEventTypeDetailID': ItineraryEventTypeDetailID,
        'AgentivityRef': AgentivityRef,
        'EventTypeDetail': EventTypeDetail,
        'OldData': OldData,
        'NewData': NewData,
        'DateTimeStamp': JsonConverters.toJson(DateTimeStamp,'DateTime',context!),
        'EventTypeDetailID': EventTypeDetailID
    };

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

// @DataContract(Name="AccountLocation", Namespace="schemas.agentivity.com/types")
class BookingAccountLocation implements IConvertible
{
    // @DataMember(Order=10)
    String? PrimaryAccountLocation;

    // @DataMember(Order=20)
    String? SecondaryAccountLocation;

    // @DataMember(Order=30)
    bool? Valid;

    // @DataMember(Order=40)
    bool? ExactMatch;

    // @DataMember(Order=50)
    String? GDS;

    BookingAccountLocation({this.PrimaryAccountLocation,this.SecondaryAccountLocation,this.Valid,this.ExactMatch,this.GDS});
    BookingAccountLocation.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        PrimaryAccountLocation = json['PrimaryAccountLocation'];
        SecondaryAccountLocation = json['SecondaryAccountLocation'];
        Valid = json['Valid'];
        ExactMatch = json['ExactMatch'];
        GDS = json['GDS'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'PrimaryAccountLocation': PrimaryAccountLocation,
        'SecondaryAccountLocation': SecondaryAccountLocation,
        'Valid': Valid,
        'ExactMatch': ExactMatch,
        'GDS': GDS
    };

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

// @DataContract(Name="BookingEmailTrail", Namespace="schemas.agentivity.com/types")
class BookingEmailTrail implements IConvertible
{
    // @DataMember(Order=10)
    String? RecipientEmail;

    // @DataMember(Order=20)
    String? DeliveryDetails;

    // @DataMember(Order=30)
    DateTime? MailSentDateTime;

    // @DataMember(Order=40)
    String? RecipientLastActivityEvent;

    // @DataMember(Order=50)
    int? EmailId;

    // @DataMember(Order=60)
    int? UserId;

    // @DataMember(Order=70)
    String? SentResponseMessage;

    // @DataMember(Order=80)
    int? SentResponseErrorCode;

    // @DataMember(Order=90)
    int? DeliveredBookingID;

    BookingEmailTrail({this.RecipientEmail,this.DeliveryDetails,this.MailSentDateTime,this.RecipientLastActivityEvent,this.EmailId,this.UserId,this.SentResponseMessage,this.SentResponseErrorCode,this.DeliveredBookingID});
    BookingEmailTrail.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        RecipientEmail = json['RecipientEmail'];
        DeliveryDetails = json['DeliveryDetails'];
        MailSentDateTime = JsonConverters.fromJson(json['MailSentDateTime'],'DateTime',context!);
        RecipientLastActivityEvent = json['RecipientLastActivityEvent'];
        EmailId = json['EmailId'];
        UserId = json['UserId'];
        SentResponseMessage = json['SentResponseMessage'];
        SentResponseErrorCode = json['SentResponseErrorCode'];
        DeliveredBookingID = json['DeliveredBookingID'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'RecipientEmail': RecipientEmail,
        'DeliveryDetails': DeliveryDetails,
        'MailSentDateTime': JsonConverters.toJson(MailSentDateTime,'DateTime',context!),
        'RecipientLastActivityEvent': RecipientLastActivityEvent,
        'EmailId': EmailId,
        'UserId': UserId,
        'SentResponseMessage': SentResponseMessage,
        'SentResponseErrorCode': SentResponseErrorCode,
        'DeliveredBookingID': DeliveredBookingID
    };

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

// @DataContract(Name="Property", Namespace="schemas.agentivity.com/types")
class BookingWarningProperty implements IConvertible
{
    // @DataMember(Order=10)
    String? Name;

    // @DataMember(Order=20)
    String? Value;

    BookingWarningProperty({this.Name,this.Value});
    BookingWarningProperty.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

    Map<String, dynamic> toJson() => {
        'Name': Name,
        'Value': Value
    };

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

// @DataContract(Name="Warning", Namespace="schemas.agentivity.com/types")
class BookingDetailsWarning implements IConvertible
{
    // @DataMember(Order=10)
    String? Message;

    // @DataMember(Order=20)
    String? Vendor;

    // @DataMember(Order=30)
    DateTime? WarningDateTime;

    // @DataMember(Order=40)
    String? OriginalRemark;

    // @DataMember(Order=50)
    DateTime? ClearedDateTime;

    // @DataMember(Order=60)
    String? ClearedByConsultantID;

    // @DataMember(Order=70)
    List<BookingWarningProperty>? PropertiesList;

    BookingDetailsWarning({this.Message,this.Vendor,this.WarningDateTime,this.OriginalRemark,this.ClearedDateTime,this.ClearedByConsultantID,this.PropertiesList});
    BookingDetailsWarning.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Message = json['Message'];
        Vendor = json['Vendor'];
        WarningDateTime = JsonConverters.fromJson(json['WarningDateTime'],'DateTime',context!);
        OriginalRemark = json['OriginalRemark'];
        ClearedDateTime = JsonConverters.fromJson(json['ClearedDateTime'],'DateTime',context!);
        ClearedByConsultantID = json['ClearedByConsultantID'];
        PropertiesList = JsonConverters.fromJson(json['PropertiesList'],'List<BookingWarningProperty>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Message': Message,
        'Vendor': Vendor,
        'WarningDateTime': JsonConverters.toJson(WarningDateTime,'DateTime',context!),
        'OriginalRemark': OriginalRemark,
        'ClearedDateTime': JsonConverters.toJson(ClearedDateTime,'DateTime',context!),
        'ClearedByConsultantID': ClearedByConsultantID,
        'PropertiesList': JsonConverters.toJson(PropertiesList,'List<BookingWarningProperty>',context!)
    };

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

// @DataContract(Name="TicketingDue", Namespace="schemas.agentivity.com/types")
class BookingDetailsAirTicketingDue implements IConvertible
{
    // @DataMember(Order=10)
    String? Airline;

    // @DataMember(Order=20)
    DateTime? DueDate;

    // @DataMember(Order=30)
    String? DueTime;

    BookingDetailsAirTicketingDue({this.Airline,this.DueDate,this.DueTime});
    BookingDetailsAirTicketingDue.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Airline = json['Airline'];
        DueDate = JsonConverters.fromJson(json['DueDate'],'DateTime',context!);
        DueTime = json['DueTime'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Airline': Airline,
        'DueDate': JsonConverters.toJson(DueDate,'DateTime',context!),
        'DueTime': DueTime
    };

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

// @DataContract(Name="MeasurementUnit", Namespace="schemas.agentivity.com/types")
class MeasurementUnit implements IConvertible
{
    // @DataMember(Order=10)
    int? Id;

    // @DataMember(Order=20)
    String? Symbol;

    // @DataMember(Order=30)
    String? Name;

    MeasurementUnit({this.Id,this.Symbol,this.Name});
    MeasurementUnit.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Symbol = json['Symbol'];
        Name = json['Name'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Symbol': Symbol,
        'Name': Name
    };

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

// @DataContract(Name="AssessmentProvider", Namespace="schemas.agentivity.com/types")
class AssessmentProvider implements IConvertible
{
    // @DataMember(Order=10)
    int? Id;

    // @DataMember(Order=20)
    String? Name;

    // @DataMember(Order=30)
    String? Description;

    // @DataMember(Order=40)
    String? LogoPath;

    AssessmentProvider({this.Id,this.Name,this.Description,this.LogoPath});
    AssessmentProvider.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Name = json['Name'];
        Description = json['Description'];
        LogoPath = json['LogoPath'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Name': Name,
        'Description': Description,
        'LogoPath': LogoPath
    };

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

// @DataContract(Name="CarbonCalculationDetails", Namespace="schemas.agentivity.com/types")
class CarbonCalculationDetails implements IConvertible
{
    // @DataMember(Order=10)
    int? Id;

    // @DataMember(Order=20)
    String? Name;

    CarbonCalculationDetails({this.Id,this.Name});
    CarbonCalculationDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Name': Name
    };

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

// @DataContract(Name="CarbonEmission", Namespace="schemas.agentivity.com/types")
class CarbonEmission implements IConvertible
{
    // @DataMember(Order=10)
    double? Value;

    // @DataMember(Order=20)
    MeasurementUnit? Unit;

    // @DataMember(Order=30)
    AssessmentProvider? Provider;

    // @DataMember(Order=40)
    DateTime? CalculationDateTime;

    // @DataMember(Order=50)
    CarbonCalculationDetails? CalculationDetails;

    CarbonEmission({this.Value,this.Unit,this.Provider,this.CalculationDateTime,this.CalculationDetails});
    CarbonEmission.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Value = JsonConverters.toDouble(json['Value']);
        Unit = JsonConverters.fromJson(json['Unit'],'MeasurementUnit',context!);
        Provider = JsonConverters.fromJson(json['Provider'],'AssessmentProvider',context!);
        CalculationDateTime = JsonConverters.fromJson(json['CalculationDateTime'],'DateTime',context!);
        CalculationDetails = JsonConverters.fromJson(json['CalculationDetails'],'CarbonCalculationDetails',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Value': Value,
        'Unit': JsonConverters.toJson(Unit,'MeasurementUnit',context!),
        'Provider': JsonConverters.toJson(Provider,'AssessmentProvider',context!),
        'CalculationDateTime': JsonConverters.toJson(CalculationDateTime,'DateTime',context!),
        'CalculationDetails': JsonConverters.toJson(CalculationDetails,'CarbonCalculationDetails',context!)
    };

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

// @DataContract(Name="ItinerarySegment", Namespace="schemas.agentivity.com/types")
class ItinerarySegment implements IConvertible
{
    // @DataMember
    String? SegmentType;

    // @DataMember
    int? SegmentNbr;

    // @DataMember
    String? BoardPoint;

    // @DataMember
    String? OffPoint;

    // @DataMember
    String? OperatorCode;

    // @DataMember
    String? OperatorService;

    // @DataMember
    String? SegmentStatus;

    // @DataMember
    String? DepartureTimeFormatted;

    // @DataMember
    String? ArrivalTimeFormatted;

    // @DataMember
    String? ChangeOfDayFormatted;

    // @DataMember
    String? ServiceCode;

    // @DataMember
    String? StartDate;

    // @DataMember
    String? EndDate;

    // @DataMember
    String? TicketNumber;

    /**
    * Comma separated list of vendor locators
    */
    // @DataMember
    String? VendorLocators;

    // @DataMember
    String? EquipmentCode;

    // @DataMember
    String? Equipment;

    ItinerarySegment({this.SegmentType,this.SegmentNbr,this.BoardPoint,this.OffPoint,this.OperatorCode,this.OperatorService,this.SegmentStatus,this.DepartureTimeFormatted,this.ArrivalTimeFormatted,this.ChangeOfDayFormatted,this.ServiceCode,this.StartDate,this.EndDate,this.TicketNumber,this.VendorLocators,this.EquipmentCode,this.Equipment});
    ItinerarySegment.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        SegmentType = json['SegmentType'];
        SegmentNbr = json['SegmentNbr'];
        BoardPoint = json['BoardPoint'];
        OffPoint = json['OffPoint'];
        OperatorCode = json['OperatorCode'];
        OperatorService = json['OperatorService'];
        SegmentStatus = json['SegmentStatus'];
        DepartureTimeFormatted = json['DepartureTimeFormatted'];
        ArrivalTimeFormatted = json['ArrivalTimeFormatted'];
        ChangeOfDayFormatted = json['ChangeOfDayFormatted'];
        ServiceCode = json['ServiceCode'];
        StartDate = json['StartDate'];
        EndDate = json['EndDate'];
        TicketNumber = json['TicketNumber'];
        VendorLocators = json['VendorLocators'];
        EquipmentCode = json['EquipmentCode'];
        Equipment = json['Equipment'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'SegmentType': SegmentType,
        'SegmentNbr': SegmentNbr,
        'BoardPoint': BoardPoint,
        'OffPoint': OffPoint,
        'OperatorCode': OperatorCode,
        'OperatorService': OperatorService,
        'SegmentStatus': SegmentStatus,
        'DepartureTimeFormatted': DepartureTimeFormatted,
        'ArrivalTimeFormatted': ArrivalTimeFormatted,
        'ChangeOfDayFormatted': ChangeOfDayFormatted,
        'ServiceCode': ServiceCode,
        'StartDate': StartDate,
        'EndDate': EndDate,
        'TicketNumber': TicketNumber,
        'VendorLocators': VendorLocators,
        'EquipmentCode': EquipmentCode,
        'Equipment': Equipment
    };

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

class ItinerarySegmentsCollection extends ListBase<ItinerarySegment> implements IConvertible
{
    final List<ItinerarySegment> l = [];
    set length(int newLength) { l.length = newLength; }
    int get length => l.length;
    ItinerarySegment operator [](int index) => l[index];
    void operator []=(int index, ItinerarySegment value) { l[index] = value; }
    ItinerarySegmentsCollection();
    ItinerarySegmentsCollection.fromJson(Map<String, dynamic> json) : super();
    fromMap(Map<String, dynamic> json) {
        return this;
    }

    Map<String, dynamic> toJson() => {};
    getTypeName() => "ItinerarySegmentsCollection";
    TypeContext? context = _ctx;
}

// @DataContract(Name="BookingDetails", Namespace="schemas.agentivity.com/types")
class BookingDetails implements IBookingItinerary, IConvertible
{
    // @DataMember(Order=20)
    String? RecordLocator;

    // @DataMember(Order=30)
    String? PNRCreationDate;

    // @DataMember(Order=35)
    DateTime? CreationDate;

    // @DataMember(Order=40)
    String? PNRTicketed;

    // @DataMember(Order=50)
    String? Account;

    // @DataMember(Order=60)
    String? OwningConsultantID;

    // @DataMember(Order=70)
    String? OwningConsultant;

    // @DataMember(Order=80)
    String? CrsDescription;

    // @DataMember(Order=90)
    String? LastActionConsultantID;

    // @DataMember(Order=100)
    String? LastActionAgencyLocationID;

    // @DataMember(Order=110)
    String? OwningAgencyLocationID;

    // @DataMember(Order=120)
    String? CreatingAgencyIata;

    // @DataMember(Order=130)
    int? CompanyID;

    // @DataMember(Order=200)
    List<PassengerDetails>? Passengers;

    // @DataMember(Order=210)
    List<BookingPhone>? Phones;

    // @DataMember(Order=220)
    List<BookingNotepad>? Notepads;

    // @DataMember(Order=230)
    List<VendorRemark>? VendorRemarks;

    // @DataMember(Order=240)
    List<DiEntry>? DiEntries;

    // @DataMember(Order=250)
    List<BookingTicket>? Tickets;

    // @DataMember(Order=260)
    List<BookingVersion>? Versions;

    // @DataMember(Order=270)
    List<BookingVendorLocator>? VendorLocators;

    // @DataMember(Order=280)
    List<CustomFieldValue>? CustomFields;

    // @DataMember(Order=290)
    List<BookingEmail>? Emails;

    // @DataMember(Order=300)
    List<BookingEventDetail>? EventDetails;

    // @DataMember(Order=310)
    List<BookingAccountLocation>? AccountLocations;

    // @DataMember(Order=320)
    List<BookingEmailTrail>? EmailTrails;

    // @DataMember(Order=330)
    List<BookingDetailsWarning>? AgentivityWarnings;

    // @DataMember(Order=340)
    List<BookingDetailsAirTicketingDue>? AirlineTicketingDues;

    // @DataMember(Order=350)
    String? CTCE;

    // @DataMember(Order=360)
    String? CTCM;

    // @DataMember(Order=370)
    double? CarbonTonnage;

    // @DataMember(Order=380)
    List<CarbonEmission>? CarbonEmissions;

    // @DataMember(Order=500)
    String? OwningCompanyCode;

    // @DataMember(Order=10)
    int? AgentivityRef;

    // @DataMember(Order=1000)
    ItinerarySegmentsCollection? Itinerary;

    // @DataMember(Order=1010)
    String? ItineraryFormatted;

    BookingDetails({this.RecordLocator,this.PNRCreationDate,this.CreationDate,this.PNRTicketed,this.Account,this.OwningConsultantID,this.OwningConsultant,this.CrsDescription,this.LastActionConsultantID,this.LastActionAgencyLocationID,this.OwningAgencyLocationID,this.CreatingAgencyIata,this.CompanyID,this.Passengers,this.Phones,this.Notepads,this.VendorRemarks,this.DiEntries,this.Tickets,this.Versions,this.VendorLocators,this.CustomFields,this.Emails,this.EventDetails,this.AccountLocations,this.EmailTrails,this.AgentivityWarnings,this.AirlineTicketingDues,this.CTCE,this.CTCM,this.CarbonTonnage,this.CarbonEmissions,this.OwningCompanyCode,this.AgentivityRef,this.Itinerary,this.ItineraryFormatted});
    BookingDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        RecordLocator = json['RecordLocator'];
        PNRCreationDate = json['PNRCreationDate'];
        CreationDate = JsonConverters.fromJson(json['CreationDate'],'DateTime',context!);
        PNRTicketed = json['PNRTicketed'];
        Account = json['Account'];
        OwningConsultantID = json['OwningConsultantID'];
        OwningConsultant = json['OwningConsultant'];
        CrsDescription = json['CrsDescription'];
        LastActionConsultantID = json['LastActionConsultantID'];
        LastActionAgencyLocationID = json['LastActionAgencyLocationID'];
        OwningAgencyLocationID = json['OwningAgencyLocationID'];
        CreatingAgencyIata = json['CreatingAgencyIata'];
        CompanyID = json['CompanyID'];
        Passengers = JsonConverters.fromJson(json['Passengers'],'List<PassengerDetails>',context!);
        Phones = JsonConverters.fromJson(json['Phones'],'List<BookingPhone>',context!);
        Notepads = JsonConverters.fromJson(json['Notepads'],'List<BookingNotepad>',context!);
        VendorRemarks = JsonConverters.fromJson(json['VendorRemarks'],'List<VendorRemark>',context!);
        DiEntries = JsonConverters.fromJson(json['DiEntries'],'List<DiEntry>',context!);
        Tickets = JsonConverters.fromJson(json['Tickets'],'List<BookingTicket>',context!);
        Versions = JsonConverters.fromJson(json['Versions'],'List<BookingVersion>',context!);
        VendorLocators = JsonConverters.fromJson(json['VendorLocators'],'List<BookingVendorLocator>',context!);
        CustomFields = JsonConverters.fromJson(json['CustomFields'],'List<CustomFieldValue>',context!);
        Emails = JsonConverters.fromJson(json['Emails'],'List<BookingEmail>',context!);
        EventDetails = JsonConverters.fromJson(json['EventDetails'],'List<BookingEventDetail>',context!);
        AccountLocations = JsonConverters.fromJson(json['AccountLocations'],'List<BookingAccountLocation>',context!);
        EmailTrails = JsonConverters.fromJson(json['EmailTrails'],'List<BookingEmailTrail>',context!);
        AgentivityWarnings = JsonConverters.fromJson(json['AgentivityWarnings'],'List<BookingDetailsWarning>',context!);
        AirlineTicketingDues = JsonConverters.fromJson(json['AirlineTicketingDues'],'List<BookingDetailsAirTicketingDue>',context!);
        CTCE = json['CTCE'];
        CTCM = json['CTCM'];
        CarbonTonnage = JsonConverters.toDouble(json['CarbonTonnage']);
        CarbonEmissions = JsonConverters.fromJson(json['CarbonEmissions'],'List<CarbonEmission>',context!);
        OwningCompanyCode = json['OwningCompanyCode'];
        AgentivityRef = json['AgentivityRef'];
        Itinerary = JsonConverters.fromJson(json['Itinerary'],'ItinerarySegmentsCollection',context!);
        ItineraryFormatted = json['ItineraryFormatted'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'RecordLocator': RecordLocator,
        'PNRCreationDate': PNRCreationDate,
        'CreationDate': JsonConverters.toJson(CreationDate,'DateTime',context!),
        'PNRTicketed': PNRTicketed,
        'Account': Account,
        'OwningConsultantID': OwningConsultantID,
        'OwningConsultant': OwningConsultant,
        'CrsDescription': CrsDescription,
        'LastActionConsultantID': LastActionConsultantID,
        'LastActionAgencyLocationID': LastActionAgencyLocationID,
        'OwningAgencyLocationID': OwningAgencyLocationID,
        'CreatingAgencyIata': CreatingAgencyIata,
        'CompanyID': CompanyID,
        'Passengers': JsonConverters.toJson(Passengers,'List<PassengerDetails>',context!),
        'Phones': JsonConverters.toJson(Phones,'List<BookingPhone>',context!),
        'Notepads': JsonConverters.toJson(Notepads,'List<BookingNotepad>',context!),
        'VendorRemarks': JsonConverters.toJson(VendorRemarks,'List<VendorRemark>',context!),
        'DiEntries': JsonConverters.toJson(DiEntries,'List<DiEntry>',context!),
        'Tickets': JsonConverters.toJson(Tickets,'List<BookingTicket>',context!),
        'Versions': JsonConverters.toJson(Versions,'List<BookingVersion>',context!),
        'VendorLocators': JsonConverters.toJson(VendorLocators,'List<BookingVendorLocator>',context!),
        'CustomFields': JsonConverters.toJson(CustomFields,'List<CustomFieldValue>',context!),
        'Emails': JsonConverters.toJson(Emails,'List<BookingEmail>',context!),
        'EventDetails': JsonConverters.toJson(EventDetails,'List<BookingEventDetail>',context!),
        'AccountLocations': JsonConverters.toJson(AccountLocations,'List<BookingAccountLocation>',context!),
        'EmailTrails': JsonConverters.toJson(EmailTrails,'List<BookingEmailTrail>',context!),
        'AgentivityWarnings': JsonConverters.toJson(AgentivityWarnings,'List<BookingDetailsWarning>',context!),
        'AirlineTicketingDues': JsonConverters.toJson(AirlineTicketingDues,'List<BookingDetailsAirTicketingDue>',context!),
        'CTCE': CTCE,
        'CTCM': CTCM,
        'CarbonTonnage': CarbonTonnage,
        'CarbonEmissions': JsonConverters.toJson(CarbonEmissions,'List<CarbonEmission>',context!),
        'OwningCompanyCode': OwningCompanyCode,
        'AgentivityRef': AgentivityRef,
        'Itinerary': JsonConverters.toJson(Itinerary,'ItinerarySegmentsCollection',context!),
        'ItineraryFormatted': ItineraryFormatted
    };

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

// @DataContract(Name="CacheMetadata", Namespace="schemas.agentivity.com/types")
class CacheMetadata implements IConvertible
{
    // @DataMember(Order=1)
    DateTime? CachedAt;

    // @DataMember(Order=2)
    DateTime? CacheExpiresAt;

    // @DataMember(Order=0)
    bool? IsFromCache;

    CacheMetadata({this.CachedAt,this.CacheExpiresAt,this.IsFromCache});
    CacheMetadata.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CachedAt = JsonConverters.fromJson(json['CachedAt'],'DateTime',context!);
        CacheExpiresAt = JsonConverters.fromJson(json['CacheExpiresAt'],'DateTime',context!);
        IsFromCache = json['IsFromCache'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CachedAt': JsonConverters.toJson(CachedAt,'DateTime',context!),
        'CacheExpiresAt': JsonConverters.toJson(CacheExpiresAt,'DateTime',context!),
        'IsFromCache': IsFromCache
    };

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

// @DataContract(Name="ResponseMetadata", Namespace="schemas.agentivity.com/types")
class ResponseMetadata implements IConvertible
{
    // @DataMember(Order=0)
    bool? Success;

    // @DataMember(Order=1)
    bool? HasCache;

    // @DataMember(Order=2)
    bool? HasPaging;

    // @DataMember(Order=3, EmitDefaultValue=false)
    CacheMetadata? CacheMetadata;

    // @DataMember(Order=4, EmitDefaultValue=false)
    PagingMetadata? PagingMetadata;

    ResponseMetadata({this.Success,this.HasCache,this.HasPaging,this.CacheMetadata,this.PagingMetadata});
    ResponseMetadata.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Success = json['Success'];
        HasCache = json['HasCache'];
        HasPaging = json['HasPaging'];
        CacheMetadata = JsonConverters.fromJson(json['CacheMetadata'],'CacheMetadata',context!);
        PagingMetadata = JsonConverters.fromJson(json['PagingMetadata'],'PagingMetadata',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Success': Success,
        'HasCache': HasCache,
        'HasPaging': HasPaging,
        'CacheMetadata': JsonConverters.toJson(CacheMetadata,'CacheMetadata',context!),
        'PagingMetadata': JsonConverters.toJson(PagingMetadata,'PagingMetadata',context!)
    };

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

// @DataContract(Name="ApiRequestPerHour", Namespace="schemas.agentivity.com/types")
class ApiRequestPerHour implements IConvertible
{
    // @DataMember(Order=10)
    DateTime? RequestDate;

    // @DataMember(Order=100)
    int? Hour0;

    // @DataMember(Order=110)
    int? Hour1;

    // @DataMember(Order=120)
    int? Hour2;

    // @DataMember(Order=130)
    int? Hour3;

    // @DataMember(Order=140)
    int? Hour4;

    // @DataMember(Order=150)
    int? Hour5;

    // @DataMember(Order=160)
    int? Hour6;

    // @DataMember(Order=170)
    int? Hour7;

    // @DataMember(Order=180)
    int? Hour8;

    // @DataMember(Order=190)
    int? Hour9;

    // @DataMember(Order=200)
    int? Hour10;

    // @DataMember(Order=210)
    int? Hour11;

    // @DataMember(Order=220)
    int? Hour12;

    // @DataMember(Order=230)
    int? Hour13;

    // @DataMember(Order=240)
    int? Hour14;

    // @DataMember(Order=250)
    int? Hour15;

    // @DataMember(Order=260)
    int? Hour16;

    // @DataMember(Order=270)
    int? Hour17;

    // @DataMember(Order=280)
    int? Hour18;

    // @DataMember(Order=290)
    int? Hour19;

    // @DataMember(Order=300)
    int? Hour20;

    // @DataMember(Order=310)
    int? Hour21;

    // @DataMember(Order=320)
    int? Hour22;

    // @DataMember(Order=330)
    int? Hour23;

    ApiRequestPerHour({this.RequestDate,this.Hour0,this.Hour1,this.Hour2,this.Hour3,this.Hour4,this.Hour5,this.Hour6,this.Hour7,this.Hour8,this.Hour9,this.Hour10,this.Hour11,this.Hour12,this.Hour13,this.Hour14,this.Hour15,this.Hour16,this.Hour17,this.Hour18,this.Hour19,this.Hour20,this.Hour21,this.Hour22,this.Hour23});
    ApiRequestPerHour.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        RequestDate = JsonConverters.fromJson(json['RequestDate'],'DateTime',context!);
        Hour0 = json['Hour0'];
        Hour1 = json['Hour1'];
        Hour2 = json['Hour2'];
        Hour3 = json['Hour3'];
        Hour4 = json['Hour4'];
        Hour5 = json['Hour5'];
        Hour6 = json['Hour6'];
        Hour7 = json['Hour7'];
        Hour8 = json['Hour8'];
        Hour9 = json['Hour9'];
        Hour10 = json['Hour10'];
        Hour11 = json['Hour11'];
        Hour12 = json['Hour12'];
        Hour13 = json['Hour13'];
        Hour14 = json['Hour14'];
        Hour15 = json['Hour15'];
        Hour16 = json['Hour16'];
        Hour17 = json['Hour17'];
        Hour18 = json['Hour18'];
        Hour19 = json['Hour19'];
        Hour20 = json['Hour20'];
        Hour21 = json['Hour21'];
        Hour22 = json['Hour22'];
        Hour23 = json['Hour23'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'RequestDate': JsonConverters.toJson(RequestDate,'DateTime',context!),
        'Hour0': Hour0,
        'Hour1': Hour1,
        'Hour2': Hour2,
        'Hour3': Hour3,
        'Hour4': Hour4,
        'Hour5': Hour5,
        'Hour6': Hour6,
        'Hour7': Hour7,
        'Hour8': Hour8,
        'Hour9': Hour9,
        'Hour10': Hour10,
        'Hour11': Hour11,
        'Hour12': Hour12,
        'Hour13': Hour13,
        'Hour14': Hour14,
        'Hour15': Hour15,
        'Hour16': Hour16,
        'Hour17': Hour17,
        'Hour18': Hour18,
        'Hour19': Hour19,
        'Hour20': Hour20,
        'Hour21': Hour21,
        'Hour22': Hour22,
        'Hour23': Hour23
    };

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

// @DataContract(Name="ResponseMetadata", Namespace="schemas.agentivity.com/types")
class AgentivityError implements IConvertible
{
    // @DataMember
    String? ErrorCode;

    // @DataMember
    String? Message;

    // @DataMember
    String? StatusCode;

    // @DataMember
    String? VerboseMessage;

    AgentivityError({this.ErrorCode,this.Message,this.StatusCode,this.VerboseMessage});
    AgentivityError.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ErrorCode = json['ErrorCode'];
        Message = json['Message'];
        StatusCode = json['StatusCode'];
        VerboseMessage = json['VerboseMessage'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ErrorCode': ErrorCode,
        'Message': Message,
        'StatusCode': StatusCode,
        'VerboseMessage': VerboseMessage
    };

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

// @DataContract(Name="AgentivityResponse", Namespace="schemas.agentivity.com/types")
class CollectionResponse<TItem> implements IConvertible
{
    // @DataMember(Order=1)
    ResponseMetadata? ResponseMetadata;

    // @DataMember(Order=2, EmitDefaultValue=false)
    List<ApiRequestPerHour>? ResponseReport;

    // @DataMember(Order=3, EmitDefaultValue=false)
    AgentivityError? ResponseError;

    CollectionResponse({this.ResponseMetadata,this.ResponseReport,this.ResponseError});
    CollectionResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ResponseMetadata = JsonConverters.fromJson(json['ResponseMetadata'],'ResponseMetadata',context!);
        ResponseReport = JsonConverters.fromJson(json['ResponseReport'],'List<ApiRequestPerHour>',context!);
        ResponseError = JsonConverters.fromJson(json['ResponseError'],'AgentivityError',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ResponseMetadata': JsonConverters.toJson(ResponseMetadata,'ResponseMetadata',context!),
        'ResponseReport': JsonConverters.toJson(ResponseReport,'List<ApiRequestPerHour>',context!),
        'ResponseError': JsonConverters.toJson(ResponseError,'AgentivityError',context!)
    };

    getTypeName() => "CollectionResponse<$TItem>";
    TypeContext? context = _ctx;
}

// @DataContract(Name="AgentivityResponse", Namespace="schemas.agentivity.com/types")
class BookingDetailsByRefResponse extends CollectionResponse<BookingDetails> implements IConvertible
{
    BookingDetailsByRefResponse();
    BookingDetailsByRefResponse.fromJson(Map<String, dynamic> json) : super.fromJson(json);
    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson();
    getTypeName() => "BookingDetailsByRefResponse";
    TypeContext? context = _ctx;
}

// @Flags()
class BookingDetailsOptions
{
    static const BookingDetailsOptions None = const BookingDetailsOptions._(0);
    static const BookingDetailsOptions Passengers = const BookingDetailsOptions._(1);
    static const BookingDetailsOptions Itinerary = const BookingDetailsOptions._(2);
    static const BookingDetailsOptions PassengersItinerary = const BookingDetailsOptions._(3);
    static const BookingDetailsOptions DiEntries = const BookingDetailsOptions._(4);
    static const BookingDetailsOptions Phones = const BookingDetailsOptions._(8);
    static const BookingDetailsOptions Notepads = const BookingDetailsOptions._(16);
    static const BookingDetailsOptions VendorRemarks = const BookingDetailsOptions._(32);
    static const BookingDetailsOptions Tickets = const BookingDetailsOptions._(64);
    static const BookingDetailsOptions Versions = const BookingDetailsOptions._(128);
    static const BookingDetailsOptions VendorLocators = const BookingDetailsOptions._(256);
    static const BookingDetailsOptions CustomFields = const BookingDetailsOptions._(512);
    static const BookingDetailsOptions Emails = const BookingDetailsOptions._(1024);
    static const BookingDetailsOptions ContactFields = const BookingDetailsOptions._(1032);
    static const BookingDetailsOptions AccountValue = const BookingDetailsOptions._(2048);
    static const BookingDetailsOptions EventDetails = const BookingDetailsOptions._(4096);
    static const BookingDetailsOptions History = const BookingDetailsOptions._(4224);
    static const BookingDetailsOptions EmailTrails = const BookingDetailsOptions._(8192);
    static const BookingDetailsOptions AgentivityWarnings = const BookingDetailsOptions._(16384);
    static const BookingDetailsOptions AirTicketingDueDates = const BookingDetailsOptions._(32768);
    static const BookingDetailsOptions All = const BookingDetailsOptions._(65535);

    final int _value;
    const BookingDetailsOptions._(this._value);
    int get value => _value;
    static List<BookingDetailsOptions> get values => const [None,Passengers,Itinerary,PassengersItinerary,DiEntries,Phones,Notepads,VendorRemarks,Tickets,Versions,VendorLocators,CustomFields,Emails,ContactFields,AccountValue,EventDetails,History,EmailTrails,AgentivityWarnings,AirTicketingDueDates,All];
}

// @DataContract(Namespace="schemas.agentivity.com/types")
class BookingDetailsByRef extends CompanyLevelRequestBase implements IRequestConsultantID, IConvertible
{
    /**
    * Agentivity Booking Reference
    */
    // @DataMember
    int? AgentivityRef;

    /**
    * Options to retrieve booking details (valid values are: Passengers, Itinerary, DiEntries, Phones, Notepads, VendorRemarks, Tickets, Versions, VendorLocators, CustomFields, Emails, AccountValue, EventDetails or EmailTrails). The option All can be used to get entire booking data.
    */
    // @DataMember
    BookingDetailsOptions? LoadOptions;

    /**
    * Record locator
    */
    // @DataMember
    String? RecordLocator;

    /**
    * Date in format YYYYMMDD
    */
    // @DataMember
    String? PNRCreationDate;

    /**
    * Request Consultant ID (sign on)
    */
    // @DataMember
    String? RequestConsultantID;

    BookingDetailsByRef({this.AgentivityRef,this.LoadOptions,this.RecordLocator,this.PNRCreationDate,this.RequestConsultantID});
    BookingDetailsByRef.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        AgentivityRef = json['AgentivityRef'];
        LoadOptions = JsonConverters.fromJson(json['LoadOptions'],'BookingDetailsOptions',context!);
        RecordLocator = json['RecordLocator'];
        PNRCreationDate = json['PNRCreationDate'];
        RequestConsultantID = json['RequestConsultantID'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'AgentivityRef': AgentivityRef,
        'LoadOptions': JsonConverters.toJson(LoadOptions,'BookingDetailsOptions',context!),
        'RecordLocator': RecordLocator,
        'PNRCreationDate': PNRCreationDate,
        'RequestConsultantID': RequestConsultantID
    });

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

TypeContext _ctx = TypeContext(library: 'api.agentivity.com', types: <String, TypeInfo> {
    'PagingMetadata': TypeInfo(TypeOf.Class, create:() => PagingMetadata()),
    'CompanyLevelRequestBase': TypeInfo(TypeOf.AbstractClass),
    'FrequentFlyerDetails': TypeInfo(TypeOf.Class, create:() => FrequentFlyerDetails()),
    'PassengerDetails': TypeInfo(TypeOf.Class, create:() => PassengerDetails()),
    'List<FrequentFlyerDetails>': TypeInfo(TypeOf.Class, create:() => <FrequentFlyerDetails>[]),
    'BookingPhone': TypeInfo(TypeOf.Class, create:() => BookingPhone()),
    'BookingNotepad': TypeInfo(TypeOf.Class, create:() => BookingNotepad()),
    'VendorRemarkBase': TypeInfo(TypeOf.AbstractClass),
    'VendorRemark': TypeInfo(TypeOf.Class, create:() => VendorRemark()),
    'DiEntry': TypeInfo(TypeOf.Class, create:() => DiEntry()),
    'BookingTicket': TypeInfo(TypeOf.Class, create:() => BookingTicket()),
    'BookingVersion': TypeInfo(TypeOf.Class, create:() => BookingVersion()),
    'BookingVendorLocator': TypeInfo(TypeOf.Class, create:() => BookingVendorLocator()),
    'CustomFieldValue': TypeInfo(TypeOf.Class, create:() => CustomFieldValue()),
    'BookingEmail': TypeInfo(TypeOf.Class, create:() => BookingEmail()),
    'BookingEventDetail': TypeInfo(TypeOf.Class, create:() => BookingEventDetail()),
    'BookingAccountLocation': TypeInfo(TypeOf.Class, create:() => BookingAccountLocation()),
    'BookingEmailTrail': TypeInfo(TypeOf.Class, create:() => BookingEmailTrail()),
    'BookingWarningProperty': TypeInfo(TypeOf.Class, create:() => BookingWarningProperty()),
    'BookingDetailsWarning': TypeInfo(TypeOf.Class, create:() => BookingDetailsWarning()),
    'List<BookingWarningProperty>': TypeInfo(TypeOf.Class, create:() => <BookingWarningProperty>[]),
    'BookingDetailsAirTicketingDue': TypeInfo(TypeOf.Class, create:() => BookingDetailsAirTicketingDue()),
    'MeasurementUnit': TypeInfo(TypeOf.Class, create:() => MeasurementUnit()),
    'AssessmentProvider': TypeInfo(TypeOf.Class, create:() => AssessmentProvider()),
    'CarbonCalculationDetails': TypeInfo(TypeOf.Class, create:() => CarbonCalculationDetails()),
    'CarbonEmission': TypeInfo(TypeOf.Class, create:() => CarbonEmission()),
    'ItinerarySegment': TypeInfo(TypeOf.Class, create:() => ItinerarySegment()),
    'ItinerarySegmentsCollection': TypeInfo(TypeOf.Class, create:() => ItinerarySegmentsCollection()),
    'BookingDetails': TypeInfo(TypeOf.Class, create:() => BookingDetails()),
    'List<PassengerDetails>': TypeInfo(TypeOf.Class, create:() => <PassengerDetails>[]),
    'List<BookingPhone>': TypeInfo(TypeOf.Class, create:() => <BookingPhone>[]),
    'List<BookingNotepad>': TypeInfo(TypeOf.Class, create:() => <BookingNotepad>[]),
    'List<VendorRemark>': TypeInfo(TypeOf.Class, create:() => <VendorRemark>[]),
    'List<DiEntry>': TypeInfo(TypeOf.Class, create:() => <DiEntry>[]),
    'List<BookingTicket>': TypeInfo(TypeOf.Class, create:() => <BookingTicket>[]),
    'List<BookingVersion>': TypeInfo(TypeOf.Class, create:() => <BookingVersion>[]),
    'List<BookingVendorLocator>': TypeInfo(TypeOf.Class, create:() => <BookingVendorLocator>[]),
    'List<CustomFieldValue>': TypeInfo(TypeOf.Class, create:() => <CustomFieldValue>[]),
    'List<BookingEmail>': TypeInfo(TypeOf.Class, create:() => <BookingEmail>[]),
    'List<BookingEventDetail>': TypeInfo(TypeOf.Class, create:() => <BookingEventDetail>[]),
    'List<BookingAccountLocation>': TypeInfo(TypeOf.Class, create:() => <BookingAccountLocation>[]),
    'List<BookingEmailTrail>': TypeInfo(TypeOf.Class, create:() => <BookingEmailTrail>[]),
    'List<BookingDetailsWarning>': TypeInfo(TypeOf.Class, create:() => <BookingDetailsWarning>[]),
    'List<BookingDetailsAirTicketingDue>': TypeInfo(TypeOf.Class, create:() => <BookingDetailsAirTicketingDue>[]),
    'List<CarbonEmission>': TypeInfo(TypeOf.Class, create:() => <CarbonEmission>[]),
    'CacheMetadata': TypeInfo(TypeOf.Class, create:() => CacheMetadata()),
    'ResponseMetadata': TypeInfo(TypeOf.Class, create:() => ResponseMetadata()),
    'ApiRequestPerHour': TypeInfo(TypeOf.Class, create:() => ApiRequestPerHour()),
    'AgentivityError': TypeInfo(TypeOf.Class, create:() => AgentivityError()),
    'CollectionResponse<TItem>': TypeInfo(TypeOf.Class, create:() => CollectionResponse<TItem>()),
    'List<ApiRequestPerHour>': TypeInfo(TypeOf.Class, create:() => <ApiRequestPerHour>[]),
    'BookingDetailsByRefResponse': TypeInfo(TypeOf.Class, create:() => BookingDetailsByRefResponse()),
    'BookingDetailsOptions': TypeInfo(TypeOf.Enum, enumValues:BookingDetailsOptions.values),
    'BookingDetailsByRef': TypeInfo(TypeOf.Class, create:() => BookingDetailsByRef()),
});

Dart BookingDetailsByRef DTOs

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

HTTP + CSV

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

GET /BookingDetails HTTP/1.1 
Host: api.agentivity.com 
Accept: text/csv
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"ResponseMetadata":{"Success":false,"HasCache":false,"HasPaging":false,"CacheMetadata":{"IsFromCache":false,"CachedAt":"\/Date(-62135596800000-0000)\/","CacheExpiresAt":"\/Date(-62135596800000-0000)\/"},"PagingMetadata":{"Offset":"String","Limit":"String","TotalRecords":0,"ResponseRecords":0}},"ResponseReport":[{"AgentivityRef":0,"RecordLocator":"String","PNRCreationDate":"String","CreationDate":"\/Date(-62135596800000-0000)\/","PNRTicketed":"String","Account":"String","OwningConsultantID":"String","OwningConsultant":"String","CrsDescription":"String","LastActionConsultantID":"String","LastActionAgencyLocationID":"String","OwningAgencyLocationID":"String","CreatingAgencyIata":"String","CompanyID":0,"Passengers":[{"Id":0,"FirstName":"String","LastName":"String","FrequentFlyers":[{"Vendor":"String","Number":"String","FullNumber":"String"}],"SequenceNbr":0,"LastNameElement":0,"IsVip":false,"TravellerGUID":"String"}],"Phones":[{"PhoneType":"String","City":"String","Number":"String","SequenceNbr":0}],"Notepads":[{"Remark":"String","CreatedDate":"\/Date(-62135596800000-0000)\/","CreatedTime":"String","Qualifier":"String","SequenceNbr":0}],"VendorRemarks":[{"VendorRemarkID":0,"TravelOrderIdentifier":0,"RmkNum":0,"DateStamp":"\/Date(-62135596800000-0000)\/","TimeStamp":"String","RemarkType":"String","VendorType":"String","Vendor":"String","Remark":"String"}],"DiEntries":[{"SequenceNbr":0,"Keyword":"String","Remark":"String"}],"Tickets":[{"SegmentNbr":0,"TicketNumber":"String","TicketType":"String","TicketDetailsAvailable":false}],"Versions":[{"AgentivityRef":0,"DataBaseTimeStamp":"\/Date(-62135596800000-0000)\/","EventType":"String","PnrTicketed":"String","LastActionAgentId":"String","AirSegs":0,"AirPSegs":0,"HtlSegs":0,"HtlPSegs":0,"CarSegs":0,"CarPSegs":0,"TrnPSegs":0,"OwningAgencyLocationID":"String"}],"VendorLocators":[{"AirSegmentNbr":0,"CarrierCode":"String","VendorLocator":"String"}],"CustomFields":[{"PNRPropertiesCustomFieldID":"String","RecordLocator":"String","PNRCreationDate":"\/Date(-62135596800000-0000)\/","FieldName":"String","FieldValue":"String","CustomFieldID":0,"CreationDateTime":"\/Date(-62135596800000-0000)\/","ElementNumber":0,"GDS":"String"}],"Emails":[{"SequenceNbr":0,"EmailType":"String","Email":"String"}],"EventDetails":[{"ItineraryEventTypeDetailID":0,"AgentivityRef":0,"EventTypeDetail":"String","OldData":"String","NewData":"String","DateTimeStamp":"\/Date(-62135596800000-0000)\/","EventTypeDetailID":0}],"AccountLocations":[{"PrimaryAccountLocation":"String","SecondaryAccountLocation":"String","Valid":false,"ExactMatch":false,"GDS":"String"}],"EmailTrails":[{"RecipientEmail":"String","DeliveryDetails":"String","MailSentDateTime":"\/Date(-62135596800000-0000)\/","RecipientLastActivityEvent":"String","EmailId":0,"UserId":0,"SentResponseMessage":"String","SentResponseErrorCode":0,"DeliveredBookingID":0}],"AgentivityWarnings":[{"Message":"String","Vendor":"String","WarningDateTime":"\/Date(-62135596800000-0000)\/","OriginalRemark":"String","ClearedDateTime":"\/Date(-62135596800000-0000)\/","ClearedByConsultantID":"String","PropertiesList":[{"Name":"String","Value":"String"}]}],"AirlineTicketingDues":[{"Airline":"String","DueDate":"\/Date(-62135596800000-0000)\/","DueTime":"String"}],"CTCE":"String","CTCM":"String","CarbonTonnage":0,"CarbonEmissions":[{"Value":0,"Unit":{"Id":0,"Symbol":"String","Name":"String"},"Provider":{"Id":0,"Name":"String","Description":"String","LogoPath":"String"},"CalculationDateTime":"\/Date(-62135596800000-0000)\/","CalculationDetails":{"Id":0,"Name":"String"}}],"OwningCompanyCode":"String","Itinerary":[{"SegmentType":"String","SegmentNbr":0,"BoardPoint":"String","OffPoint":"String","OperatorCode":"String","OperatorService":"String","SegmentStatus":"String","DepartureTimeFormatted":"String","ArrivalTimeFormatted":"String","ChangeOfDayFormatted":"String","ServiceCode":"String","StartDate":"String","EndDate":"String","TicketNumber":"String","VendorLocators":"String","EquipmentCode":"String","Equipment":"String"}],"ItineraryFormatted":"String"}],"ResponseError":{"ErrorCode":"String","Message":"String","StatusCode":"String","VerboseMessage":"String"}}