AIM Web Services

<back to all web services

SubmitPOSTransactionRequest

In development, not yet for public use.

The following routes are available for this service:
POST/api/SubmitPOSTransaction
import Foundation
import ServiceStack

/**
* In development, not yet for public use.
*/
// @DataContract
public class SubmitPOSTransactionRequest : BaseSecureRequest
{
    // @DataMember
    public var acct:Int?

    // @DataMember
    public var locId:Int?

    // @DataMember
    public var taxId:Int?

    // @DataMember
    public var items:[PosLineItem] = []

    /**
    * Can be CARD, CARD_DEVICE, CASH, CHARGE, SUSPEND, ONFILE, or OTHER
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Can be CARD, CARD_DEVICE, CASH, CHARGE, SUSPEND, ONFILE, or OTHER", Name="TenderType", ParameterType="query")
    public var tenderType:String

    /**
    * Only applicable for Tender Type of OTHER. Send the Payment Category #
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Only applicable for Tender Type of OTHER. Send the Payment Category #", Name="OtherTenderCategory", ParameterType="query")
    public var otherTenderCategory:Int?

    // @DataMember
    public var cardToken:String

    // @DataMember
    public var cardExpiration:String

    // @DataMember
    public var tokenPk:Int?

    // @DataMember
    public var saveCard:Bool

    // @DataMember
    public var poNumber:String

    /**
    * Can be INVOICE, PROPOSAL, APPROVAL, ORDER, or LOANER. Defaults to INVOICE is not sent.
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Can be INVOICE, PROPOSAL, APPROVAL, ORDER, or LOANER. Defaults to INVOICE is not sent.", Name="TransactionMode", ParameterType="query")
    public var transactionMode:String

    /**
    * Only valid for Approvals and Orders.
    */
    // @DataMember
    // @ApiMember(DataType="decimal", Description="Only valid for Approvals and Orders.", Name="Deposit", ParameterType="query")
    public var deposit:Double

    // @DataMember
    public var notes:String

    /**
    * Do Not Send This Parameter
    */
    // @DataMember
    // @ApiMember(Description="Do Not Send This Parameter", Name="OnlineContractRef", ParameterType="query")
    public var onlineContractRef:String

    // @DataMember
    public var shipId:Int?

    // @DataMember
    public var cardTerminalId:String

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

    private enum CodingKeys : String, CodingKey {
        case acct
        case locId
        case taxId
        case items
        case tenderType
        case otherTenderCategory
        case cardToken
        case cardExpiration
        case tokenPk
        case saveCard
        case poNumber
        case transactionMode
        case deposit
        case notes
        case onlineContractRef
        case shipId
        case cardTerminalId
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        acct = try container.decodeIfPresent(Int.self, forKey: .acct)
        locId = try container.decodeIfPresent(Int.self, forKey: .locId)
        taxId = try container.decodeIfPresent(Int.self, forKey: .taxId)
        items = try container.decodeIfPresent([PosLineItem].self, forKey: .items) ?? []
        tenderType = try container.decodeIfPresent(String.self, forKey: .tenderType)
        otherTenderCategory = try container.decodeIfPresent(Int.self, forKey: .otherTenderCategory)
        cardToken = try container.decodeIfPresent(String.self, forKey: .cardToken)
        cardExpiration = try container.decodeIfPresent(String.self, forKey: .cardExpiration)
        tokenPk = try container.decodeIfPresent(Int.self, forKey: .tokenPk)
        saveCard = try container.decodeIfPresent(Bool.self, forKey: .saveCard)
        poNumber = try container.decodeIfPresent(String.self, forKey: .poNumber)
        transactionMode = try container.decodeIfPresent(String.self, forKey: .transactionMode)
        deposit = try container.decodeIfPresent(Double.self, forKey: .deposit)
        notes = try container.decodeIfPresent(String.self, forKey: .notes)
        onlineContractRef = try container.decodeIfPresent(String.self, forKey: .onlineContractRef)
        shipId = try container.decodeIfPresent(Int.self, forKey: .shipId)
        cardTerminalId = try container.decodeIfPresent(String.self, forKey: .cardTerminalId)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if acct != nil { try container.encode(acct, forKey: .acct) }
        if locId != nil { try container.encode(locId, forKey: .locId) }
        if taxId != nil { try container.encode(taxId, forKey: .taxId) }
        if items.count > 0 { try container.encode(items, forKey: .items) }
        if tenderType != nil { try container.encode(tenderType, forKey: .tenderType) }
        if otherTenderCategory != nil { try container.encode(otherTenderCategory, forKey: .otherTenderCategory) }
        if cardToken != nil { try container.encode(cardToken, forKey: .cardToken) }
        if cardExpiration != nil { try container.encode(cardExpiration, forKey: .cardExpiration) }
        if tokenPk != nil { try container.encode(tokenPk, forKey: .tokenPk) }
        if saveCard != nil { try container.encode(saveCard, forKey: .saveCard) }
        if poNumber != nil { try container.encode(poNumber, forKey: .poNumber) }
        if transactionMode != nil { try container.encode(transactionMode, forKey: .transactionMode) }
        if deposit != nil { try container.encode(deposit, forKey: .deposit) }
        if notes != nil { try container.encode(notes, forKey: .notes) }
        if onlineContractRef != nil { try container.encode(onlineContractRef, forKey: .onlineContractRef) }
        if shipId != nil { try container.encode(shipId, forKey: .shipId) }
        if cardTerminalId != nil { try container.encode(cardTerminalId, forKey: .cardTerminalId) }
    }
}

