Billiecart API

<back to all web services

ForecastRequest

Requires Authentication
Requires the role:manager
The following routes are available for this service:
PUT/packages/{id}/forecast
import 'package:servicestack/servicestack.dart';

abstract class PutOperationUnTenanted<TResponse> implements IPut
{
    PutOperationUnTenanted();
    PutOperationUnTenanted.fromJson(Map<String, dynamic> json) : super();
    fromMap(Map<String, dynamic> json) {
        return this;
    }

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

abstract class PutOperationTenanted<TResponse> extends PutOperationUnTenanted<TResponse> implements ITenantedRequest
{
    String? organisationId;

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

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

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

    getTypeName() => "PutOperationTenanted<$TResponse>";
    TypeContext? context = _ctx;
}

class BudgetBreakdown implements IConvertible
{
    double? leaseAmount;
    double? administrationFee;
    double? fuel;
    double? servicing;
    double? tyres;
    double? insurance;
    double? carWash;
    double? registration;
    double? roadSideAssistance;
    double? anythingExtra;

    BudgetBreakdown({this.leaseAmount,this.administrationFee,this.fuel,this.servicing,this.tyres,this.insurance,this.carWash,this.registration,this.roadSideAssistance,this.anythingExtra});
    BudgetBreakdown.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        leaseAmount = JsonConverters.toDouble(json['leaseAmount']);
        administrationFee = JsonConverters.toDouble(json['administrationFee']);
        fuel = JsonConverters.toDouble(json['fuel']);
        servicing = JsonConverters.toDouble(json['servicing']);
        tyres = JsonConverters.toDouble(json['tyres']);
        insurance = JsonConverters.toDouble(json['insurance']);
        carWash = JsonConverters.toDouble(json['carWash']);
        registration = JsonConverters.toDouble(json['registration']);
        roadSideAssistance = JsonConverters.toDouble(json['roadSideAssistance']);
        anythingExtra = JsonConverters.toDouble(json['anythingExtra']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'leaseAmount': leaseAmount,
        'administrationFee': administrationFee,
        'fuel': fuel,
        'servicing': servicing,
        'tyres': tyres,
        'insurance': insurance,
        'carWash': carWash,
        'registration': registration,
        'roadSideAssistance': roadSideAssistance,
        'anythingExtra': anythingExtra
    };

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

class Employment implements IConvertible
{
    String? payrollCycle;
    DateTime? firstPayDate;
    String? employerId;
    String? employerName;

    Employment({this.payrollCycle,this.firstPayDate,this.employerId,this.employerName});
    Employment.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        payrollCycle = json['payrollCycle'];
        firstPayDate = JsonConverters.fromJson(json['firstPayDate'],'DateTime',context!);
        employerId = json['employerId'];
        employerName = json['employerName'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'payrollCycle': payrollCycle,
        'firstPayDate': JsonConverters.toJson(firstPayDate,'DateTime',context!),
        'employerId': employerId,
        'employerName': employerName
    };

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

class Vehicle implements IConvertible
{
    String? make;
    String? model;
    String? colour;
    String? bodyShape;
    String? licensePlate;
    String? transmission;
    int? manufactureYear;

    Vehicle({this.make,this.model,this.colour,this.bodyShape,this.licensePlate,this.transmission,this.manufactureYear});
    Vehicle.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        make = json['make'];
        model = json['model'];
        colour = json['colour'];
        bodyShape = json['bodyShape'];
        licensePlate = json['licensePlate'];
        transmission = json['transmission'];
        manufactureYear = json['manufactureYear'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'make': make,
        'model': model,
        'colour': colour,
        'bodyShape': bodyShape,
        'licensePlate': licensePlate,
        'transmission': transmission,
        'manufactureYear': manufactureYear
    };

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

class BankAccount implements IConvertible
{
    String? bsbNumber;
    String? accountNumber;

