Billhighway Cloud API

<back to all web services

SalesForcePmi

The following routes are available for this service:
POST/api/SalesForce/PMI
import 'package:servicestack/servicestack.dart';
import 'dart:collection';

class SalesForcePmiReply implements IHaveErrorField, IConvertible
{
    String? ClassName;
    String? UniqueId;
    DateTime? CreatedDateTime;
    int? ClientId;
    String? BillhighwayPaymentConfirmationNumber;
    int? BillhighwayUserId;
    List<int>? BhInvoiceBatchId;
    int? ChapMemPayid;
    int? ErrorCode;
    String? ErrorMessage;
    bool? IsError;

    SalesForcePmiReply({this.ClassName,this.UniqueId,this.CreatedDateTime,this.ClientId,this.BillhighwayPaymentConfirmationNumber,this.BillhighwayUserId,this.BhInvoiceBatchId,this.ChapMemPayid,this.ErrorCode,this.ErrorMessage,this.IsError});
    SalesForcePmiReply.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ClassName = json['ClassName'];
        UniqueId = json['UniqueId'];
        CreatedDateTime = JsonConverters.fromJson(json['CreatedDateTime'],'DateTime',context!);
        ClientId = json['ClientId'];
        BillhighwayPaymentConfirmationNumber = json['BillhighwayPaymentConfirmationNumber'];
        BillhighwayUserId = json['BillhighwayUserId'];
        BhInvoiceBatchId = JsonConverters.fromJson(json['BhInvoiceBatchId'],'List<int>',context!);
        ChapMemPayid = json['ChapMemPayid'];
        ErrorCode = json['ErrorCode'];
        ErrorMessage = json['ErrorMessage'];
        IsError = json['IsError'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ClassName': ClassName,
        'UniqueId': UniqueId,
        'CreatedDateTime': JsonConverters.toJson(CreatedDateTime,'DateTime',context!),
        'ClientId': ClientId,
        'BillhighwayPaymentConfirmationNumber': BillhighwayPaymentConfirmationNumber,
        'BillhighwayUserId': BillhighwayUserId,
        'BhInvoiceBatchId': JsonConverters.toJson(BhInvoiceBatchId,'List<int>',context!),
        'ChapMemPayid': ChapMemPayid,
        'ErrorCode': ErrorCode,
        'ErrorMessage': ErrorMessage,
        'IsError': IsError
    };

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

class RecurringInvoiceSettings implements IConvertible
{
    String? DonationAmount;

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

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

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

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

class SubscriberFormField implements IConvertible
{
    String? Name;
    String? Value;

    SubscriberFormField({this.Name,this.Value});
    SubscriberFormField.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() => "SubscriberFormField";
    TypeContext? context = _ctx;
}

class AttributeItem implements IConvertible
{
    String? Name;
    String? Value;

    AttributeItem({this.Name,this.Value});
    AttributeItem.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() => "AttributeItem";
    TypeContext? context = _ctx;
}

class Chapter implements IConvertible
{
    String? GroupId;

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

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

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

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

class SalesForceMember implements IConvertible
{
    String? ClassName;
    String? UniqueId;
    DateTime? CreatedDateTime;
    int? ClientId;
    String? GroupId;
    String? UserId;
    String? AlternateUserId;
    int? BhUserId;
    String? FirstName;
    String? LastName;
    String? MiddleName;
    String? PreferredEmailAddress;
    String? OtherEmailAddress;
    String? PreferredPhoneNumber;
    String? PreferredAddress1;
    String? PreferredAddress2;
    String? PreferredCity;
    String? PreferredState;
    String? PreferredZip;
    String? PreferredCountry;
    String? AccessLevel;
    String? MemberStatus;
    String? MemberTypeClient;
    String? BillingType;
    int? FiscalYear;
    String? WorkLocation;
    DateTime? DOB;
    String? Paperless;
    String? DisplayName;
    String? DisableLogin;
    RecurringInvoiceSettings? RecurringInvoiceSettings;
    List<SubscriberFormField>? FormFields;
    List<AttributeItem>? Attributes;
    List<Chapter>? GroupList;