// @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 PosLineItem : IScanItem, Codable
{
    // @DataMember
    public var skuPk:Int?

    // @DataMember
    public var sasPk:Int?

    // @DataMember
    public var sku:String

    // @DataMember
    public var serial:String

    // @DataMember
    public var quantity:Double

    // @DataMember
    public var exceptionInfo:ExceptionInfo

    // @DataMember
    public var discount:Double?

    // @DataMember
    public var nicsCat:Int?

    // @DataMember
    public var nicsSub:Int?

    // @DataMember
    public var priceOverride:Double?

    // @DataMember
    public var allowPriceOverrideToIgnoreMinPrice:Bool

    // @DataMember
    public var notes:String

    required public init(){}
}

// @DataContract
public class ExceptionInfo : Codable
{
    // @DataMember
    public var barcode:String

    // @DataMember
    public var Description:String

    // @DataMember
    public var base64Image:String

    // @DataMember
    public var category:Int

    // @DataMember
    public var subCategory:Int?

    required public init(){}
}

// @DataContract
public class SubmitPOSTransactionResponse : BaseResponse
{
    // @DataMember
    public var refNumber:String

    // @DataMember
    public var errorItems:[PosResponseItem] = []

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

    private enum CodingKeys : String, CodingKey {
        case refNumber
        case errorItems
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        refNumber = try container.decodeIfPresent(String.self, forKey: .refNumber)
        errorItems = try container.decodeIfPresent([PosResponseItem].self, forKey: .errorItems) ?? []
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if refNumber != nil { try container.encode(refNumber, forKey: .refNumber) }
        if errorItems.count > 0 { try container.encode(errorItems, forKey: .errorItems) }
    }
}

// @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 PosResponseItem : PosLineItem
{
    // @DataMember
    public var priceEach:Double

    // @DataMember
    public var price:Double

    // @DataMember
    public var discountable:Bool

    // @DataMember
    public var errorMessage:String

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

    private enum CodingKeys : String, CodingKey {
        case priceEach
        case price
        case discountable
        case errorMessage
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        priceEach = try container.decodeIfPresent(Double.self, forKey: .priceEach)
        price = try container.decodeIfPresent(Double.self, forKey: .price)
        discountable = try container.decodeIfPresent(Bool.self, forKey: .discountable)
        errorMessage = try container.decodeIfPresent(String.self, forKey: .errorMessage)
    }

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


Swift SubmitPOSTransactionRequest DTOs

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

HTTP + OTHER

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

POST /api/SubmitPOSTransaction HTTP/1.1 
Host: active-ewebservice.biz 
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length

{"Acct":0,"LocId":0,"TaxId":0,"Items":[{"SkuPk":0,"SasPk":0,"Sku":"String","Serial":"String","Quantity":0,"ExceptionInfo":{"Barcode":"String","Description":"String","Base64Image":"String","Category":0,"SubCategory":0},"Discount":0,"NicsCat":0,"NicsSub":0,"PriceOverride":0,"AllowPriceOverrideToIgnoreMinPrice":false,"Notes":"String"}],"TenderType":"String","OtherTenderCategory":0,"CardToken":"String","CardExpiration":"String","TokenPk":0,"SaveCard":false,"PONumber":"String","TransactionMode":"String","Deposit":0,"Notes":"String","OnlineContractRef":"String","ShipId":0,"CardTerminalId":"String","Token":"String","DeviceId":"String","AppId":"String","ApiKey":"String","OAuthToken":"String"}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length

{"RefNumber":"String","ErrorItems":[{"PriceEach":0,"Price":0,"Discountable":false,"ErrorMessage":"String","SkuPk":0,"SasPk":0,"Sku":"String","Serial":"String","Quantity":0,"ExceptionInfo":{"Barcode":"String","Description":"String","Base64Image":"String","Category":0,"SubCategory":0},"Discount":0,"NicsCat":0,"NicsSub":0,"PriceOverride":0,"AllowPriceOverrideToIgnoreMinPrice":false,"Notes":"String"}],"Status":{"StatusCode":"String","Login":"String","ErrorCode":"String","ErrorDisplayText":"String","ErrorMessage":"String","DomainName":"String","IpAddress":"String"}}