PUT | /clients/{Id} | Update a client when it is PendingVerification |
---|
import Foundation
import ServiceStack
// @DataContract
public class UpdateClient : BaseRequest
{
// @DataMember
// @ApiMember(IsRequired=true, ParameterType="path")
public var id:Int
// @DataMember
public var request:Client
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case id
case request
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decodeIfPresent(Int.self, forKey: .id)
request = try container.decodeIfPresent(Client.self, forKey: .request)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if id != nil { try container.encode(id, forKey: .id) }
if request != nil { try container.encode(request, forKey: .request) }
}
}
// @DataContract
public class BaseRequest : IBaseRequest, Codable
{
/**
* The authentication credentials
*/
// @DataMember
// @ApiMember(Description="The authentication credentials", IsRequired=true, ParameterType="header, body")
public var authentication:Authentication
required public init(){}
}
// @DataContract
public class Authentication : Codable
{
/**
* The API User ID provided by us when you signed up to use our API
*/
// @DataMember
// @ApiMember(Description="The API User ID provided by us when you signed up to use our API", IsRequired=true, ParameterType="header, body")
public var apiUserId:String
/**
* The API User Key provided by us when you signed up to use our API
*/
// @DataMember
// @ApiMember(Description="The API User Key provided by us when you signed up to use our API", IsRequired=true, ParameterType="header, body")
public var apiUserKey:String
required public init(){}
}
public class Client : Codable
{
public var id:Int
public var dateCreated:Date
public var name:String
public var email:String
public var reference:String
public var state:ClientState
public var mobileInternational:String
public var postCode:String
public var isValidateMe:Bool
public var face:Face
public var video:Video
public var location:Location
public var numOfDocuments:Int
public var passports:ArrayOfPassports
public var drivingLicences:ArrayOfDrivingLicences
public var otherDocuments:ArrayOfOtherDocuments
public var proofOfDocumentCategories:ArrayOfProofOfDocumentCategories
required public init(){}
}
// @DataContract(Name="ClientState", Namespace="http://schemas.servicestack.net/types")
public enum ClientState : String, Codable
{
case Undefined
case PendingCompletion
case PendingOcr
case PendingVerification
case Verified
}
public class Face : Codable
{
public var age:Double?
public var gender:String
public var emotion:String
public var smile:Double?
public var hairColour:String
public var facialHair:String
public var makeup:String
public var glasses:String
public var accessories:String
required public init(){}
}
public class Video : Codable
{
public var id:Int
public var videoUrl:String
public var imageUrl:String
public var videoTimestamps:[VideoTimestamp] = []
required public init(){}
}
public class VideoTimestamp : Codable
{
public var tagName:String
public var milli:Int?
public var imageUrl:String
required public init(){}
}
public class Location : Codable
{
public var latitude:Double
public var longitude:Double
required public init(){}
}
public class ArrayOfPassports : List<Passport>
{
required public init(){ super.init() }
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
}
}
public class Passport : Codable
{
public var clientFileId:Int
public var firstName:String
public var middleName:String
public var lastName:String
public var dateOfBirth:String
public var gender:String
public var mrzLineOne:String
public var mrzLineTwo1:String
public var mrzLineTwo2:String
public var mrzLineTwo3:String
public var mrzLineTwo4:String
public var mrzLineTwo5:String
public var mrzLineTwo6:String
public var mrzLineTwo7:String
public var mrzLineTwo8:String
public var images:ArrayOfImages
public var isVerified:Bool
public var isFaceMatch:Bool?
public var faceMatchConfidence:Double?
public var hasPcvSearch:Bool
public var hasDfaSearch:Bool
public var isPassportChipVerified:Bool?
public var passportChipData:PassportChipData
public var isEligibleForPcv:Bool
public var isEligibleForDfa:Bool
required public init(){}
}
public class ArrayOfImages : List<Image>
{
required public init(){ super.init() }
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
}
}
public class Image : Codable
{
public var id:Int
public var name:String
public var ocrId:Int?
public var url:String
required public init(){}
}
public class PassportChipData : Codable
{
public var isIssuerVerified:Bool
public var issuerCommonName:String
public var issuerOrganisationName:String
public var issuerCountry:String
public var mrzLine1:String
public var mrzLine2:String
public var isMrzLine1Verified:Bool
public var isMrzLine2Verified:Bool
public var dataGroupsVerified:[Int] = []
public var dataGroupsFailed:[Int] = []
public var isFaceMatch:Bool
public var faceMatchConfidence:Double?
required public init(){}
}
public class ArrayOfDrivingLicences : List<DrivingLicence>
{
required public init(){ super.init() }
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
}
}
public class DrivingLicence : Codable
{
public var clientFileId:Int
public var firstName:String
public var middleName:String
public var lastName:String
public var dateOfBirth:String
public var address:String
public var drivingLicenceNumber:String
public var images:ArrayOfImages
public var isVerified:Bool
public var isFaceMatch:Bool?
public var faceMatchConfidence:Double?
public var hasDfaSearch:Bool
required public init(){}
}
public class ArrayOfOtherDocuments : List<OtherDocument>
{
required public init(){ super.init() }
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
}
}
public class OtherDocument : Codable
{
public var clientFileId:Int
public var type:String
public var typeOther:String
public var Description:String
public var originalImageUrl:String
public var croppedImageUrl:String
public var isVerified:Bool
required public init(){}
}
public class ArrayOfProofOfDocumentCategories : List<ProofOfDocumentCategory>
{
required public init(){ super.init() }
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
}
}
public class ProofOfDocumentCategory : Codable
{
/**
* The ID of the ProofOfDocumentCategory
*/
// @ApiMember(Description="The ID of the ProofOfDocumentCategory", IsRequired=true)
public var id:Int
/**
* The category or subject that requires proof (e.g., 'Name', 'Address', 'Right to work')
*/
// @ApiMember(Description="The category or subject that requires proof (e.g., 'Name', 'Address', 'Right to work')", IsRequired=true)
public var proofOf:String
/**
* The documents that can be used to provide proof for the specified category.
*/
// @ApiMember(Description="The documents that can be used to provide proof for the specified category.", IsRequired=true)
public var proofOfDocuments:ArrayOfProofOfDocuments
required public init(){}
}
public class ArrayOfProofOfDocuments : List<ProofOfDocument>
{
required public init(){ super.init() }
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
}
}
public class ProofOfDocument : Codable
{
/**
* The ID of the ProofOfDocument
*/
// @ApiMember(Description="The ID of the ProofOfDocument", IsRequired=true)
public var id:Int
/**
* The name of the ProofOfDocument
*/
// @ApiMember(Description="The name of the ProofOfDocument", IsRequired=true)
public var name:String
required public init(){}
}
// @DataContract
public class UpdateClientResponse : Codable
{
// @DataMember
public var data:UpdateClientData
required public init(){}
}
public class UpdateClientData : BaseResponse
{
public var client:Client
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case client
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
client = try container.decodeIfPresent(Client.self, forKey: .client)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if client != nil { try container.encode(client, forKey: .client) }
}
}
public class BaseResponse : IBaseDataResponse, IHasResponseStatus, Codable
{
/**
* The status of the response
*/
// @ApiMember(Description="The status of the response")
public var responseStatus:ResponseStatus
required public init(){}
}
public class ArrayOfResponseError : List<ResponseError>
{
required public init(){ super.init() }
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
}
}
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.
PUT /clients/{Id} HTTP/1.1
Host: api.sanctionssearch.com
Accept: application/json
Content-Type: application/json
Content-Length: length
{"id":0,"request":{"id":0,"dateCreated":"\/Date(-62135596800000-0000)\/","name":"String","email":"String","reference":"String","state":"Undefined","mobileInternational":"String","postCode":"String","isValidateMe":false,"face":{"age":0,"gender":"String","emotion":"String","smile":0,"hairColour":"String","facialHair":"String","makeup":"String","glasses":"String","accessories":"String"},"video":{"id":0,"videoUrl":"String","imageUrl":"String","videoTimestamps":[{"tagName":"String","milli":0,"imageUrl":"String"}]},"location":{"latitude":0,"longitude":0},"numOfDocuments":0,"passports":[{"clientFileId":0,"firstName":"String","middleName":"String","lastName":"String","dateOfBirth":"String","gender":"String","mrzLineOne":"String","mrzLineTwo1":"String","mrzLineTwo2":"String","mrzLineTwo3":"String","mrzLineTwo4":"String","mrzLineTwo5":"String","mrzLineTwo6":"String","mrzLineTwo7":"String","mrzLineTwo8":"String","images":[{"id":0,"name":"String","ocrId":0,"url":"String"}],"isVerified":false,"isFaceMatch":false,"faceMatchConfidence":0,"hasPcvSearch":false,"hasDfaSearch":false,"isPassportChipVerified":false,"passportChipData":{"isIssuerVerified":false,"issuerCommonName":"String","issuerOrganisationName":"String","issuerCountry":"String","mrzLine1":"String","mrzLine2":"String","isMrzLine1Verified":false,"isMrzLine2Verified":false,"dataGroupsVerified":[0],"dataGroupsFailed":[0],"isFaceMatch":false,"faceMatchConfidence":0},"isEligibleForPcv":false,"isEligibleForDfa":false}],"drivingLicences":[{"clientFileId":0,"firstName":"String","middleName":"String","lastName":"String","dateOfBirth":"String","address":"String","drivingLicenceNumber":"String","images":[{"id":0,"name":"String","ocrId":0,"url":"String"}],"isVerified":false,"isFaceMatch":false,"faceMatchConfidence":0,"hasDfaSearch":false}],"otherDocuments":[{"clientFileId":0,"type":"String","typeOther":"String","description":"String","originalImageUrl":"String","croppedImageUrl":"String","isVerified":false}],"proofOfDocumentCategories":[{"id":0,"proofOf":"String","proofOfDocuments":[{"id":0,"name":"String"}]}]},"authentication":{"apiUserId":"String","apiUserKey":"String"}}
HTTP/1.1 200 OK Content-Type: application/json Content-Length: length {"data":{"client":{"id":0,"dateCreated":"\/Date(-62135596800000-0000)\/","name":"String","email":"String","reference":"String","state":"Undefined","mobileInternational":"String","postCode":"String","isValidateMe":false,"face":{"age":0,"gender":"String","emotion":"String","smile":0,"hairColour":"String","facialHair":"String","makeup":"String","glasses":"String","accessories":"String"},"video":{"id":0,"videoUrl":"String","imageUrl":"String","videoTimestamps":[{"tagName":"String","milli":0,"imageUrl":"String"}]},"location":{"latitude":0,"longitude":0},"numOfDocuments":0,"passports":[{"clientFileId":0,"firstName":"String","middleName":"String","lastName":"String","dateOfBirth":"String","gender":"String","mrzLineOne":"String","mrzLineTwo1":"String","mrzLineTwo2":"String","mrzLineTwo3":"String","mrzLineTwo4":"String","mrzLineTwo5":"String","mrzLineTwo6":"String","mrzLineTwo7":"String","mrzLineTwo8":"String","images":[{"id":0,"name":"String","ocrId":0,"url":"String"}],"isVerified":false,"isFaceMatch":false,"faceMatchConfidence":0,"hasPcvSearch":false,"hasDfaSearch":false,"isPassportChipVerified":false,"passportChipData":{"isIssuerVerified":false,"issuerCommonName":"String","issuerOrganisationName":"String","issuerCountry":"String","mrzLine1":"String","mrzLine2":"String","isMrzLine1Verified":false,"isMrzLine2Verified":false,"dataGroupsVerified":[0],"dataGroupsFailed":[0],"isFaceMatch":false,"faceMatchConfidence":0},"isEligibleForPcv":false,"isEligibleForDfa":false}],"drivingLicences":[{"clientFileId":0,"firstName":"String","middleName":"String","lastName":"String","dateOfBirth":"String","address":"String","drivingLicenceNumber":"String","images":[{"id":0,"name":"String","ocrId":0,"url":"String"}],"isVerified":false,"isFaceMatch":false,"faceMatchConfidence":0,"hasDfaSearch":false}],"otherDocuments":[{"clientFileId":0,"type":"String","typeOther":"String","description":"String","originalImageUrl":"String","croppedImageUrl":"String","isVerified":false}],"proofOfDocumentCategories":[{"id":0,"proofOf":"String","proofOfDocuments":[{"id":0,"name":"String"}]}]},"responseStatus":{"errorCode":"String","message":"String","stackTrace":"String","errors":[{"errorCode":"String","fieldName":"String","message":"String","meta":{"String":"String"}}],"meta":{"String":"String"}}}}