    SalesForceMember({this.ClassName,this.UniqueId,this.CreatedDateTime,this.ClientId,this.GroupId,this.UserId,this.AlternateUserId,this.BhUserId,this.FirstName,this.LastName,this.MiddleName,this.PreferredEmailAddress,this.OtherEmailAddress,this.PreferredPhoneNumber,this.PreferredAddress1,this.PreferredAddress2,this.PreferredCity,this.PreferredState,this.PreferredZip,this.PreferredCountry,this.AccessLevel,this.MemberStatus,this.MemberTypeClient,this.BillingType,this.FiscalYear,this.WorkLocation,this.DOB,this.Paperless,this.DisplayName,this.DisableLogin,this.RecurringInvoiceSettings,this.FormFields,this.Attributes,this.GroupList});
    SalesForceMember.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ClassName = json['ClassName'];
        UniqueId = json['UniqueId'];
        CreatedDateTime = JsonConverters.fromJson(json['CreatedDateTime'],'DateTime',context!);
        ClientId = json['ClientId'];
        GroupId = json['GroupId'];
        UserId = json['UserId'];
        AlternateUserId = json['AlternateUserId'];
        BhUserId = json['BhUserId'];
        FirstName = json['FirstName'];
        LastName = json['LastName'];
        MiddleName = json['MiddleName'];
        PreferredEmailAddress = json['PreferredEmailAddress'];
        OtherEmailAddress = json['OtherEmailAddress'];
        PreferredPhoneNumber = json['PreferredPhoneNumber'];
        PreferredAddress1 = json['PreferredAddress1'];
        PreferredAddress2 = json['PreferredAddress2'];
        PreferredCity = json['PreferredCity'];
        PreferredState = json['PreferredState'];
        PreferredZip = json['PreferredZip'];
        PreferredCountry = json['PreferredCountry'];
        AccessLevel = json['AccessLevel'];
        MemberStatus = json['MemberStatus'];
        MemberTypeClient = json['MemberTypeClient'];
        BillingType = json['BillingType'];
        FiscalYear = json['FiscalYear'];
        WorkLocation = json['WorkLocation'];
        DOB = JsonConverters.fromJson(json['DOB'],'DateTime',context!);
        Paperless = json['Paperless'];
        DisplayName = json['DisplayName'];
        DisableLogin = json['DisableLogin'];
        RecurringInvoiceSettings = JsonConverters.fromJson(json['RecurringInvoiceSettings'],'RecurringInvoiceSettings',context!);
        FormFields = JsonConverters.fromJson(json['FormFields'],'List<SubscriberFormField>',context!);
        Attributes = JsonConverters.fromJson(json['Attributes'],'List<AttributeItem>',context!);
        GroupList = JsonConverters.fromJson(json['GroupList'],'List<Chapter>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ClassName': ClassName,
        'UniqueId': UniqueId,
        'CreatedDateTime': JsonConverters.toJson(CreatedDateTime,'DateTime',context!),
        'ClientId': ClientId,
        'GroupId': GroupId,
        'UserId': UserId,
        'AlternateUserId': AlternateUserId,
        'BhUserId': BhUserId,
        'FirstName': FirstName,
        'LastName': LastName,
        'MiddleName': MiddleName,
        'PreferredEmailAddress': PreferredEmailAddress,
        'OtherEmailAddress': OtherEmailAddress,
        'PreferredPhoneNumber': PreferredPhoneNumber,
        'PreferredAddress1': PreferredAddress1,
        'PreferredAddress2': PreferredAddress2,
        'PreferredCity': PreferredCity,
        'PreferredState': PreferredState,
        'PreferredZip': PreferredZip,
        'PreferredCountry': PreferredCountry,
        'AccessLevel': AccessLevel,
        'MemberStatus': MemberStatus,
        'MemberTypeClient': MemberTypeClient,
        'BillingType': BillingType,
        'FiscalYear': FiscalYear,
        'WorkLocation': WorkLocation,
        'DOB': JsonConverters.toJson(DOB,'DateTime',context!),
        'Paperless': Paperless,
        'DisplayName': DisplayName,
        'DisableLogin': DisableLogin,
        'RecurringInvoiceSettings': JsonConverters.toJson(RecurringInvoiceSettings,'RecurringInvoiceSettings',context!),
        'FormFields': JsonConverters.toJson(FormFields,'List<SubscriberFormField>',context!),
        'Attributes': JsonConverters.toJson(Attributes,'List<AttributeItem>',context!),
        'GroupList': JsonConverters.toJson(GroupList,'List<Chapter>',context!)
    };

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

class SalesForceInvoiceItem implements IConvertible
{
    String? ClassName;
    String? UniqueId;
    DateTime? CreatedDateTime;
    int? ClientId;
    String? ProductName;
    String? AmountDue;
    String? ProductType;
    int? ActPatternTypeId;
    DateTime? TermStartDate;
    DateTime? TermEndDate;
    int? RecognitionPeriod;
    String? RevenueAccount;
    String? AccountsReceivableAccount;
    String? LiabilityAccount;
    String? CreditExpenseAccount;
    String? InvoiceClearingAccount;
    String? CostCenter;
    String? Region;