    BankAccount({this.bsbNumber,this.accountNumber});
    BankAccount.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

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

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

class LeaseDetails implements IConvertible
{
    int? term;
    DateTime? startDate;
    double? amountFinanced;
    double? paymentAmount;
    String? financeProvider;
    double? residualValue;
    int? yearlyKmsTravelled;
    double? fringeBenefitTaxValue;
    String? fringeBenefitTaxMethod;
    int? fringeBenefitTaxBusinessUse;
    DateTime? fringeBenefitTaxStartDate;
    double? preTaxDeduction;
    double? postTaxDeduction;
    double? gstOnPostTaxDeduction;
    double? luxuryVehicleCharge;
    double? onRoadCost;
    DateTime? registrationDueDate;
    DateTime? insuranceDueDate;
    BankAccount? leaseProviderBankAccount;

    LeaseDetails({this.term,this.startDate,this.amountFinanced,this.paymentAmount,this.financeProvider,this.residualValue,this.yearlyKmsTravelled,this.fringeBenefitTaxValue,this.fringeBenefitTaxMethod,this.fringeBenefitTaxBusinessUse,this.fringeBenefitTaxStartDate,this.preTaxDeduction,this.postTaxDeduction,this.gstOnPostTaxDeduction,this.luxuryVehicleCharge,this.onRoadCost,this.registrationDueDate,this.insuranceDueDate,this.leaseProviderBankAccount});
    LeaseDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        term = json['term'];
        startDate = JsonConverters.fromJson(json['startDate'],'DateTime',context!);
        amountFinanced = JsonConverters.toDouble(json['amountFinanced']);
        paymentAmount = JsonConverters.toDouble(json['paymentAmount']);
        financeProvider = json['financeProvider'];
        residualValue = JsonConverters.toDouble(json['residualValue']);
        yearlyKmsTravelled = json['yearlyKmsTravelled'];
        fringeBenefitTaxValue = JsonConverters.toDouble(json['fringeBenefitTaxValue']);
        fringeBenefitTaxMethod = json['fringeBenefitTaxMethod'];
        fringeBenefitTaxBusinessUse = json['fringeBenefitTaxBusinessUse'];
        fringeBenefitTaxStartDate = JsonConverters.fromJson(json['fringeBenefitTaxStartDate'],'DateTime',context!);
        preTaxDeduction = JsonConverters.toDouble(json['preTaxDeduction']);
        postTaxDeduction = JsonConverters.toDouble(json['postTaxDeduction']);
        gstOnPostTaxDeduction = JsonConverters.toDouble(json['gstOnPostTaxDeduction']);
        luxuryVehicleCharge = JsonConverters.toDouble(json['luxuryVehicleCharge']);
        onRoadCost = JsonConverters.toDouble(json['onRoadCost']);
        registrationDueDate = JsonConverters.fromJson(json['registrationDueDate'],'DateTime',context!);
        insuranceDueDate = JsonConverters.fromJson(json['insuranceDueDate'],'DateTime',context!);
        leaseProviderBankAccount = JsonConverters.fromJson(json['leaseProviderBankAccount'],'BankAccount',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'term': term,
        'startDate': JsonConverters.toJson(startDate,'DateTime',context!),
        'amountFinanced': amountFinanced,
        'paymentAmount': paymentAmount,
        'financeProvider': financeProvider,
        'residualValue': residualValue,
        'yearlyKmsTravelled': yearlyKmsTravelled,
        'fringeBenefitTaxValue': fringeBenefitTaxValue,
        'fringeBenefitTaxMethod': fringeBenefitTaxMethod,
        'fringeBenefitTaxBusinessUse': fringeBenefitTaxBusinessUse,
        'fringeBenefitTaxStartDate': JsonConverters.toJson(fringeBenefitTaxStartDate,'DateTime',context!),
        'preTaxDeduction': preTaxDeduction,
        'postTaxDeduction': postTaxDeduction,
        'gstOnPostTaxDeduction': gstOnPostTaxDeduction,
        'luxuryVehicleCharge': luxuryVehicleCharge,
        'onRoadCost': onRoadCost,
        'registrationDueDate': JsonConverters.toJson(registrationDueDate,'DateTime',context!),
        'insuranceDueDate': JsonConverters.toJson(insuranceDueDate,'DateTime',context!),
        'leaseProviderBankAccount': JsonConverters.toJson(leaseProviderBankAccount,'BankAccount',context!)
    };

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

class BudgetBalances implements IConvertible
{
    double? leaseAmount;
    double? administrationFee;
    double? fuel;
    double? servicing;
    double? tyres;
    double? insurance;
    double? carWash;
    double? registration;
    double? roadSideAssistance;
    double? anythingExtra;

