AIM Web Services

<back to all web services

SecurityRequest

Login Service

The following routes are available for this service:
POST/api/Security
POST/api/Security/{token}
import Foundation
import ServiceStack

/**
* Login Service
*/
// @DataContract
public class SecurityRequest : BaseRequest
{
    /**
    * Employee ID or Customer Email
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Employee ID or Customer Email", IsRequired=true, Name="Username", ParameterType="query")
    public var username:String

    /**
    * Existing Token
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Existing Token", Name="Token", ParameterType="query")
    public var token:String

    /**
    * Password of Employee or User
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Password of Employee or User", IsRequired=true, Name="Password", ParameterType="query")
    public var password:String

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

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

    /**
    * 
    */
    // @DataMember(Name="Acct")
    // @ApiMember(DataType="int", Description="", Name="Acct", ParameterType="query")
    public var Acct:Int?

    /**
    * 
    */
    // @DataMember(Name="DeviceName")
    // @ApiMember(DataType="string", Description="", Name="DeviceName", ParameterType="query")
    public var DeviceName:String

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

    private enum CodingKeys : String, CodingKey {
        case username
        case token
        case password
        case DeviceID
        case AppID
        case Acct
        case DeviceName
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        username = try container.decodeIfPresent(String.self, forKey: .username)
        token = try container.decodeIfPresent(String.self, forKey: .token)
        password = try container.decodeIfPresent(String.self, forKey: .password)
        DeviceID = try container.decodeIfPresent(String.self, forKey: .DeviceID)
        AppID = try container.decodeIfPresent(String.self, forKey: .AppID)
        Acct = try container.decodeIfPresent(Int.self, forKey: .Acct)
        DeviceName = try container.decodeIfPresent(String.self, forKey: .DeviceName)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if username != nil { try container.encode(username, forKey: .username) }
        if token != nil { try container.encode(token, forKey: .token) }
        if password != nil { try container.encode(password, forKey: .password) }
        if DeviceID != nil { try container.encode(DeviceID, forKey: .DeviceID) }
        if AppID != nil { try container.encode(AppID, forKey: .AppID) }
        if Acct != nil { try container.encode(Acct, forKey: .Acct) }
        if DeviceName != nil { try container.encode(DeviceName, forKey: .DeviceName) }
    }
}

// @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 SecurityResponse : BaseResponse
{
    // @DataMember
    public var token:String

    // @DataMember
    public var oAuthToken:String

    // @DataMember
    public var domain:String

    // @DataMember
    public var isAdmin:Bool

    // @DataMember
    public var userDetails:UserDetail

    // @DataMember
    public var accountDetails:[AccountDetail] = []

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

    private enum CodingKeys : String, CodingKey {
        case token
        case oAuthToken
        case domain
        case isAdmin
        case userDetails
        case accountDetails
    }

    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)
        oAuthToken = try container.decodeIfPresent(String.self, forKey: .oAuthToken)
        domain = try container.decodeIfPresent(String.self, forKey: .domain)
        isAdmin = try container.decodeIfPresent(Bool.self, forKey: .isAdmin)
        userDetails = try container.decodeIfPresent(UserDetail.self, forKey: .userDetails)
        accountDetails = try container.decodeIfPresent([AccountDetail].self, forKey: .accountDetails) ?? []
    }

    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 oAuthToken != nil { try container.encode(oAuthToken, forKey: .oAuthToken) }
        if domain != nil { try container.encode(domain, forKey: .domain) }
        if isAdmin != nil { try container.encode(isAdmin, forKey: .isAdmin) }
        if userDetails != nil { try container.encode(userDetails, forKey: .userDetails) }
        if accountDetails.count > 0 { try container.encode(accountDetails, forKey: .accountDetails) }
    }
}

// @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 UserDetail : Codable
{
    // @DataMember
    public var firstname:String

    // @DataMember
    public var lastName:String

    // @DataMember
    public var email:String

    // @DataMember
    public var type:String

    // @DataMember
    public var location:String

    // @DataMember
    public var locationName:String

    // @DataMember
    public var accountNumber:Int?

    // @DataMember
    public var taxAuthority:String

    // @DataMember
    public var taxAuthorityName:String

    required public init(){}
}

// @DataContract
public class AccountDetail : Codable
{
    // @DataMember
    public var acct:Int

    // @DataMember
    public var acctType:String

    // @DataMember
    public var name:String

    required public init(){}
}


Swift SecurityRequest 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/Security HTTP/1.1 
Host: active-ewebservice.biz 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"Username":"String","Token":"String","Password":"String","DeviceID":"String","AppID":"String","Acct":0,"DeviceName":"String","ApiKey":"String","OAuthToken":"String"}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"Token":"String","OAuthToken":"String","Domain":"String","IsAdmin":false,"UserDetails":{"Firstname":"String","LastName":"String","Email":"String","Type":"String","Location":"String","LocationName":"String","AccountNumber":0,"TaxAuthority":"String","TaxAuthorityName":"String"},"AccountDetails":[{"Acct":0,"AcctType":"String","Name":"String"}],"Status":{"StatusCode":"String","Login":"String","ErrorCode":"String","ErrorDisplayText":"String","ErrorMessage":"String","DomainName":"String","IpAddress":"String"}}