    SalesForceInvoiceItem({this.ClassName,this.UniqueId,this.CreatedDateTime,this.ClientId,this.ProductName,this.AmountDue,this.ProductType,this.ActPatternTypeId,this.TermStartDate,this.TermEndDate,this.RecognitionPeriod,this.RevenueAccount,this.AccountsReceivableAccount,this.LiabilityAccount,this.CreditExpenseAccount,this.InvoiceClearingAccount,this.CostCenter,this.Region});
    SalesForceInvoiceItem.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ClassName = json['ClassName'];
        UniqueId = json['UniqueId'];
        CreatedDateTime = JsonConverters.fromJson(json['CreatedDateTime'],'DateTime',context!);
        ClientId = json['ClientId'];
        ProductName = json['ProductName'];
        AmountDue = json['AmountDue'];
        ProductType = json['ProductType'];
        ActPatternTypeId = json['ActPatternTypeId'];
        TermStartDate = JsonConverters.fromJson(json['TermStartDate'],'DateTime',context!);
        TermEndDate = JsonConverters.fromJson(json['TermEndDate'],'DateTime',context!);
        RecognitionPeriod = json['RecognitionPeriod'];
        RevenueAccount = json['RevenueAccount'];
        AccountsReceivableAccount = json['AccountsReceivableAccount'];
        LiabilityAccount = json['LiabilityAccount'];
        CreditExpenseAccount = json['CreditExpenseAccount'];
        InvoiceClearingAccount = json['InvoiceClearingAccount'];
        CostCenter = json['CostCenter'];
        Region = json['Region'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ClassName': ClassName,
        'UniqueId': UniqueId,
        'CreatedDateTime': JsonConverters.toJson(CreatedDateTime,'DateTime',context!),
        'ClientId': ClientId,
        'ProductName': ProductName,
        'AmountDue': AmountDue,
        'ProductType': ProductType,
        'ActPatternTypeId': ActPatternTypeId,
        'TermStartDate': JsonConverters.toJson(TermStartDate,'DateTime',context!),
        'TermEndDate': JsonConverters.toJson(TermEndDate,'DateTime',context!),
        'RecognitionPeriod': RecognitionPeriod,
        'RevenueAccount': RevenueAccount,
        'AccountsReceivableAccount': AccountsReceivableAccount,
        'LiabilityAccount': LiabilityAccount,
        'CreditExpenseAccount': CreditExpenseAccount,
        'InvoiceClearingAccount': InvoiceClearingAccount,
        'CostCenter': CostCenter,
        'Region': Region
    };

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

class SalesForceInvoice implements IConvertible
{
    String? ClassName;
    String? UniqueId;
    DateTime? CreatedDateTime;
    int? ClientId;
    String? GroupId;
    String? UserId;
    String? OpportunityId;
    DateTime? InvoiceDueDate;
    int? Installments;
    int? Frequency;
    int? BhUserId;
    String? Description;
    bool? Deliver;
    String? CurrencyType;
    List<SalesForceInvoiceItem>? InvoiceItems;
    int? InvoiceNo;
    double? InvoiceAmt;
    String? ExternalInvBatchNo;
    bool? ExemptFromLateFee;

