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
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"}}