    BudgetBalances({this.leaseAmount,this.administrationFee,this.fuel,this.servicing,this.tyres,this.insurance,this.carWash,this.registration,this.roadSideAssistance,this.anythingExtra});
    BudgetBalances.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        leaseAmount = JsonConverters.toDouble(json['leaseAmount']);
        administrationFee = JsonConverters.toDouble(json['administrationFee']);
        fuel = JsonConverters.toDouble(json['fuel']);
        servicing = JsonConverters.toDouble(json['servicing']);
        tyres = JsonConverters.toDouble(json['tyres']);
        insurance = JsonConverters.toDouble(json['insurance']);
        carWash = JsonConverters.toDouble(json['carWash']);
        registration = JsonConverters.toDouble(json['registration']);
        roadSideAssistance = JsonConverters.toDouble(json['roadSideAssistance']);
        anythingExtra = JsonConverters.toDouble(json['anythingExtra']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'leaseAmount': leaseAmount,
        'administrationFee': administrationFee,
        'fuel': fuel,
        'servicing': servicing,
        'tyres': tyres,
        'insurance': insurance,
        'carWash': carWash,
        'registration': registration,
        'roadSideAssistance': roadSideAssistance,
        'anythingExtra': anythingExtra
    };

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

class SalarySacrificeBreakdown implements IConvertible
{
    double? leaseAmount;
    double? administrationFee;
    double? fuel;
    double? servicing;
    double? tyres;
    double? insurance;
    double? carWash;
    double? registration;
    double? roadSideAssistance;
    double? anythingExtra;

    SalarySacrificeBreakdown({this.leaseAmount,this.administrationFee,this.fuel,this.servicing,this.tyres,this.insurance,this.carWash,this.registration,this.roadSideAssistance,this.anythingExtra});
    SalarySacrificeBreakdown.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        leaseAmount = JsonConverters.toDouble(json['leaseAmount']);
        administrationFee = JsonConverters.toDouble(json['administrationFee']);
        fuel = JsonConverters.toDouble(json['fuel']);
        servicing = JsonConverters.toDouble(json['servicing']);
        tyres = JsonConverters.toDouble(json['tyres']);
        insurance = JsonConverters.toDouble(json['insurance']);
        carWash = JsonConverters.toDouble(json['carWash']);
        registration = JsonConverters.toDouble(json['registration']);
        roadSideAssistance = JsonConverters.toDouble(json['roadSideAssistance']);
        anythingExtra = JsonConverters.toDouble(json['anythingExtra']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'leaseAmount': leaseAmount,
        'administrationFee': administrationFee,
        'fuel': fuel,
        'servicing': servicing,
        'tyres': tyres,
        'insurance': insurance,
        'carWash': carWash,
        'registration': registration,
        'roadSideAssistance': roadSideAssistance,
        'anythingExtra': anythingExtra
    };

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

class SalarySacrifice implements IConvertible
{
    DateTime? paymentDate;
    SalarySacrificeBreakdown? salarySacrificeBreakdown;
    double? preTaxDeduction;
    double? postTaxDeduction;
    String? contributionId;

    SalarySacrifice({this.paymentDate,this.salarySacrificeBreakdown,this.preTaxDeduction,this.postTaxDeduction,this.contributionId});
    SalarySacrifice.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        paymentDate = JsonConverters.fromJson(json['paymentDate'],'DateTime',context!);
        salarySacrificeBreakdown = JsonConverters.fromJson(json['salarySacrificeBreakdown'],'SalarySacrificeBreakdown',context!);
        preTaxDeduction = JsonConverters.toDouble(json['preTaxDeduction']);
        postTaxDeduction = JsonConverters.toDouble(json['postTaxDeduction']);
        contributionId = json['contributionId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'paymentDate': JsonConverters.toJson(paymentDate,'DateTime',context!),
        'salarySacrificeBreakdown': JsonConverters.toJson(salarySacrificeBreakdown,'SalarySacrificeBreakdown',context!),
        'preTaxDeduction': preTaxDeduction,
        'postTaxDeduction': postTaxDeduction,
        'contributionId': contributionId
    };

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

class ForecastedSalarySacrifice implements IConvertible
{
    DateTime? paymentDate;
    double? amount;
    SalarySacrifice? matched;