    SalesForceInvoice({this.ClassName,this.UniqueId,this.CreatedDateTime,this.ClientId,this.GroupId,this.UserId,this.OpportunityId,this.InvoiceDueDate,this.Installments,this.Frequency,this.BhUserId,this.Description,this.Deliver,this.CurrencyType,this.InvoiceItems,this.InvoiceNo,this.InvoiceAmt,this.ExternalInvBatchNo,this.ExemptFromLateFee});
    SalesForceInvoice.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ClassName = json['ClassName'];
        UniqueId = json['UniqueId'];
        CreatedDateTime = JsonConverters.fromJson(json['CreatedDateTime'],'DateTime',context!);
        ClientId = json['ClientId'];
        GroupId = json['GroupId'];
        UserId = json['UserId'];
        OpportunityId = json['OpportunityId'];
        InvoiceDueDate = JsonConverters.fromJson(json['InvoiceDueDate'],'DateTime',context!);
        Installments = json['Installments'];
        Frequency = json['Frequency'];
        BhUserId = json['BhUserId'];
        Description = json['Description'];
        Deliver = json['Deliver'];
        CurrencyType = json['CurrencyType'];
        InvoiceItems = JsonConverters.fromJson(json['InvoiceItems'],'List<SalesForceInvoiceItem>',context!);
        InvoiceNo = json['InvoiceNo'];
        InvoiceAmt = JsonConverters.toDouble(json['InvoiceAmt']);
        ExternalInvBatchNo = json['ExternalInvBatchNo'];
        ExemptFromLateFee = json['ExemptFromLateFee'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ClassName': ClassName,
        'UniqueId': UniqueId,
        'CreatedDateTime': JsonConverters.toJson(CreatedDateTime,'DateTime',context!),
        'ClientId': ClientId,
        'GroupId': GroupId,
        'UserId': UserId,
        'OpportunityId': OpportunityId,
        'InvoiceDueDate': JsonConverters.toJson(InvoiceDueDate,'DateTime',context!),
        'Installments': Installments,
        'Frequency': Frequency,
        'BhUserId': BhUserId,
        'Description': Description,
        'Deliver': Deliver,
        'CurrencyType': CurrencyType,
        'InvoiceItems': JsonConverters.toJson(InvoiceItems,'List<SalesForceInvoiceItem>',context!),
        'InvoiceNo': InvoiceNo,
        'InvoiceAmt': InvoiceAmt,
        'ExternalInvBatchNo': ExternalInvBatchNo,
        'ExemptFromLateFee': ExemptFromLateFee
    };

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

class SalesForceMemberPaymentInvoiceDetail implements IConvertible
{
    String? ClassName;
    String? UniqueId;
    DateTime? CreatedDateTime;
    int? ClientId;
    int? Invoice;
    String? AmountPaid;

    SalesForceMemberPaymentInvoiceDetail({this.ClassName,this.UniqueId,this.CreatedDateTime,this.ClientId,this.Invoice,this.AmountPaid});
    SalesForceMemberPaymentInvoiceDetail.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ClassName = json['ClassName'];
        UniqueId = json['UniqueId'];
        CreatedDateTime = JsonConverters.fromJson(json['CreatedDateTime'],'DateTime',context!);
        ClientId = json['ClientId'];
        Invoice = json['Invoice'];
        AmountPaid = json['AmountPaid'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ClassName': ClassName,
        'UniqueId': UniqueId,
        'CreatedDateTime': JsonConverters.toJson(CreatedDateTime,'DateTime',context!),
        'ClientId': ClientId,
        'Invoice': Invoice,
        'AmountPaid': AmountPaid
    };

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

class SalesForceCreditCardPayment implements IConvertible
{
    String? ClassName;
    String? UniqueId;
    DateTime? CreatedDateTime;
    int? ClientId;
    String? GroupId;
    String? UserId;
    int? BhUserId;
    String? Amount;
    bool? AutoPay;
    String? CurrencyType;
    String? Country;
    String? CardReferenceOrCardNumber;
    bool? StoreCardInfo;
    String? Address1;
    String? Address2;
    String? BillingCity;
    String? BillingState;
    String? PreferredEmailAddress;
    String? Memo;
    String? OpportunityId;
    int? ExpMonth;
    int? ExpYear;
    String? Cvv;
    String? PostalCode;
    String? Location;
    String? NameOnCard;
    String? CardType;
    List<SalesForceMemberPaymentInvoiceDetail>? InvoiceList;

