/* Options: Date: 2026-06-20 21:19:57 SwiftVersion: 6.0 Version: 8.80 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.simplified.id/v2 //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: AddClient.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/clients", "POST") // @DataContract public class AddClient : BaseRequest, IReturn { public typealias Return = AddClientResponse // @DataMember public var request:AddClientRequest? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case request } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) request = try container.decodeIfPresent(AddClientRequest.self, forKey: .request) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if request != nil { try container.encode(request, forKey: .request) } } } // @DataContract public class AddClientResponse : Codable { // @DataMember public var data:AddClientData? required public init(){} } // @DataContract public class Authentication : Codable { /** * The API User ID provided by us when you signed up to use our API. Can be provided in the request body, or as a header parameter (X-Api-User) */ // @DataMember // @ApiMember(Description="The API User ID provided by us when you signed up to use our API. Can be provided in the request body, or as a header parameter (X-Api-User)", IsRequired=true, ParameterType="header, body") public var apiUserId:String? /** * The API User Key provided by us when you signed up to use our API. Can be provided in the request body, or as a header parameter (X-Api-Key) */ // @DataMember // @ApiMember(Description="The API User Key provided by us when you signed up to use our API. Can be provided in the request body, or as a header parameter (X-Api-Key)", IsRequired=true, ParameterType="header, body") public var apiUserKey:String? /** * The User ID of the user making the request (e.g. a sub user). This is optional but can be used to associate API requests with a specific user, thereby allowing user permissions to be enforced. Can be provided in the body, or as a header parameter (X-User-Id). */ // @DataMember // @ApiMember(Description="The User ID of the user making the request (e.g. a sub user). This is optional but can be used to associate API requests with a specific user, thereby allowing user permissions to be enforced. Can be provided in the body, or as a header parameter (X-User-Id).", ParameterType="header, body") public var userId:String? required public init(){} } // @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(){} } public protocol IBaseRequest { var authentication:Authentication? { get set } } public class AddClientRequest : Codable { /** * The full name of the client */ // @ApiMember(Description="The full name of the client", IsRequired=true) public var name:String? /** * The email address of the client */ // @ApiMember(Description="The email address of the client", IsRequired=true) public var email:String? /** * The client's mobile phone number in international format (e.g. '+447123456789') */ // @ApiMember(Description="The client's mobile phone number in international format (e.g. '+447123456789')", IsRequired=true) public var mobileInternational:String? /** * A reference or postcode that will be sent to the client to help them recognize the communication as genuine */ // @ApiMember(Description="A reference or postcode that will be sent to the client to help them recognize the communication as genuine", IsRequired=true) public var postCode:String? /** * Specifies the type of ValidateMe (Simplified.ID App) preset. Possible values are 'ValidateMe' for configuring RequiredDocuments, or 'PassportChipVerification' for setting the Passport as Proof of Name */ // @ApiMember(Description="Specifies the type of ValidateMe (Simplified.ID App) preset. Possible values are 'ValidateMe' for configuring RequiredDocuments, or 'PassportChipVerification' for setting the Passport as Proof of Name", IsRequired=true) public var proofOfPreset:CreateMobileClientType? /** * The categories of proof and selected documents that the client can use to provide proof. Required if ClientType is set to 'ValidateMe' */ // @ApiMember(Description="The categories of proof and selected documents that the client can use to provide proof. Required if ClientType is set to 'ValidateMe'") public var proofOfDocumentCategories:ArrayOfProofOfDocumentCategories? /** * If the client should be linked to other searches, specify the them here */ // @ApiMember(Description="If the client should be linked to other searches, specify the them here") public var linkedTo:ArrayOfLinkedTo? /** * Your reference, if any */ // @ApiMember(Description="Your reference, if any") public var reference:String? 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 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 numOfVideos:Int? public var passports:ArrayOfPassports? public var drivingLicences:ArrayOfDrivingLicences? public var otherDocuments:ArrayOfOtherDocuments? public var proofOfDocumentCategories:ArrayOfProofOfDocumentCategories? required public init(){} } public class AddClientData : BaseResponse, IBaseSearchResponse { public var linkedTo:ArrayOfLinkedTo? public var client:Client? public var validateMePin:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case linkedTo case client case validateMePin } 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) validateMePin = try container.decodeIfPresent(String.self, forKey: .validateMePin) } 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) } if validateMePin != nil { try container.encode(validateMePin, forKey: .validateMePin) } } } public class ArrayOfProofOfDocumentCategories : List { 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) } } // @DataContract(Name="CreateMobileClientType", Namespace="http://schemas.servicestack.net/types") public enum CreateMobileClientType : String, Codable { case Undefined case ValidateMe case PassportChipVerification } public class ArrayOfLinkedTo : List { 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 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 Location : Codable { public var latitude:Double? public var longitude:Double? required public init(){} } public class ArrayOfPassports : List { 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 ArrayOfDrivingLicences : List { 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 ArrayOfOtherDocuments : List { 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 BaseResponse : IBaseDataResponse, IHasResponseStatus, Codable { /** * The status of the response */ // @ApiMember(Description="The status of the response") public var responseStatus:ResponseStatus? required public init(){} } public protocol IBaseDataResponse { var responseStatus:ResponseStatus? { get set } } public protocol IHasResponseStatus { var responseStatus:ResponseStatus? { get set } } public protocol IBaseSearchResponse : IBaseDataResponse { var linkedTo:ArrayOfLinkedTo? { get set } } 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 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 VideoTimestamp : Codable { public var tagName:String? public var milli:Int? public var imageUrl:String? required public init(){} } 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 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 expiryDate: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 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 ArrayOfResponseError : List { 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 ArrayOfProofOfDocuments : List { 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 ArrayOfImages : List { 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 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 Image : Codable { public var id:Int? public var name:String? public var ocrId:Int? public var url:String? required public init(){} } 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(){} }