import Foundation
import ServiceStack
// @DataContract
public class GetClient : BaseRequest
{
// @DataMember
// @ApiMember(IsRequired=true, ParameterType="path")
public var id:Int
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case id
}
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)
}
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) }
}
}
// @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(){}
}
// @DataContract
public class GetClientResponse : Codable
{
// @DataMember
public var data:GetClientData
required public init(){}
}
public class GetClientData : BaseResponse, IBaseSearchResponse
{
public var linkedTo:ArrayOfLinkedTo
public var client:Client
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case linkedTo
case client
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
linkedTo = try container.decodeIfPresent(ArrayOfLinkedTo.self, forKey: .linkedTo)
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 linkedTo != nil { try container.encode(linkedTo, forKey: .linkedTo) }
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)
}
}
public class ArrayOfLinkedTo : List<LinkedTo>
{
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 LinkedTo : Codable
{
public var clientId:Int?
public var id:Int?
public var type:String
public var subtype:String
public var status:String
public var Description:String
public var isArchived:Bool?
public var name:String
public var date:Date?
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(){}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .soap12 suffix or ?format=soap12
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /soap12 HTTP/1.1
Host: api.sanctionssearch.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<GetClient xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.servicestack.net/types">
<Authentication>
<ApiUserId>String</ApiUserId>
<ApiUserKey>String</ApiUserKey>
</Authentication>
<Id>0</Id>
</GetClient>
</soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <GetClientResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.servicestack.net/types"> <Data> <ResponseStatus> <ErrorCode>String</ErrorCode> <Message>String</Message> <StackTrace>String</StackTrace> <Errors> <ResponseError> <ErrorCode>String</ErrorCode> <FieldName>String</FieldName> <Message>String</Message> <Meta xmlns:d6p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d6p1:KeyValueOfstringstring> <d6p1:Key>String</d6p1:Key> <d6p1:Value>String</d6p1:Value> </d6p1:KeyValueOfstringstring> </Meta> </ResponseError> </Errors> <Meta xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d4p1:KeyValueOfstringstring> <d4p1:Key>String</d4p1:Key> <d4p1:Value>String</d4p1:Value> </d4p1:KeyValueOfstringstring> </Meta> </ResponseStatus> <Client> <DateCreated>0001-01-01T00:00:00</DateCreated> <DrivingLicences> <Passport> <Address>String</Address> <ClientFileId>0</ClientFileId> <DateOfBirth>String</DateOfBirth> <DrivingLicenceNumber>String</DrivingLicenceNumber> <FaceMatchConfidence>0</FaceMatchConfidence> <FirstName>String</FirstName> <HasDfaSearch>false</HasDfaSearch> <Images> <CategoryId> <Id>0</Id> <Name>String</Name> <OcrId>0</OcrId> <Url>String</Url> </CategoryId> </Images> <IsFaceMatch>false</IsFaceMatch> <IsVerified>false</IsVerified> <LastName>String</LastName> <MiddleName>String</MiddleName> </Passport> </DrivingLicences> <Email>String</Email> <Face> <Accessories>String</Accessories> <Age>0</Age> <Emotion>String</Emotion> <FacialHair>String</FacialHair> <Gender>String</Gender> <Glasses>String</Glasses> <HairColour>String</HairColour> <Makeup>String</Makeup> <Smile>0</Smile> </Face> <Id>0</Id> <IsValidateMe>false</IsValidateMe> <Location> <Latitude>0</Latitude> <Longitude>0</Longitude> </Location> <MobileInternational>String</MobileInternational> <Name>String</Name> <NumOfDocuments>0</NumOfDocuments> <OtherDocuments> <OtherDocument> <ClientFileId>0</ClientFileId> <CroppedImageUrl>String</CroppedImageUrl> <Description>String</Description> <IsVerified>false</IsVerified> <OriginalImageUrl>String</OriginalImageUrl> <Type>String</Type> <TypeOther>String</TypeOther> </OtherDocument> </OtherDocuments> <Passports> <Passport> <ClientFileId>0</ClientFileId> <DateOfBirth>String</DateOfBirth> <FaceMatchConfidence>0</FaceMatchConfidence> <FirstName>String</FirstName> <Gender>String</Gender> <HasDfaSearch>false</HasDfaSearch> <HasPcvSearch>false</HasPcvSearch> <Images> <CategoryId> <Id>0</Id> <Name>String</Name> <OcrId>0</OcrId> <Url>String</Url> </CategoryId> </Images> <IsEligibleForDfa>false</IsEligibleForDfa> <IsEligibleForPcv>false</IsEligibleForPcv> <IsFaceMatch>false</IsFaceMatch> <IsPassportChipVerified>false</IsPassportChipVerified> <IsVerified>false</IsVerified> <LastName>String</LastName> <MiddleName>String</MiddleName> <MrzLineOne>String</MrzLineOne> <MrzLineTwo1>String</MrzLineTwo1> <MrzLineTwo2>String</MrzLineTwo2> <MrzLineTwo3>String</MrzLineTwo3> <MrzLineTwo4>String</MrzLineTwo4> <MrzLineTwo5>String</MrzLineTwo5> <MrzLineTwo6>String</MrzLineTwo6> <MrzLineTwo7>String</MrzLineTwo7> <MrzLineTwo8>String</MrzLineTwo8> <PassportChipData> <DataGroupsFailed xmlns:d7p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d7p1:int>0</d7p1:int> </DataGroupsFailed> <DataGroupsVerified xmlns:d7p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d7p1:int>0</d7p1:int> </DataGroupsVerified> <FaceMatchConfidence>0</FaceMatchConfidence> <IsFaceMatch>false</IsFaceMatch> <IsIssuerVerified>false</IsIssuerVerified> <IsMrzLine1Verified>false</IsMrzLine1Verified> <IsMrzLine2Verified>false</IsMrzLine2Verified> <IssuerCommonName>String</IssuerCommonName> <IssuerCountry>String</IssuerCountry> <IssuerOrganisationName>String</IssuerOrganisationName> <MRZLine1>String</MRZLine1> <MRZLine2>String</MRZLine2> </PassportChipData> </Passport> </Passports> <PostCode>String</PostCode> <ProofOfDocumentCategories> <CategoryId> <Id>0</Id> <ProofOf>String</ProofOf> <ProofOfDocuments> <DocumentId> <Id>0</Id> <Name>String</Name> </DocumentId> </ProofOfDocuments> </CategoryId> </ProofOfDocumentCategories> <Reference>String</Reference> <State>Undefined</State> <Video> <Id>0</Id> <ImageUrl>String</ImageUrl> <VideoTimestamps> <VideoTimestamp> <ImageUrl>String</ImageUrl> <Milli>0</Milli> <TagName>String</TagName> </VideoTimestamp> </VideoTimestamps> <VideoUrl>String</VideoUrl> </Video> </Client> <LinkedTo> <LinkedTo> <ClientId>0</ClientId> <Date>0001-01-01T00:00:00</Date> <Description>String</Description> <Id>0</Id> <IsArchived>false</IsArchived> <Name>String</Name> <Status>String</Status> <Subtype>String</Subtype> <Type>String</Type> </LinkedTo> </LinkedTo> </Data> </GetClientResponse> </soap12:Body> </soap12:Envelope>