    SalesForceCreditCardPayment({this.ClassName,this.UniqueId,this.CreatedDateTime,this.ClientId,this.GroupId,this.UserId,this.BhUserId,this.Amount,this.AutoPay,this.CurrencyType,this.Country,this.CardReferenceOrCardNumber,this.StoreCardInfo,this.Address1,this.Address2,this.BillingCity,this.BillingState,this.PreferredEmailAddress,this.Memo,this.OpportunityId,this.ExpMonth,this.ExpYear,this.Cvv,this.PostalCode,this.Location,this.NameOnCard,this.CardType,this.InvoiceList});
    SalesForceCreditCardPayment.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ClassName = json['ClassName'];
        UniqueId = json['UniqueId'];
        CreatedDateTime = JsonConverters.fromJson(json['CreatedDateTime'],'DateTime',context!);
        ClientId = json['ClientId'];
        GroupId = json['GroupId'];
        UserId = json['UserId'];
        BhUserId = json['BhUserId'];
        Amount = json['Amount'];
        AutoPay = json['AutoPay'];
        CurrencyType = json['CurrencyType'];
        Country = json['Country'];
        CardReferenceOrCardNumber = json['CardReferenceOrCardNumber'];
        StoreCardInfo = json['StoreCardInfo'];
        Address1 = json['Address1'];
        Address2 = json['Address2'];
        BillingCity = json['BillingCity'];
        BillingState = json['BillingState'];
        PreferredEmailAddress = json['PreferredEmailAddress'];
        Memo = json['Memo'];
        OpportunityId = json['OpportunityId'];
        ExpMonth = json['ExpMonth'];
        ExpYear = json['ExpYear'];
        Cvv = json['Cvv'];
        PostalCode = json['PostalCode'];
        Location = json['Location'];
        NameOnCard = json['NameOnCard'];
        CardType = json['CardType'];
        InvoiceList = JsonConverters.fromJson(json['InvoiceList'],'List<SalesForceMemberPaymentInvoiceDetail>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ClassName': ClassName,
        'UniqueId': UniqueId,
        'CreatedDateTime': JsonConverters.toJson(CreatedDateTime,'DateTime',context!),
        'ClientId': ClientId,
        'GroupId': GroupId,
        'UserId': UserId,
        'BhUserId': BhUserId,
        'Amount': Amount,
        'AutoPay': AutoPay,
        'CurrencyType': CurrencyType,
        'Country': Country,
        'CardReferenceOrCardNumber': CardReferenceOrCardNumber,
        'StoreCardInfo': StoreCardInfo,
        'Address1': Address1,
        'Address2': Address2,
        'BillingCity': BillingCity,
        'BillingState': BillingState,
        'PreferredEmailAddress': PreferredEmailAddress,
        'Memo': Memo,
        'OpportunityId': OpportunityId,
        'ExpMonth': ExpMonth,
        'ExpYear': ExpYear,
        'Cvv': Cvv,
        'PostalCode': PostalCode,
        'Location': Location,
        'NameOnCard': NameOnCard,
        'CardType': CardType,
        'InvoiceList': JsonConverters.toJson(InvoiceList,'List<SalesForceMemberPaymentInvoiceDetail>',context!)
    };

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

class SalesForceCreditInvoiceDetails implements IConvertible
{
    int? Invoice;
    double? AmountPaid;
    String? Region;
    String? CostCenter;

    SalesForceCreditInvoiceDetails({this.Invoice,this.AmountPaid,this.Region,this.CostCenter});
    SalesForceCreditInvoiceDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Invoice = json['Invoice'];
        AmountPaid = JsonConverters.toDouble(json['AmountPaid']);
        Region = json['Region'];
        CostCenter = json['CostCenter'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Invoice': Invoice,
        'AmountPaid': AmountPaid,
        'Region': Region,
        'CostCenter': CostCenter
    };

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

class SalesForceCreateApplyCredit implements IConvertible
{
    String? ClassName;
    String? UniqueId;
    DateTime? CreatedDateTime;
    int? ClientId;
    String? GroupId;
    String? UserId;
    int? BhUserId;
    int? CreditId;
    String? CurrencyType;
    String? CreditType;
    String? Notes;
    List<SalesForceCreditInvoiceDetails>? InvoiceDetails;

