Sanctions Search API: v2

<back to all web services

UpdateClient

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)
    }
}


Swift UpdateClient DTOs

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

HTTP + 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>

<UpdateClient 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>
  <Request>
    <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:d6p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
            <d6p1:int>0</d6p1:int>
          </DataGroupsFailed>
          <DataGroupsVerified xmlns:d6p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
            <d6p1:int>0</d6p1: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>
  </Request>
</UpdateClient>

</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>

<UpdateClientResponse 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>
  </Data>
</UpdateClientResponse>

</soap12:Body>
</soap12:Envelope>