AIM Web Services

<back to all web services

GetContractDetailsRequest

GetContractDetails
Requires active-e Contracts Service or active-e Customer Service

The following routes are available for this service:
POST, GET/api/GetContractDetails
import Foundation
import ServiceStack

/**
* GetContractDetailsRequires active-e Contracts Service or active-e Customer Service
*/
// @DataContract
public class GetContractDetailsRequest : BaseSecureRequest
{
    // @DataMember
    public var ref:String

    // @DataMember
    public var sub:Int?

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

    private enum CodingKeys : String, CodingKey {
        case ref
        case sub
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        ref = try container.decodeIfPresent(String.self, forKey: .ref)
        sub = try container.decodeIfPresent(Int.self, forKey: .sub)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if ref != nil { try container.encode(ref, forKey: .ref) }
        if sub != nil { try container.encode(sub, forKey: .sub) }
    }
}

// @DataContract
public class BaseSecureRequest : BaseRequest
{
    /**
    * 
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="", Name="Token", ParameterType="Header")
    public var token:String

    /**
    * 
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="", Name="DeviceId", ParameterType="Header")
    public var deviceId:String

    /**
    * 
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="", IsRequired=true, Name="AppId", ParameterType="Header")
    public var appId:String

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

    private enum CodingKeys : String, CodingKey {
        case token
        case deviceId
        case appId
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        token = try container.decodeIfPresent(String.self, forKey: .token)
        deviceId = try container.decodeIfPresent(String.self, forKey: .deviceId)
        appId = try container.decodeIfPresent(String.self, forKey: .appId)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if token != nil { try container.encode(token, forKey: .token) }
        if deviceId != nil { try container.encode(deviceId, forKey: .deviceId) }
        if appId != nil { try container.encode(appId, forKey: .appId) }
    }
}

// @DataContract
public class BaseRequest : Codable
{
    /**
    * This is your AIM API Key provided by Tri-Tech
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="This is your AIM API Key provided by Tri-Tech", IsRequired=true, Name="ApiKey", ParameterType="header")
    public var apiKey:String

    // @DataMember
    // @ApiMember(DataType="string", Name="OAuthToken", ParameterType="header")
    public var oAuthToken:String

    required public init(){}
}

// @DataContract
public class GetContractDetailsResponse : BaseResponse
{
    // @DataMember
    public var accountSub:String

    // @DataMember
    public var nextDueDate:Date

    // @DataMember
    public var paymentAmount:Double

    // @DataMember
    public var pastDueAmount:Double

    // @DataMember
    public var lateCharges:Double

    // @DataMember
    public var otherCharges:Double

    // @DataMember
    public var totalDue:Double

    // @DataMember
    public var accumulatedCredit:Double

    // @DataMember
    public var studentName:String

    // @DataMember
    public var schoolName:String

    // @DataMember
    public var topic:String

    // @DataMember
    public var inventory:[InventoryGeneric] = []

    // @DataMember
    public var payments:[PaymentGeneric] = []

    // @DataMember
    public var paymentAmt:Double

    // @DataMember
    public var pastDueAmt:Double

    // @DataMember
    public var currentBalance:Double

    // @DataMember
    public var totalPayoff:Double

    // @DataMember
    public var discountedPayoff:Double?

    // @DataMember
    public var payoffDate:Date

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

    private enum CodingKeys : String, CodingKey {
        case accountSub
        case nextDueDate
        case paymentAmount
        case pastDueAmount
        case lateCharges
        case otherCharges
        case totalDue
        case accumulatedCredit
        case studentName
        case schoolName
        case topic
        case inventory
        case payments
        case paymentAmt
        case pastDueAmt
        case currentBalance
        case totalPayoff
        case discountedPayoff
        case payoffDate
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        accountSub = try container.decodeIfPresent(String.self, forKey: .accountSub)
        nextDueDate = try container.decodeIfPresent(Date.self, forKey: .nextDueDate)
        paymentAmount = try container.decodeIfPresent(Double.self, forKey: .paymentAmount)
        pastDueAmount = try container.decodeIfPresent(Double.self, forKey: .pastDueAmount)
        lateCharges = try container.decodeIfPresent(Double.self, forKey: .lateCharges)
        otherCharges = try container.decodeIfPresent(Double.self, forKey: .otherCharges)
        totalDue = try container.decodeIfPresent(Double.self, forKey: .totalDue)
        accumulatedCredit = try container.decodeIfPresent(Double.self, forKey: .accumulatedCredit)
        studentName = try container.decodeIfPresent(String.self, forKey: .studentName)
        schoolName = try container.decodeIfPresent(String.self, forKey: .schoolName)
        topic = try container.decodeIfPresent(String.self, forKey: .topic)
        inventory = try container.decodeIfPresent([InventoryGeneric].self, forKey: .inventory) ?? []
        payments = try container.decodeIfPresent([PaymentGeneric].self, forKey: .payments) ?? []
        paymentAmt = try container.decodeIfPresent(Double.self, forKey: .paymentAmt)
        pastDueAmt = try container.decodeIfPresent(Double.self, forKey: .pastDueAmt)
        currentBalance = try container.decodeIfPresent(Double.self, forKey: .currentBalance)
        totalPayoff = try container.decodeIfPresent(Double.self, forKey: .totalPayoff)
        discountedPayoff = try container.decodeIfPresent(Double.self, forKey: .discountedPayoff)
        payoffDate = try container.decodeIfPresent(Date.self, forKey: .payoffDate)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if accountSub != nil { try container.encode(accountSub, forKey: .accountSub) }
        if nextDueDate != nil { try container.encode(nextDueDate, forKey: .nextDueDate) }
        if paymentAmount != nil { try container.encode(paymentAmount, forKey: .paymentAmount) }
        if pastDueAmount != nil { try container.encode(pastDueAmount, forKey: .pastDueAmount) }
        if lateCharges != nil { try container.encode(lateCharges, forKey: .lateCharges) }
        if otherCharges != nil { try container.encode(otherCharges, forKey: .otherCharges) }
        if totalDue != nil { try container.encode(totalDue, forKey: .totalDue) }
        if accumulatedCredit != nil { try container.encode(accumulatedCredit, forKey: .accumulatedCredit) }
        if studentName != nil { try container.encode(studentName, forKey: .studentName) }
        if schoolName != nil { try container.encode(schoolName, forKey: .schoolName) }
        if topic != nil { try container.encode(topic, forKey: .topic) }
        if inventory.count > 0 { try container.encode(inventory, forKey: .inventory) }
        if payments.count > 0 { try container.encode(payments, forKey: .payments) }
        if paymentAmt != nil { try container.encode(paymentAmt, forKey: .paymentAmt) }
        if pastDueAmt != nil { try container.encode(pastDueAmt, forKey: .pastDueAmt) }
        if currentBalance != nil { try container.encode(currentBalance, forKey: .currentBalance) }
        if totalPayoff != nil { try container.encode(totalPayoff, forKey: .totalPayoff) }
        if discountedPayoff != nil { try container.encode(discountedPayoff, forKey: .discountedPayoff) }
        if payoffDate != nil { try container.encode(payoffDate, forKey: .payoffDate) }
    }
}

// @DataContract
public class BaseResponse : Codable
{
    /**
    * 
    */
    // @DataMember
    // @ApiMember(DataType="BaseResponseResult", Description="", Name="Status", ParameterType="body")
    public var status:BaseResponseResult