    ForecastedSalarySacrifice({this.paymentDate,this.amount,this.matched});
    ForecastedSalarySacrifice.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        paymentDate = JsonConverters.fromJson(json['paymentDate'],'DateTime',context!);
        amount = JsonConverters.toDouble(json['amount']);
        matched = JsonConverters.fromJson(json['matched'],'SalarySacrifice',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'paymentDate': JsonConverters.toJson(paymentDate,'DateTime',context!),
        'amount': amount,
        'matched': JsonConverters.toJson(matched,'SalarySacrifice',context!)
    };

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

class Expense implements IConvertible
{
    String? budgetCategory;
    double? amount;
    double? gst;

    Expense({this.budgetCategory,this.amount,this.gst});
    Expense.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

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

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

class ForecastedOutgoingPayment implements IConvertible
{
    DateTime? scheduled;
    double? amount;
    String? budgetCategory;
    Expense? matched;

    ForecastedOutgoingPayment({this.scheduled,this.amount,this.budgetCategory,this.matched});
    ForecastedOutgoingPayment.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        scheduled = JsonConverters.fromJson(json['scheduled'],'DateTime',context!);
        amount = JsonConverters.toDouble(json['amount']);
        budgetCategory = json['budgetCategory'];
        matched = JsonConverters.fromJson(json['matched'],'Expense',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'scheduled': JsonConverters.toJson(scheduled,'DateTime',context!),
        'amount': amount,
        'budgetCategory': budgetCategory,
        'matched': JsonConverters.toJson(matched,'Expense',context!)
    };

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

class Adjustment implements IIdentifiableResource, IConvertible
{
    String? budgetCategory;
    double? amount;
    double? gst;
    String? description;
    DateTime? received;
    String? id;

    Adjustment({this.budgetCategory,this.amount,this.gst,this.description,this.received,this.id});
    Adjustment.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        budgetCategory = json['budgetCategory'];
        amount = JsonConverters.toDouble(json['amount']);
        gst = JsonConverters.toDouble(json['gst']);
        description = json['description'];
        received = JsonConverters.fromJson(json['received'],'DateTime',context!);
        id = json['id'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'budgetCategory': budgetCategory,
        'amount': amount,
        'gst': gst,
        'description': description,
        'received': JsonConverters.toJson(received,'DateTime',context!),
        'id': id
    };

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

class Transaction implements IConvertible
{
    DateTime? received;
    String? budgetCategory;
    double? amount;
    double? gst;
    String? description;
    String? type;

    Transaction({this.received,this.budgetCategory,this.amount,this.gst,this.description,this.type});
    Transaction.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        received = JsonConverters.fromJson(json['received'],'DateTime',context!);
        budgetCategory = json['budgetCategory'];
        amount = JsonConverters.toDouble(json['amount']);
        gst = JsonConverters.toDouble(json['gst']);
        description = json['description'];
        type = json['type'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'received': JsonConverters.toJson(received,'DateTime',context!),
        'budgetCategory': budgetCategory,
        'amount': amount,
        'gst': gst,
        'description': description,
        'type': type
    };

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

class SalaryPackage implements IIdentifiableResource, IConvertible
{
    String? customerId;
    String? customerFirstName;
    String? customerLastName;
    String? status;
    String? notes;
    BudgetBreakdown? budgetBreakdown;
    Employment? employment;
    Vehicle? vehicle;
    LeaseDetails? leaseDetails;
    BudgetBalances? budgetBalances;
    double? currentBalance;
    List<ForecastedSalarySacrifice>? forecastedSalarySacrifices;
    List<ForecastedOutgoingPayment>? forecastedOutgoingPayments;
    List<Adjustment>? adjustments;
    List<Transaction>? transactions;
    String? id;