    SalesForceCreateApplyCredit({this.ClassName,this.UniqueId,this.CreatedDateTime,this.ClientId,this.GroupId,this.UserId,this.BhUserId,this.CreditId,this.CurrencyType,this.CreditType,this.Notes,this.InvoiceDetails});
    SalesForceCreateApplyCredit.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ClassName = json['ClassName'];
        UniqueId = json['UniqueId'];
        CreatedDateTime = JsonConverters.fromJson(json['CreatedDateTime'],'DateTime',context!);
        ClientId = json['ClientId'];
        GroupId = json['GroupId'];
        UserId = json['UserId'];
        BhUserId = json['BhUserId'];
        CreditId = json['CreditId'];
        CurrencyType = json['CurrencyType'];
        CreditType = json['CreditType'];
        Notes = json['Notes'];
        InvoiceDetails = JsonConverters.fromJson(json['InvoiceDetails'],'List<SalesForceCreditInvoiceDetails>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ClassName': ClassName,
        'UniqueId': UniqueId,
        'CreatedDateTime': JsonConverters.toJson(CreatedDateTime,'DateTime',context!),
        'ClientId': ClientId,
        'GroupId': GroupId,
        'UserId': UserId,
        'BhUserId': BhUserId,
        'CreditId': CreditId,
        'CurrencyType': CurrencyType,
        'CreditType': CreditType,
        'Notes': Notes,
        'InvoiceDetails': JsonConverters.toJson(InvoiceDetails,'List<SalesForceCreditInvoiceDetails>',context!)
    };

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

class AchPayment implements IConvertible
{
    String? ClassName;
    String? UniqueId;
    DateTime? CreatedDateTime;
    int? ClientId;
    String? GroupId;
    String? UserId;
    int? BhUserId;
    double? Amount;
    String? CurrencyType;
    String? Country;
    String? RoutingNumber;
    String? AccountNumber;
    String? AchReference;
    String? AccountType;
    bool? IsSavingsAccount;
    String? PayerName;
    String? CheckNumber;
    String? PreferredEmailAddress;
    String? Memo;
    List<SalesForceMemberPaymentInvoiceDetail>? InvoiceList;
    bool? AutoPay;
    bool? StoreAchInfo;
    int? EncryptionTypeId;

    AchPayment({this.ClassName,this.UniqueId,this.CreatedDateTime,this.ClientId,this.GroupId,this.UserId,this.BhUserId,this.Amount,this.CurrencyType,this.Country,this.RoutingNumber,this.AccountNumber,this.AchReference,this.AccountType,this.IsSavingsAccount,this.PayerName,this.CheckNumber,this.PreferredEmailAddress,this.Memo,this.InvoiceList,this.AutoPay,this.StoreAchInfo,this.EncryptionTypeId});
    AchPayment.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ClassName = json['ClassName'];
        UniqueId = json['UniqueId'];
        CreatedDateTime = JsonConverters.fromJson(json['CreatedDateTime'],'DateTime',context!);
        ClientId = json['ClientId'];
        GroupId = json['GroupId'];
        UserId = json['UserId'];
        BhUserId = json['BhUserId'];
        Amount = JsonConverters.toDouble(json['Amount']);
        CurrencyType = json['CurrencyType'];
        Country = json['Country'];
        RoutingNumber = json['RoutingNumber'];
        AccountNumber = json['AccountNumber'];
        AchReference = json['AchReference'];
        AccountType = json['AccountType'];
        IsSavingsAccount = json['IsSavingsAccount'];
        PayerName = json['PayerName'];
        CheckNumber = json['CheckNumber'];
        PreferredEmailAddress = json['PreferredEmailAddress'];
        Memo = json['Memo'];
        InvoiceList = JsonConverters.fromJson(json['InvoiceList'],'List<SalesForceMemberPaymentInvoiceDetail>',context!);
        AutoPay = json['AutoPay'];
        StoreAchInfo = json['StoreAchInfo'];
        EncryptionTypeId = json['EncryptionTypeId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ClassName': ClassName,
        'UniqueId': UniqueId,
        'CreatedDateTime': JsonConverters.toJson(CreatedDateTime,'DateTime',context!),
        'ClientId': ClientId,
        'GroupId': GroupId,
        'UserId': UserId,
        'BhUserId': BhUserId,
        'Amount': Amount,
        'CurrencyType': CurrencyType,
        'Country': Country,
        'RoutingNumber': RoutingNumber,
        'AccountNumber': AccountNumber,
        'AchReference': AchReference,
        'AccountType': AccountType,
        'IsSavingsAccount': IsSavingsAccount,
        'PayerName': PayerName,
        'CheckNumber': CheckNumber,
        'PreferredEmailAddress': PreferredEmailAddress,
        'Memo': Memo,
        'InvoiceList': JsonConverters.toJson(InvoiceList,'List<SalesForceMemberPaymentInvoiceDetail>',context!),
        'AutoPay': AutoPay,
        'StoreAchInfo': StoreAchInfo,
        'EncryptionTypeId': EncryptionTypeId
    };

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

class SalesForcePmi implements IConvertible
{
    String? ClassName;
    String? UniqueId;
    DateTime? CreatedDateTime;
    int? ClientId;
    int? GroupId;
    SalesForceMember? MemberInfo;
    List<SalesForceInvoice>? InvoiceCollection;
    SalesForceCreditCardPayment? CcPaymentInfo;
    SalesForceCreateApplyCredit? CreditInfo;
    AchPayment? AchPaymentInfo;
    int? LockboxId;