    required public init(){}
}

// @DataContract
public class BaseResponseResult : Codable
{
    /**
    * 
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="", Name="StatusCode", ParameterType="body")
    public var statusCode:String

    /**
    * 
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="", Name="Login", ParameterType="body")
    public var login:String

    /**
    * 
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="", Name="ErrorCode", ParameterType="body")
    public var errorCode:String

    /**
    * 
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="", Name="ErrorDisplayText", ParameterType="body")
    public var errorDisplayText:String

    /**
    * 
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="", Name="ErrorMessage", ParameterType="body")
    public var errorMessage:String

    /**
    * 
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="", ExcludeInSchema=true, Name="DomainName", ParameterType="body")
    public var domainName:String

    /**
    * 
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="", ExcludeInSchema=true, Name="IPAddress", ParameterType="body")
    public var ipAddress:String

    required public init(){}
}

// @DataContract
public class InventoryGeneric : Codable
{
    // @DataMember
    public var model:String

    // @DataMember
    public var item:String

    // @DataMember
    public var sku:String

    // @DataMember
    public var serial:String

    // @DataMember
    public var desc:String

    // @DataMember
    public var mfg:String

    required public init(){}
}

// @DataContract
public class PaymentGeneric : Codable
{
    // @DataMember
    public var date:Date

    // @DataMember
    public var amount:Double

    // @DataMember
    public var ref:String

    required public init(){}
}


Swift GetContractDetailsRequest DTOs

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

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

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

POST /api/GetContractDetails HTTP/1.1 
Host: active-ewebservice.biz 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"Ref":"String","Sub":0,"Token":"String","DeviceId":"String","AppId":"String","ApiKey":"String","OAuthToken":"String"}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"AccountSub":"String","PaymentAmount":0,"PastDueAmount":0,"LateCharges":0,"OtherCharges":0,"TotalDue":0,"AccumulatedCredit":0,"StudentName":"String","SchoolName":"String","Topic":"String","Inventory":[{"Model":"String","Item":"String","Sku":"String","Serial":"String","Desc":"String","Mfg":"String"}],"Payments":[{"Amount":0,"Ref":"String"}],"PaymentAmt":0,"PastDueAmt":0,"CurrentBalance":0,"TotalPayoff":0,"DiscountedPayoff":0,"Status":{"StatusCode":"String","Login":"String","ErrorCode":"String","ErrorDisplayText":"String","ErrorMessage":"String","DomainName":"String","IpAddress":"String"}}