    SalaryPackage({this.customerId,this.customerFirstName,this.customerLastName,this.status,this.notes,this.budgetBreakdown,this.employment,this.vehicle,this.leaseDetails,this.budgetBalances,this.currentBalance,this.forecastedSalarySacrifices,this.forecastedOutgoingPayments,this.adjustments,this.transactions,this.id});
    SalaryPackage.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        customerId = json['customerId'];
        customerFirstName = json['customerFirstName'];
        customerLastName = json['customerLastName'];
        status = json['status'];
        notes = json['notes'];
        budgetBreakdown = JsonConverters.fromJson(json['budgetBreakdown'],'BudgetBreakdown',context!);
        employment = JsonConverters.fromJson(json['employment'],'Employment',context!);
        vehicle = JsonConverters.fromJson(json['vehicle'],'Vehicle',context!);
        leaseDetails = JsonConverters.fromJson(json['leaseDetails'],'LeaseDetails',context!);
        budgetBalances = JsonConverters.fromJson(json['budgetBalances'],'BudgetBalances',context!);
        currentBalance = JsonConverters.toDouble(json['currentBalance']);
        forecastedSalarySacrifices = JsonConverters.fromJson(json['forecastedSalarySacrifices'],'List<ForecastedSalarySacrifice>',context!);
        forecastedOutgoingPayments = JsonConverters.fromJson(json['forecastedOutgoingPayments'],'List<ForecastedOutgoingPayment>',context!);
        adjustments = JsonConverters.fromJson(json['adjustments'],'List<Adjustment>',context!);
        transactions = JsonConverters.fromJson(json['transactions'],'List<Transaction>',context!);
        id = json['id'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'customerId': customerId,
        'customerFirstName': customerFirstName,
        'customerLastName': customerLastName,
        'status': status,
        'notes': notes,
        'budgetBreakdown': JsonConverters.toJson(budgetBreakdown,'BudgetBreakdown',context!),
        'employment': JsonConverters.toJson(employment,'Employment',context!),
        'vehicle': JsonConverters.toJson(vehicle,'Vehicle',context!),
        'leaseDetails': JsonConverters.toJson(leaseDetails,'LeaseDetails',context!),
        'budgetBalances': JsonConverters.toJson(budgetBalances,'BudgetBalances',context!),
        'currentBalance': currentBalance,
        'forecastedSalarySacrifices': JsonConverters.toJson(forecastedSalarySacrifices,'List<ForecastedSalarySacrifice>',context!),
        'forecastedOutgoingPayments': JsonConverters.toJson(forecastedOutgoingPayments,'List<ForecastedOutgoingPayment>',context!),
        'adjustments': JsonConverters.toJson(adjustments,'List<Adjustment>',context!),
        'transactions': JsonConverters.toJson(transactions,'List<Transaction>',context!),
        'id': id
    };

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

class ForecastResponse implements IConvertible
{
    ResponseStatus? responseStatus;
    SalaryPackage? salaryPackage;

