AIM Web Services

<back to all web services

SearchCustomersRequest

SearchCustomers
Requires active-e Customer Service.

The following routes are available for this service:
GET/api/SearchCustomers
import Foundation
import ServiceStack

/**
* SearchCustomersRequires active-e Customer Service.
*/
// @DataContract
public class SearchCustomersRequest : BaseSecureRequest
{
    // @DataMember
    public var searchString:String

    // @DataMember
    public var includeStoreAccounts:Bool?

    // @DataMember
    public var startOffset:Int?

    // @DataMember
    public var recordCount:Int?

    // @DataMember
    public var includeDependants:Bool?

    // @DataMember
    public var includeAdditionalDetails:Bool?

    // @DataMember
    public var changedDate:Date?

    // @DataMember
    public var locId:Int?

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

    private enum CodingKeys : String, CodingKey {
        case searchString
        case includeStoreAccounts
        case startOffset
        case recordCount
        case includeDependants
        case includeAdditionalDetails
        case changedDate
        case locId
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        searchString = try container.decodeIfPresent(String.self, forKey: .searchString)
        includeStoreAccounts = try container.decodeIfPresent(Bool.self, forKey: .includeStoreAccounts)
        startOffset = try container.decodeIfPresent(Int.self, forKey: .startOffset)
        recordCount = try container.decodeIfPresent(Int.self, forKey: .recordCount)
        includeDependants = try container.decodeIfPresent(Bool.self, forKey: .includeDependants)
        includeAdditionalDetails = try container.decodeIfPresent(Bool.self, forKey: .includeAdditionalDetails)
        changedDate = try container.decodeIfPresent(Date.self, forKey: .changedDate)
        locId = try container.decodeIfPresent(Int.self, forKey: .locId)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if searchString != nil { try container.encode(searchString, forKey: .searchString) }
        if includeStoreAccounts != nil { try container.encode(includeStoreAccounts, forKey: .includeStoreAccounts) }
        if startOffset != nil { try container.encode(startOffset, forKey: .startOffset) }
        if recordCount != nil { try container.encode(recordCount, forKey: .recordCount) }
        if includeDependants != nil { try container.encode(includeDependants, forKey: .includeDependants) }
        if includeAdditionalDetails != nil { try container.encode(includeAdditionalDetails, forKey: .includeAdditionalDetails) }
        if changedDate != nil { try container.encode(changedDate, forKey: .changedDate) }
        if locId != nil { try container.encode(locId, forKey: .locId) }
    }
}