    SalesForcePmi({this.ClassName,this.UniqueId,this.CreatedDateTime,this.ClientId,this.GroupId,this.MemberInfo,this.InvoiceCollection,this.CcPaymentInfo,this.CreditInfo,this.AchPaymentInfo,this.LockboxId});
    SalesForcePmi.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ClassName = json['ClassName'];
        UniqueId = json['UniqueId'];
        CreatedDateTime = JsonConverters.fromJson(json['CreatedDateTime'],'DateTime',context!);
        ClientId = json['ClientId'];
        GroupId = json['GroupId'];
        MemberInfo = JsonConverters.fromJson(json['MemberInfo'],'SalesForceMember',context!);
        InvoiceCollection = JsonConverters.fromJson(json['InvoiceCollection'],'List<SalesForceInvoice>',context!);
        CcPaymentInfo = JsonConverters.fromJson(json['CcPaymentInfo'],'SalesForceCreditCardPayment',context!);
        CreditInfo = JsonConverters.fromJson(json['CreditInfo'],'SalesForceCreateApplyCredit',context!);
        AchPaymentInfo = JsonConverters.fromJson(json['AchPaymentInfo'],'AchPayment',context!);
        LockboxId = json['LockboxId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ClassName': ClassName,
        'UniqueId': UniqueId,
        'CreatedDateTime': JsonConverters.toJson(CreatedDateTime,'DateTime',context!),
        'ClientId': ClientId,
        'GroupId': GroupId,
        'MemberInfo': JsonConverters.toJson(MemberInfo,'SalesForceMember',context!),
        'InvoiceCollection': JsonConverters.toJson(InvoiceCollection,'List<SalesForceInvoice>',context!),
        'CcPaymentInfo': JsonConverters.toJson(CcPaymentInfo,'SalesForceCreditCardPayment',context!),
        'CreditInfo': JsonConverters.toJson(CreditInfo,'SalesForceCreateApplyCredit',context!),
        'AchPaymentInfo': JsonConverters.toJson(AchPaymentInfo,'AchPayment',context!),
        'LockboxId': LockboxId
    };

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

TypeContext _ctx = TypeContext(library: 'devapi.billhighway.com', types: <String, TypeInfo> {
    'SalesForcePmiReply': TypeInfo(TypeOf.Class, create:() => SalesForcePmiReply()),
    'RecurringInvoiceSettings': TypeInfo(TypeOf.Class, create:() => RecurringInvoiceSettings()),
    'SubscriberFormField': TypeInfo(TypeOf.Class, create:() => SubscriberFormField()),
    'AttributeItem': TypeInfo(TypeOf.Class, create:() => AttributeItem()),
    'Chapter': TypeInfo(TypeOf.Class, create:() => Chapter()),
    'SalesForceMember': TypeInfo(TypeOf.Class, create:() => SalesForceMember()),
    'List<SubscriberFormField>': TypeInfo(TypeOf.Class, create:() => <SubscriberFormField>[]),
    'List<AttributeItem>': TypeInfo(TypeOf.Class, create:() => <AttributeItem>[]),
    'List<Chapter>': TypeInfo(TypeOf.Class, create:() => <Chapter>[]),
    'SalesForceInvoiceItem': TypeInfo(TypeOf.Class, create:() => SalesForceInvoiceItem()),
    'SalesForceInvoice': TypeInfo(TypeOf.Class, create:() => SalesForceInvoice()),
    'List<SalesForceInvoiceItem>': TypeInfo(TypeOf.Class, create:() => <SalesForceInvoiceItem>[]),
    'SalesForceMemberPaymentInvoiceDetail': TypeInfo(TypeOf.Class, create:() => SalesForceMemberPaymentInvoiceDetail()),
    'SalesForceCreditCardPayment': TypeInfo(TypeOf.Class, create:() => SalesForceCreditCardPayment()),
    'List<SalesForceMemberPaymentInvoiceDetail>': TypeInfo(TypeOf.Class, create:() => <SalesForceMemberPaymentInvoiceDetail>[]),
    'SalesForceCreditInvoiceDetails': TypeInfo(TypeOf.Class, create:() => SalesForceCreditInvoiceDetails()),
    'SalesForceCreateApplyCredit': TypeInfo(TypeOf.Class, create:() => SalesForceCreateApplyCredit()),
    'List<SalesForceCreditInvoiceDetails>': TypeInfo(TypeOf.Class, create:() => <SalesForceCreditInvoiceDetails>[]),
    'AchPayment': TypeInfo(TypeOf.Class, create:() => AchPayment()),
    'SalesForcePmi': TypeInfo(TypeOf.Class, create:() => SalesForcePmi()),
    'List<SalesForceInvoice>': TypeInfo(TypeOf.Class, create:() => <SalesForceInvoice>[]),
});

Dart SalesForcePmi 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.

POST /api/SalesForce/PMI HTTP/1.1 
Host: devapi.billhighway.com 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"GroupId":0,"MemberInfo":{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"GroupId":"String","UserId":"String","AlternateUserId":"String","BhUserId":0,"FirstName":"String","LastName":"String","MiddleName":"String","PreferredEmailAddress":"String","OtherEmailAddress":"String","PreferredPhoneNumber":"String","PreferredAddress1":"String","PreferredAddress2":"String","PreferredCity":"String","PreferredState":"String","PreferredZip":"String","PreferredCountry":"String","AccessLevel":"String","MemberStatus":"String","MemberTypeClient":"String","BillingType":"String","FiscalYear":0,"WorkLocation":"String","DOB":"0001-01-01T00:00:00.0000000","Paperless":"String","DisplayName":"String","DisableLogin":"String","RecurringInvoiceSettings":{"DonationAmount":"String"},"FormFields":[{"Name":"String","Value":"String"}],"Attributes":[{"Name":"String","Value":"String"}],"GroupList":[{"GroupId":"String"}]},"InvoiceCollection":[{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"GroupId":"String","UserId":"String","OpportunityId":"String","InvoiceDueDate":"0001-01-01T00:00:00.0000000","Installments":0,"Frequency":0,"BhUserId":0,"Description":"String","Deliver":false,"CurrencyType":"String","InvoiceItems":[{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"ProductName":"String","AmountDue":"String","ProductType":"String","ActPatternTypeId":0,"TermStartDate":"0001-01-01T00:00:00.0000000","TermEndDate":"0001-01-01T00:00:00.0000000","RecognitionPeriod":0,"RevenueAccount":"String","AccountsReceivableAccount":"String","LiabilityAccount":"String","CreditExpenseAccount":"String","InvoiceClearingAccount":"String","CostCenter":"String","Region":"String"}],"InvoiceNo":0,"InvoiceAmt":0,"ExternalInvBatchNo":"String","ExemptFromLateFee":false}],"CcPaymentInfo":{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"GroupId":"String","UserId":"String","BhUserId":0,"Amount":"String","AutoPay":false,"CurrencyType":"String","Country":"String","CardReferenceOrCardNumber":"String","StoreCardInfo":false,"Address1":"String","Address2":"String","BillingCity":"String","BillingState":"String","PreferredEmailAddress":"String","Memo":"String","OpportunityId":"String","ExpMonth":0,"ExpYear":0,"Cvv":"String","PostalCode":"String","Location":"String","NameOnCard":"String","CardType":"String","InvoiceList":[{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"Invoice":0,"AmountPaid":"String"}]},"CreditInfo":{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"GroupId":"String","UserId":"String","BhUserId":0,"CreditId":0,"CurrencyType":"String","CreditType":"String","Notes":"String","InvoiceDetails":[{"Invoice":0,"AmountPaid":0,"Region":"String","CostCenter":"String"}]},"AchPaymentInfo":{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"GroupId":"String","UserId":"String","BhUserId":0,"Amount":0,"CurrencyType":"String","Country":"String","RoutingNumber":"String","AccountNumber":"String","AchReference":"String","AccountType":"String","IsSavingsAccount":false,"PayerName":"String","CheckNumber":"String","PreferredEmailAddress":"String","Memo":"String","InvoiceList":[{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"Invoice":0,"AmountPaid":"String"}],"AutoPay":false,"StoreAchInfo":false,"EncryptionTypeId":0},"LockboxId":0}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"BillhighwayPaymentConfirmationNumber":"String","BillhighwayUserId":0,"BhInvoiceBatchId":[0],"ChapMemPayid":0,"ErrorCode":0,"ErrorMessage":"String","IsError":true}