    ForecastResponse({this.responseStatus,this.salaryPackage});
    ForecastResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        responseStatus = JsonConverters.fromJson(json['responseStatus'],'ResponseStatus',context!);
        salaryPackage = JsonConverters.fromJson(json['salaryPackage'],'SalaryPackage',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'responseStatus': JsonConverters.toJson(responseStatus,'ResponseStatus',context!),
        'salaryPackage': JsonConverters.toJson(salaryPackage,'SalaryPackage',context!)
    };

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

class ForecastRequest extends PutOperationTenanted<ForecastResponse> implements IConvertible
{
    String? id;

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

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

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

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

TypeContext _ctx = TypeContext(library: 'staging_api.billiecart.com.au', types: <String, TypeInfo> {
    'PutOperationUnTenanted<TResponse>': TypeInfo(TypeOf.AbstractClass),
    'PutOperationTenanted<TResponse>': TypeInfo(TypeOf.AbstractClass),
    'BudgetBreakdown': TypeInfo(TypeOf.Class, create:() => BudgetBreakdown()),
    'Employment': TypeInfo(TypeOf.Class, create:() => Employment()),
    'Vehicle': TypeInfo(TypeOf.Class, create:() => Vehicle()),
    'BankAccount': TypeInfo(TypeOf.Class, create:() => BankAccount()),
    'LeaseDetails': TypeInfo(TypeOf.Class, create:() => LeaseDetails()),
    'BudgetBalances': TypeInfo(TypeOf.Class, create:() => BudgetBalances()),
    'SalarySacrificeBreakdown': TypeInfo(TypeOf.Class, create:() => SalarySacrificeBreakdown()),
    'SalarySacrifice': TypeInfo(TypeOf.Class, create:() => SalarySacrifice()),
    'ForecastedSalarySacrifice': TypeInfo(TypeOf.Class, create:() => ForecastedSalarySacrifice()),
    'Expense': TypeInfo(TypeOf.Class, create:() => Expense()),
    'ForecastedOutgoingPayment': TypeInfo(TypeOf.Class, create:() => ForecastedOutgoingPayment()),
    'Adjustment': TypeInfo(TypeOf.Class, create:() => Adjustment()),
    'Transaction': TypeInfo(TypeOf.Class, create:() => Transaction()),
    'SalaryPackage': TypeInfo(TypeOf.Class, create:() => SalaryPackage()),
    'List<ForecastedSalarySacrifice>': TypeInfo(TypeOf.Class, create:() => <ForecastedSalarySacrifice>[]),
    'List<ForecastedOutgoingPayment>': TypeInfo(TypeOf.Class, create:() => <ForecastedOutgoingPayment>[]),
    'List<Adjustment>': TypeInfo(TypeOf.Class, create:() => <Adjustment>[]),
    'List<Transaction>': TypeInfo(TypeOf.Class, create:() => <Transaction>[]),
    'ForecastResponse': TypeInfo(TypeOf.Class, create:() => ForecastResponse()),
    'ForecastRequest': TypeInfo(TypeOf.Class, create:() => ForecastRequest()),
});

Dart ForecastRequest DTOs

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

HTTP + XML

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

PUT /packages/{id}/forecast HTTP/1.1 
Host: staging-api.billiecart.com.au 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<ForecastRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Infrastructure.Api.Interfaces.ServiceOperations.SalaryPackages">
  <OrganisationId xmlns="http://schemas.datacontract.org/2004/07/Infrastructure.Api.Interfaces.ServiceOperations">String</OrganisationId>
  <Id>String</Id>
</ForecastRequest>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<ForecastResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Infrastructure.Api.Interfaces.ServiceOperations.SalaryPackages">
  <ResponseStatus xmlns:d2p1="http://schemas.servicestack.net/types">
    <d2p1:ErrorCode>String</d2p1:ErrorCode>
    <d2p1:Message>String</d2p1:Message>
    <d2p1:StackTrace>String</d2p1:StackTrace>
    <d2p1:Errors>
      <d2p1:ResponseError>
        <d2p1:ErrorCode>String</d2p1:ErrorCode>
        <d2p1:FieldName>String</d2p1:FieldName>
        <d2p1:Message>String</d2p1:Message>
        <d2p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
          <d5p1:KeyValueOfstringstring>
            <d5p1:Key>String</d5p1:Key>
            <d5p1:Value>String</d5p1:Value>
          </d5p1:KeyValueOfstringstring>
        </d2p1:Meta>
      </d2p1:ResponseError>
    </d2p1:Errors>
    <d2p1:Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:KeyValueOfstringstring>
        <d3p1:Key>String</d3p1:Key>
        <d3p1:Value>String</d3p1:Value>
      </d3p1:KeyValueOfstringstring>
    </d2p1:Meta>
  </ResponseStatus>
  <SalaryPackage xmlns:d2p1="http://schemas.datacontract.org/2004/07/Application.Interfaces.Resources">
    <d2p1:Adjustments>
      <d2p1:Adjustment>
        <d2p1:Amount>0</d2p1:Amount>
        <d2p1:BudgetCategory>String</d2p1:BudgetCategory>
        <d2p1:Description>String</d2p1:Description>
        <d2p1:Gst>0</d2p1:Gst>
        <d2p1:Id>String</d2p1:Id>
        <d2p1:Received>0001-01-01T00:00:00</d2p1:Received>
      </d2p1:Adjustment>
    </d2p1:Adjustments>
    <d2p1:BudgetBalances>
      <d2p1:AdministrationFee>0</d2p1:AdministrationFee>
      <d2p1:AnythingExtra>0</d2p1:AnythingExtra>
      <d2p1:CarWash>0</d2p1:CarWash>
      <d2p1:Fuel>0</d2p1:Fuel>
      <d2p1:Insurance>0</d2p1:Insurance>
      <d2p1:LeaseAmount>0</d2p1:LeaseAmount>
      <d2p1:Registration>0</d2p1:Registration>
      <d2p1:RoadSideAssistance>0</d2p1:RoadSideAssistance>
      <d2p1:Servicing>0</d2p1:Servicing>
      <d2p1:Tyres>0</d2p1:Tyres>
    </d2p1:BudgetBalances>
    <d2p1:BudgetBreakdown>
      <d2p1:AdministrationFee>0</d2p1:AdministrationFee>
      <d2p1:AnythingExtra>0</d2p1:AnythingExtra>
      <d2p1:CarWash>0</d2p1:CarWash>
      <d2p1:Fuel>0</d2p1:Fuel>
      <d2p1:Insurance>0</d2p1:Insurance>
      <d2p1:LeaseAmount>0</d2p1:LeaseAmount>
      <d2p1:Registration>0</d2p1:Registration>
      <d2p1:RoadSideAssistance>0</d2p1:RoadSideAssistance>
      <d2p1:Servicing>0</d2p1:Servicing>
      <d2p1:Tyres>0</d2p1:Tyres>
    </d2p1:BudgetBreakdown>
    <d2p1:CurrentBalance>0</d2p1:CurrentBalance>
    <d2p1:CustomerFirstName>String</d2p1:CustomerFirstName>
    <d2p1:CustomerId>String</d2p1:CustomerId>
    <d2p1:CustomerLastName>String</d2p1:CustomerLastName>
    <d2p1:Employment>
      <d2p1:EmployerId>String</d2p1:EmployerId>
      <d2p1:EmployerName>String</d2p1:EmployerName>
      <d2p1:FirstPayDate>0001-01-01T00:00:00</d2p1:FirstPayDate>
      <d2p1:PayrollCycle>String</d2p1:PayrollCycle>
    </d2p1:Employment>
    <d2p1:ForecastedOutgoingPayments>
      <d2p1:ForecastedOutgoingPayment>
        <d2p1:Amount>0</d2p1:Amount>
        <d2p1:BudgetCategory>String</d2p1:BudgetCategory>
        <d2p1:Matched>
          <d2p1:Amount>0</d2p1:Amount>
          <d2p1:BudgetCategory>String</d2p1:BudgetCategory>
          <d2p1:Gst>0</d2p1:Gst>
        </d2p1:Matched>
        <d2p1:Scheduled>0001-01-01T00:00:00</d2p1:Scheduled>
      </d2p1:ForecastedOutgoingPayment>
    </d2p1:ForecastedOutgoingPayments>
    <d2p1:ForecastedSalarySacrifices>
      <d2p1:ForecastedSalarySacrifice>
        <d2p1:Amount>0</d2p1:Amount>
        <d2p1:Matched>
          <d2p1:ContributionId>String</d2p1:ContributionId>
          <d2p1:PaymentDate>0001-01-01T00:00:00</d2p1:PaymentDate>
          <d2p1:PostTaxDeduction>0</d2p1:PostTaxDeduction>
          <d2p1:PreTaxDeduction>0</d2p1:PreTaxDeduction>
          <d2p1:SalarySacrificeBreakdown>
            <d2p1:AdministrationFee>0</d2p1:AdministrationFee>
            <d2p1:AnythingExtra>0</d2p1:AnythingExtra>
            <d2p1:CarWash>0</d2p1:CarWash>
            <d2p1:Fuel>0</d2p1:Fuel>
            <d2p1:Insurance>0</d2p1:Insurance>
            <d2p1:LeaseAmount>0</d2p1:LeaseAmount>
            <d2p1:Registration>0</d2p1:Registration>
            <d2p1:RoadSideAssistance>0</d2p1:RoadSideAssistance>
            <d2p1:Servicing>0</d2p1:Servicing>
            <d2p1:Tyres>0</d2p1:Tyres>
          </d2p1:SalarySacrificeBreakdown>
        </d2p1:Matched>
        <d2p1:PaymentDate>0001-01-01T00:00:00</d2p1:PaymentDate>
      </d2p1:ForecastedSalarySacrifice>
    </d2p1:ForecastedSalarySacrifices>
    <d2p1:Id>String</d2p1:Id>
    <d2p1:LeaseDetails>
      <d2p1:AmountFinanced>0</d2p1:AmountFinanced>
      <d2p1:FinanceProvider>String</d2p1:FinanceProvider>
      <d2p1:FringeBenefitTaxBusinessUse>0</d2p1:FringeBenefitTaxBusinessUse>
      <d2p1:FringeBenefitTaxMethod>String</d2p1:FringeBenefitTaxMethod>
      <d2p1:FringeBenefitTaxStartDate>0001-01-01T00:00:00</d2p1:FringeBenefitTaxStartDate>
      <d2p1:FringeBenefitTaxValue>0</d2p1:FringeBenefitTaxValue>
      <d2p1:GstOnPostTaxDeduction>0</d2p1:GstOnPostTaxDeduction>
      <d2p1:InsuranceDueDate>0001-01-01T00:00:00</d2p1:InsuranceDueDate>
      <d2p1:LeaseProviderBankAccount>
        <d2p1:AccountNumber>String</d2p1:AccountNumber>
        <d2p1:BsbNumber>String</d2p1:BsbNumber>
      </d2p1:LeaseProviderBankAccount>
      <d2p1:LuxuryVehicleCharge>0</d2p1:LuxuryVehicleCharge>
      <d2p1:OnRoadCost>0</d2p1:OnRoadCost>
      <d2p1:PaymentAmount>0</d2p1:PaymentAmount>
      <d2p1:PostTaxDeduction>0</d2p1:PostTaxDeduction>
      <d2p1:PreTaxDeduction>0</d2p1:PreTaxDeduction>
      <d2p1:RegistrationDueDate>0001-01-01T00:00:00</d2p1:RegistrationDueDate>
      <d2p1:ResidualValue>0</d2p1:ResidualValue>
      <d2p1:StartDate>0001-01-01T00:00:00</d2p1:StartDate>
      <d2p1:Term>0</d2p1:Term>
      <d2p1:YearlyKmsTravelled>0</d2p1:YearlyKmsTravelled>
    </d2p1:LeaseDetails>
    <d2p1:Notes>String</d2p1:Notes>
    <d2p1:Status>String</d2p1:Status>
    <d2p1:Transactions>
      <d2p1:Transaction>
        <d2p1:Amount>0</d2p1:Amount>
        <d2p1:BudgetCategory>String</d2p1:BudgetCategory>
        <d2p1:Description>String</d2p1:Description>
        <d2p1:Gst>0</d2p1:Gst>
        <d2p1:Received>0001-01-01T00:00:00</d2p1:Received>
        <d2p1:Type>String</d2p1:Type>
      </d2p1:Transaction>
    </d2p1:Transactions>
    <d2p1:Vehicle>
      <d2p1:BodyShape>String</d2p1:BodyShape>
      <d2p1:Colour>String</d2p1:Colour>
      <d2p1:LicensePlate>String</d2p1:LicensePlate>
      <d2p1:Make>String</d2p1:Make>
      <d2p1:ManufactureYear>0</d2p1:ManufactureYear>
      <d2p1:Model>String</d2p1:Model>
      <d2p1:Transmission>String</d2p1:Transmission>
    </d2p1:Vehicle>
  </SalaryPackage>
</ForecastResponse>