// @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 SearchCustomersResponse : BaseResponse
{
    // @DataMember
    public var startOffset:Int

    // @DataMember
    public var recordCount:Int

    // @DataMember
    public var remainingRecords:Int

    // @DataMember
    public var totalRecords:Int

    // @DataMember
    public var customers:[CustomerSearchRecord] = []

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

    private enum CodingKeys : String, CodingKey {
        case startOffset
        case recordCount
        case remainingRecords
        case totalRecords
        case customers
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        startOffset = try container.decodeIfPresent(Int.self, forKey: .startOffset)
        recordCount = try container.decodeIfPresent(Int.self, forKey: .recordCount)
        remainingRecords = try container.decodeIfPresent(Int.self, forKey: .remainingRecords)
        totalRecords = try container.decodeIfPresent(Int.self, forKey: .totalRecords)
        customers = try container.decodeIfPresent([CustomerSearchRecord].self, forKey: .customers) ?? []
    }

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

// @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 CustomerSearchRecord : BindableObject
{
    // @DataMember
    public var pk:Int

    // @DataMember
    public var acct:Int

    // @DataMember
    public var last:String

    // @DataMember
    public var name:String

    // @DataMember
    public var addr1:String

    // @DataMember
    public var addr2:String

    // @DataMember
    public var city:String

    // @DataMember
    public var st:String

    // @DataMember
    public var zip:String

    // @DataMember
    public var phone:String

    // @DataMember
    public var email:String

    // @DataMember
    public var openInvoices:Bool

    // @DataMember
    public var rentalActivity:Bool

    // @DataMember
    public var stLoc:String

    // @DataMember
    public var hold:Bool

    // @DataMember
    public var barcode:String

    // @DataMember
    public var color:Int

    // @DataMember
    public var dependantInfo:[DependantRecord] = []

    // @DataMember
    public var additionalDetails:AdditionalDetail

    // @DataMember
    public var matchedOn:String

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

    private enum CodingKeys : String, CodingKey {
        case pk
        case acct
        case last
        case name
        case addr1
        case addr2
        case city
        case st
        case zip
        case phone
        case email
        case openInvoices
        case rentalActivity
        case stLoc
        case hold
        case barcode
        case color
        case dependantInfo
        case additionalDetails
        case matchedOn
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        pk = try container.decodeIfPresent(Int.self, forKey: .pk)
        acct = try container.decodeIfPresent(Int.self, forKey: .acct)
        last = try container.decodeIfPresent(String.self, forKey: .last)
        name = try container.decodeIfPresent(String.self, forKey: .name)
        addr1 = try container.decodeIfPresent(String.self, forKey: .addr1)
        addr2 = try container.decodeIfPresent(String.self, forKey: .addr2)
        city = try container.decodeIfPresent(String.self, forKey: .city)
        st = try container.decodeIfPresent(String.self, forKey: .st)
        zip = try container.decodeIfPresent(String.self, forKey: .zip)
        phone = try container.decodeIfPresent(String.self, forKey: .phone)
        email = try container.decodeIfPresent(String.self, forKey: .email)
        openInvoices = try container.decodeIfPresent(Bool.self, forKey: .openInvoices)
        rentalActivity = try container.decodeIfPresent(Bool.self, forKey: .rentalActivity)
        stLoc = try container.decodeIfPresent(String.self, forKey: .stLoc)
        hold = try container.decodeIfPresent(Bool.self, forKey: .hold)
        barcode = try container.decodeIfPresent(String.self, forKey: .barcode)
        color = try container.decodeIfPresent(Int.self, forKey: .color)
        dependantInfo = try container.decodeIfPresent([DependantRecord].self, forKey: .dependantInfo) ?? []
        additionalDetails = try container.decodeIfPresent(AdditionalDetail.self, forKey: .additionalDetails)
        matchedOn = try container.decodeIfPresent(String.self, forKey: .matchedOn)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if pk != nil { try container.encode(pk, forKey: .pk) }
        if acct != nil { try container.encode(acct, forKey: .acct) }
        if last != nil { try container.encode(last, forKey: .last) }
        if name != nil { try container.encode(name, forKey: .name) }
        if addr1 != nil { try container.encode(addr1, forKey: .addr1) }
        if addr2 != nil { try container.encode(addr2, forKey: .addr2) }
        if city != nil { try container.encode(city, forKey: .city) }
        if st != nil { try container.encode(st, forKey: .st) }
        if zip != nil { try container.encode(zip, forKey: .zip) }
        if phone != nil { try container.encode(phone, forKey: .phone) }
        if email != nil { try container.encode(email, forKey: .email) }
        if openInvoices != nil { try container.encode(openInvoices, forKey: .openInvoices) }
        if rentalActivity != nil { try container.encode(rentalActivity, forKey: .rentalActivity) }
        if stLoc != nil { try container.encode(stLoc, forKey: .stLoc) }
        if hold != nil { try container.encode(hold, forKey: .hold) }
        if barcode != nil { try container.encode(barcode, forKey: .barcode) }
        if color != nil { try container.encode(color, forKey: .color) }
        if dependantInfo.count > 0 { try container.encode(dependantInfo, forKey: .dependantInfo) }
        if additionalDetails != nil { try container.encode(additionalDetails, forKey: .additionalDetails) }
        if matchedOn != nil { try container.encode(matchedOn, forKey: .matchedOn) }
    }
}

// @DataContract
public class BindableObject : Codable
{
    required public init(){}
}

// @DataContract
public class DependantRecord : Codable
{
    // @DataMember
    public var name:String

    // @DataMember
    public var onlineId:String

    // @DataMember
    public var schoolDistrict:String

    // @DataMember
    public var school:String

    // @DataMember
    public var id:Int

    required public init(){}
}

// @DataContract
public class AdditionalDetail : Codable
{
    // @DataMember
    public var creationDate:Date

    // @DataMember
    public var lastModifiedDate:Date

    // @DataMember
    public var notes:String

    // @DataMember
    public var customerDefault:CustomerDefaultInfo

    // @DataMember
    public var taxAuthority:TaxAuthorityInfo

    // @DataMember
    public var canCharge:Bool

    // @DataMember
    public var popupNotes:String

    // @DataMember
    public var dlNumber:String

    // @DataMember
    public var phone2:String

    // @DataMember
    public var phone3:String

    // @DataMember
    public var phone4:String

    // @DataMember
    public var location:LocationInfo

    required public init(){}
}

// @DataContract
public class CustomerDefaultInfo : Codable
{
    // @DataMember
    public var id:Int

    // @DataMember
    public var desc:String

    // @DataMember
    public var shortDesc:String

    required public init(){}
}

// @DataContract
public class TaxAuthorityInfo : Codable
{
    // @DataMember
    public var id:Int

    // @DataMember
    public var desc:String

    // @DataMember
    public var shortDesc:String

    required public init(){}
}

// @DataContract
public class LocationInfo : Codable
{
    // @DataMember
    public var id:Int

    // @DataMember
    public var desc:String

    // @DataMember
    public var shortDesc:String

    // @DataMember
    public var region:String

    // @DataMember
    public var latitude:Double

    // @DataMember
    public var longitude:Double

    // @DataMember
    public var inStorePickup:String

    // @DataMember
    public var active:Bool

    // @DataMember
    public var cashSaleAcct:Int?

    required public init(){}
}


Swift SearchCustomersRequest 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.

GET /api/SearchCustomers HTTP/1.1 
Host: active-ewebservice.biz 
Accept: text/jsonl
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length

{"StartOffset":0,"RecordCount":0,"RemainingRecords":0,"TotalRecords":0,"Customers":[{"Pk":0,"Acct":0,"Last":"String","Name":"String","Addr1":"String","Addr2":"String","City":"String","St":"String","Zip":"String","Phone":"String","Email":"String","OpenInvoices":false,"RentalActivity":false,"StLoc":"String","Hold":false,"Barcode":"String","Color":0,"DependantInfo":[{"Name":"String","OnlineId":"String","SchoolDistrict":"String","School":"String","Id":0}],"AdditionalDetails":{"Notes":"String","CustomerDefault":{"Id":0,"Desc":"String","ShortDesc":"String"},"TaxAuthority":{"Id":0,"Desc":"String","ShortDesc":"String"},"CanCharge":false,"PopupNotes":"String","DlNumber":"String","Phone2":"String","Phone3":"String","Phone4":"String","Location":{"Id":0,"Desc":"String","ShortDesc":"String","Region":"String","Latitude":0,"Longitude":0,"InStorePickup":"String","Active":false,"CashSaleAcct":0}},"MatchedOn":"String"}],"Status":{"StatusCode":"String","Login":"String","ErrorCode":"String","ErrorDisplayText":"String","ErrorMessage":"String","DomainName":"String","IpAddress":"String"}}