smile-identity-core 1.2.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'smile-identity-core'
4
+
5
+ # See https://docs.smileidentity.com/server-to-server/ruby/products/document-verification for
6
+ # how to setup and retrieve configuation values for the WebApi class.
7
+
8
+ # Initialize
9
+ partner_id = '<Put your partner ID here>'; # login to the Smile Identity portal to view your partner id
10
+ default_callback = '<Put your default callback url here>'
11
+ api_key = '<Put your API key here>'; # copy your API key from the Smile Identity portal
12
+ sid_server = '<0 | 1>'; # Use '0' for the sandbox server, use '1' for production server
13
+
14
+ connection = SmileIdentityCore::WebApi.new(partner_id, default_callback, api_key, sid_server)
15
+
16
+ # Create required tracking parameters
17
+ partner_params = {
18
+ user_id: '<put your unique ID for the user here>',
19
+ job_id: '<put your unique job ID here>',
20
+ job_type: 6
21
+ }
22
+
23
+ # Create image list
24
+ # image_type_id (Integer) - This infers to either a file or a base64 encoded image, but not both.
25
+ # 0 - Selfie image jpg or png (if you have the full path of the selfie)
26
+ # 2 - Selfie image jpg or png base64 encoded (if you have the base64image string of the selfie)
27
+ # 4 - Liveness image jpg or png (if you have the full path of the liveness image)
28
+ # 6 - Liveness image jpg or png base64 encoded (if you have the base64image string of the liveness image)
29
+ # 1 - Front of ID document image jpg or png (if you have the full path of the selfie)
30
+ # 3 - Front of ID document image jpg or png base64 encoded (if you have the base64image string of the selfie)
31
+ # 5 - Back of ID document image jpg or png (if you have the full path of the selfie)
32
+ # 7 - Back of ID document image jpg or png base64 encoded (if you have the base64image string of the selfie)
33
+ image_details = [
34
+ {
35
+ image_type_id: '<0 | 2>',
36
+ image: '<full path to selfie image or base64image string>'
37
+ },
38
+ { # Not required if you don't require proof of life (note photo of photo check
39
+ # will still be performed on the uploaded selfie)
40
+ image_type_id: '<4 | 6>',
41
+ image: '<full path to liveness image or base64 image string>'
42
+ },
43
+ {
44
+ image_type_id: '<1 | 3>',
45
+ image: '<full path to front of id document image or base64image string>'
46
+ },
47
+ { # Optional, only use if you're uploading the back of the id document image
48
+ image_type_id: '<5 | 7>',
49
+ image: '<full path to back of id document image or base64image string>'
50
+ }
51
+ ]
52
+
53
+ # The ID Document Information
54
+ id_info = {
55
+ country: '<2-letter country code>', # The country where ID document was issued
56
+ id_type: '<id type>' # The ID document type
57
+ }
58
+
59
+ # Set options for the job
60
+ options = {
61
+ # Set to true if you want to get the job result in sync (in addition to the result
62
+ # been sent to your callback). If set to false, result is sent to callback url only.
63
+ return_job_status: '<true | false>',
64
+ # Set to true to receive all of the updates you would otherwise have received in your
65
+ # callback as opposed to only the final result. You must set return_job_status to true to use this flag.
66
+ return_history: '<true | false>',
67
+ # Set to true to receive links to the selfie and the photo it was compared to.
68
+ # You must set return_job_status to true to use this flag.
69
+ return_image_links: '<true |false>',
70
+ signature: true
71
+ }
72
+
73
+ # Submit the job
74
+ connection.submit_job(partner_params, image_details, id_info, options)
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'smile-identity-core'
4
+
5
+ # See https://docs.smileidentity.com/server-to-server/ruby/products/enhanced-kyc for
6
+ # how to setup and retrieve configuation values for the IDApi class.
7
+
8
+ # Initialize
9
+ partner_id = '<Your partner ID>'; # login to the Smile Identity portal to view your partner id
10
+ api_key = '<Your API key>'; # copy your API key from the Smile Identity portal
11
+ sid_server = '<0 or 1>'; # Use '0' for the sandbox server, use '1' for production server
12
+
13
+ connection = SmileIdentityCore::IDApi.new(partner_id, api_key, sid_server)
14
+
15
+ # Create required tracking parameters
16
+ partner_params = {
17
+ job_id: '<put your unique job ID here>',
18
+ user_id: '<put your unique ID for the user here>',
19
+ job_type: 5
20
+ }
21
+
22
+ # Create ID info
23
+ id_info = {
24
+ first_name: '<first name>',
25
+ last_name: '<surname>',
26
+ country: '<2-letter country code>',
27
+ id_type: '<id type>',
28
+ id_number: '<valid id number>',
29
+ dob: '<date of birth>', # yyyy-mm-dd
30
+ phone_number: '<phone number>'
31
+ }
32
+
33
+ # Set the options for the job
34
+ options = {
35
+ signature: true
36
+ }
37
+
38
+ # Submit the job
39
+ connection.submit_job(partner_params, id_info, options)
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'dotenv'
6
+ gem 'securerandom'
7
+ gem 'smile-identity-core'
@@ -0,0 +1,25 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ dotenv (2.8.1)
5
+ ethon (0.15.0)
6
+ ffi (>= 1.15.0)
7
+ ffi (1.15.5)
8
+ rubyzip (1.3.0)
9
+ securerandom (0.2.0)
10
+ smile-identity-core (1.2.1)
11
+ rubyzip (~> 1.2, >= 1.2.3)
12
+ typhoeus (~> 1.0, >= 1.0.1)
13
+ typhoeus (1.4.0)
14
+ ethon (>= 0.9.0)
15
+
16
+ PLATFORMS
17
+ x86_64-darwin-20
18
+
19
+ DEPENDENCIES
20
+ dotenv
21
+ securerandom
22
+ smile-identity-core
23
+
24
+ BUNDLED WITH
25
+ 2.2.6
@@ -0,0 +1,14 @@
1
+ # Example Project
2
+
3
+ This project is an example implementation of the Smile Identity Ruby SDK on the server side. The example implements [Enhanced KYC](https://docs.smileidentity.com/products/identity-lookup), [Biometric KYC](https://docs.smileidentity.com/products/biometric-kyc), [Document Verification](https://docs.smileidentity.com/products/document-verification) and [SmartSelfieTM Authentication](https://docs.smileidentity.com/products/biometric-authentication) job types.
4
+
5
+ ## Setup
6
+
7
+ 1. Run `bundle install` to install gem dependencies
8
+ 2. Copy sample.env to .env and set secrets as appropriate
9
+
10
+ ```bash
11
+ cp sample.env .env
12
+ ```
13
+
14
+ 3. Run `ruby smart_bank.rb` to call the different job types
@@ -0,0 +1,4 @@
1
+ SMILE_PARTNER_ID="Put your partner ID here"
2
+ SMILE_JOB_CALLBACK_URL="Put your default callback url here"
3
+ SMILE_API_KEY="Put your API key here"
4
+ SMILE_SERVER_ENVIRONMENT="0 or 1"
@@ -0,0 +1,216 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'dotenv/load'
4
+ require 'smile-identity-core'
5
+ require 'securerandom'
6
+ require 'json'
7
+
8
+ # SmartBank is a fictional banking app
9
+ class SmartBank
10
+ attr_reader :partner_id, :default_callback, :api_key, :sid_server, :user_id, :job_id
11
+
12
+ def initialize
13
+ # login to the Smile Identity portal to view your partner id
14
+ @partner_id = ENV['SMILE_PARTNER_ID']
15
+ # See https://docs.smileidentity.com/server-to-server/ruby/products/biometric-kyc#create-a-callback-endpoint
16
+ @default_callback = ENV['SMILE_JOB_CALLBACK_URL']
17
+ @api_key = ENV['SMILE_API_KEY'] # copy your API key from the Smile Identity portal
18
+ @sid_server = ENV['SMILE_SERVER_ENVIRONMENT'] # Use '0' for the sandbox server, use '1' for production server
19
+ @user_id = SecureRandom.uuid # your unique ID for the user
20
+ @job_id = SecureRandom.uuid # your unique job ID
21
+ end
22
+
23
+ # Public: Makes a request to query the Identity Information for an individual using
24
+ # their ID number from one of our supported ID Types.
25
+ #
26
+ # Returns a verification result Hash
27
+ def perform_enhanced_kyc
28
+ connection = SmileIdentityCore::IDApi.new(partner_id, api_key, sid_server)
29
+
30
+ # Create ID info
31
+ id_info = {
32
+ first_name: 'John',
33
+ last_name: 'Doe',
34
+ country: 'GH', # 2-letter country code>
35
+ id_type: 'PASSPORT',
36
+ id_number: 'G0000000',
37
+ dob: '1992-12-07', # yyyy-mm-dd
38
+ phone_number: '00000000000'
39
+ }
40
+
41
+ # Set the options for the job
42
+ options = {
43
+ signature: true
44
+ }
45
+
46
+ # Submit the job
47
+ JSON.parse(connection.submit_job(partner_params(5), id_info, options))
48
+ end
49
+
50
+ # Public: Makes a request to verify the ID information of a user by comparing
51
+ # the user's SmartSelfie to either the photo of the user on file in an ID authority
52
+ # database or a photo of their ID card.
53
+ #
54
+ # Returns a verification result Hash
55
+ def perform_biometric_kyc
56
+ # Create image list
57
+ image_details = [
58
+ {
59
+ image_type_id: SmileIdentityCore::ImageType::SELFIE_IMAGE_FILE,
60
+ image: '/path/to/selfie_image.jpeg'
61
+ },
62
+ { # Not required if you don't require proof of life (note photo of photo check will
63
+ # still be performed on the uploaded selfie)
64
+ image_type_id: SmileIdentityCore::ImageType::LIVENESS_IMAGE_FILE,
65
+ image: '/path/to/liveness_image.jpeg'
66
+ }
67
+ ]
68
+
69
+ # Create ID number info
70
+ id_info = {
71
+ first_name: 'John',
72
+ last_name: 'Doe',
73
+ country: 'GH', # 2-letter country code
74
+ id_type: 'PASSPORT',
75
+ id_number: 'G0000000',
76
+ dob: '1992-12-07', # yyyy-mm-dd
77
+ entered: 'true' # must be a string
78
+ }
79
+
80
+ # Submit the job
81
+ web_api_connection.submit_job(partner_params(1), image_details, id_info, job_options)
82
+ end
83
+
84
+ # Public: Makes a request to verify the authenticity of Identity documents submitted by users and
85
+ # confirm that the document actually belongs to the user by comparing the user's selfie to the
86
+ # photo on the document.
87
+ #
88
+ # Returns a verification result Hash
89
+ def perform_document_verification
90
+ # Create image list
91
+ image_details = [
92
+ {
93
+ image_type_id: SmileIdentityCore::ImageType::SELFIE_IMAGE_FILE,
94
+ image: '/path/to/selfie_image.jpeg'
95
+ },
96
+ { # Not required if you don't require proof of life (note photo of photo
97
+ # check will still be performed on the uploaded selfie)
98
+ image_type_id: SmileIdentityCore::ImageType::LIVENESS_IMAGE_FILE,
99
+ image: '/path/to/liveness_image.jpeg'
100
+ },
101
+ {
102
+ image_type_id: SmileIdentityCore::ImageType::ID_CARD_IMAGE_FILE,
103
+ image: '/path/to/front_document_image.jpeg'
104
+ },
105
+ { # Optional, only use if you're uploading the back of the id document image
106
+ image_type_id: SmileIdentityCore::ImageType::ID_CARD_BACK_IMAGE_FILE,
107
+ image: '/path/to/back_document_image.jpeg'
108
+ }
109
+ ]
110
+
111
+ # The ID Document Information
112
+ id_info = {
113
+ country: 'GH', # The country where ID document was issued
114
+ id_type: 'PASSPORT' # The ID document type
115
+ }
116
+
117
+ # Submit the job
118
+ web_api_connection.submit_job(partner_params(6), image_details, id_info, job_options)
119
+ end
120
+
121
+ # Public: Makes a request to verify that an existing user is really the person attempting
122
+ # to access your system or service. SmartSelfie Authentication can be used as part of a multi-factor
123
+ # authentication system.
124
+ #
125
+ # Returns a verification result Hash
126
+ def perform_smart_selfie_authentication
127
+ # Create required tracking parameters
128
+ partner_params = {
129
+ user_id: '512c9c37-a689-4959-a620-bed75fb41344', # previously registered user's user_id
130
+ job_id: SecureRandom.uuid, # new unique job ID
131
+ job_type: SmileIdentityCore::JobType::SMART_SELFIE_REGISTRATION
132
+ }
133
+
134
+ # Create image list
135
+ image_details = [
136
+ {
137
+ image_type_id: SmileIdentityCore::ImageType::SELFIE_IMAGE_FILE,
138
+ image: '/path/to/selfie_image.jpeg'
139
+ },
140
+ { # Not required if you don't require proof of life
141
+ # (note photo of photo check will still be performed on the uploaded selfie)
142
+ image_type_id: SmileIdentityCore::ImageType::LIVENESS_IMAGE_FILE,
143
+ image: '/path/to/liveness_image.jpeg'
144
+ }
145
+ ]
146
+
147
+ # Submit the job
148
+ web_api_connection.submit_job(partner_params, image_details, nil, job_options)
149
+ end
150
+
151
+ private
152
+
153
+ def partner_params(job_type)
154
+ {
155
+ user_id: user_id,
156
+ job_id: job_id,
157
+ job_type: job_type
158
+ }
159
+ end
160
+
161
+ def web_api_connection
162
+ return @web_api_connection if defined?(@web_api_connection)
163
+
164
+ @web_api_connection = SmileIdentityCore::WebApi.new(partner_id, default_callback, api_key, sid_server)
165
+ end
166
+
167
+ def job_options
168
+ {
169
+ # Set to true if you want to get the job result in sync (in addition to the result been sent to your callback).
170
+ # If set to false, result is sent to callback url only.
171
+ return_job_status: true,
172
+ # Set to true to receive all of the updates you would otherwise have received in your callback as opposed to
173
+ # only the final result. You must set return_job_status to true to use this flag.
174
+ return_history: false,
175
+ # Set to true to receive links to the selfie and the photo it was compared to.
176
+ # You must set return_job_status to true to use this flag.
177
+ return_image_links: true,
178
+ signature: true
179
+ }
180
+ end
181
+ end
182
+
183
+ # Enhanced KYC
184
+ smart_bank = SmartBank.new
185
+ enhanced_kyc_response = smart_bank.perform_enhanced_kyc
186
+ enhanced_kyc_response['success'] # => true
187
+ enhanced_kyc_response['result']['PartnerParams']['job_id'] # job_id
188
+ enhanced_kyc_response['result']['PartnerParams']['user_id'] # user_id
189
+ enhanced_kyc_response['result']['PartnerParams']['job_type'] # => 5
190
+ # See https://docs.smileidentity.com/products/for-individuals-kyc/identity-lookup#return-values
191
+ # for the full JSON response interpretation
192
+
193
+ # Biometric KYC
194
+ bio_kyc_response = smart_bank.perform_biometric_kyc
195
+ bio_kyc_response['success'] # => true
196
+ bio_kyc_response['result']['PartnerParams']['job_id'] # job_id
197
+ bio_kyc_response['result']['PartnerParams']['user_id'] # user_id
198
+ bio_kyc_response['result']['PartnerParams']['job_type'] # => 1
199
+
200
+ # Document verification
201
+ doc_verification_response = smart_bank.perform_document_verification
202
+ doc_verification_response['success'] # => true
203
+ doc_verification_response['result']['PartnerParams']['job_id'] # job_id
204
+ doc_verification_response['result']['PartnerParams']['user_id'] # user_id
205
+ doc_verification_response['result']['PartnerParams']['job_type'] # => 6
206
+
207
+ # Smart Selfie Authentication
208
+ smart_selfie_auth_response = smart_bank.perform_smart_selfie_authentication
209
+ smart_selfie_auth_response['success'] # => true
210
+ smart_selfie_auth_response['result']['PartnerParams']['job_id'] # job_id
211
+ smart_selfie_auth_response['result']['PartnerParams']['user_id'] # user_id
212
+ smart_selfie_auth_response['result']['PartnerParams']['job_type'] # => 2
213
+
214
+ # All jobs submitted with a selfie has the same return values, result codes and texts. For example
215
+ # see https://docs.smileidentity.com/products/for-individuals-kyc/biometric-kyc#return-values.
216
+ # Save the returned user_id and job_id in your DB as you would need them later when you call other services.
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'smile-identity-core'
4
+
5
+ # See https://docs.smileidentity.com/server-to-server/ruby/products/smartselfie-tm-authentication for
6
+ # how to setup and retrieve configuation values for the WebApi class.
7
+
8
+ # Initialize
9
+ partner_id = '<Put your partner ID here>'; # login to the Smile Identity portal to view your partner id
10
+ default_callback = '<Put your default callback url here>'
11
+ api_key = '<Put your API key here>'; # copy your API key from the Smile Identity portal
12
+ sid_server = '<0 | 1>'; # Use '0' for the sandbox server, use '1' for production server
13
+
14
+ connection = SmileIdentityCore::WebApi.new(partner_id, default_callback, api_key, sid_server)
15
+
16
+ # Create required tracking parameters
17
+ partner_params = {
18
+ user_id: '<put previously registered user"s user_id here>',
19
+ job_id: '<put your unique job ID here>',
20
+ job_type: 2
21
+ }
22
+
23
+ # Create image list
24
+ # image_type_id Integer
25
+ # 0 - Selfie image jpg or png (if you have the full path of the selfie)
26
+ # 2 - Selfie image jpg or png base64 encoded (if you have the base64image string of the selfie)
27
+ # 4 - Liveness image jpg or png (if you have the full path of the liveness image)
28
+ # 6 - Liveness image jpg or png base64 encoded (if you have the base64image string of the liveness image)
29
+ image_details = [
30
+ {
31
+ image_type_id: '<0 | 2>',
32
+ image: '<full path to selfie image or base64image string>'
33
+ },
34
+ { # Not required if you don't require proof of life (note photo of photo check will
35
+ # still be performed on the uploaded selfie)
36
+ image_type_id: '<4 | 6>',
37
+ image: '<full path to liveness image or base64 image string>'
38
+ }
39
+ ]
40
+
41
+ # Set options for the job
42
+ options = {
43
+ # Set to true if you want to get the job result in sync (in addition to the result been sent to your callback).
44
+ # If set to false, result is sent to callback url only.
45
+ return_job_status: '<true | false>',
46
+ # Set to true to receive all of the updates you would otherwise have received in your callback as opposed
47
+ # to only the final result. You must set return_job_status to true to use this flag.
48
+ return_history: '<true | false>',
49
+ # Set to true to receive links to the selfie and the photo it was
50
+ # compared to. You must set return_job_status to true to use this flag.
51
+ return_image_links: '<true | false>',
52
+ signature: true
53
+ }
54
+
55
+ # Submit the job
56
+ connection.submit_job(partner_params, image_details, nil, options)
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+ require 'base64'
5
+ require 'openssl'
6
+ require 'uri'
7
+ require 'typhoeus'
8
+ require_relative 'validations'
9
+
10
+ module SmileIdentityCore
11
+ ##
12
+ # The business verification product lets you search the business registration or
13
+ # tax information (available in Nigeria only) of a business from one of our supported countries.
14
+ # For more info visit https://docs.smileidentity.com/products/for-businesses-kyb/business-verification
15
+ class BusinessVerification
16
+ include Validations
17
+
18
+ BASIC_BUSINESS_REGISTRATION = 'BASIC_BUSINESS_REGISTRATION'
19
+ BUSINESS_REGISTRATION = 'BUSINESS_REGISTRATION'
20
+ TAX_INFORMATION = 'TAX_INFORMATION'
21
+
22
+ REQUIRED_ID_INFO_FIELD = %i[country id_type id_number].freeze
23
+
24
+ ###
25
+ # Submit business verification
26
+ # @param [Hash] partner_params the options to create a message with.
27
+ # @option opts [String] :job_type The job type, this should be 7
28
+ # @option opts [String] :job_id A unique value generated by you to track jobs on your end.
29
+ # @option opts [String] :user_id A unique value generated by you.
30
+ def initialize(partner_id, api_key, sid_server)
31
+ @partner_id = partner_id.to_s
32
+ @api_key = api_key
33
+ @sid_server = sid_server
34
+ @url = if sid_server !~ URI::DEFAULT_PARSER.make_regexp
35
+ SmileIdentityCore::ENV::SID_SERVER_MAPPING[sid_server.to_s]
36
+ else
37
+ sid_server
38
+ end
39
+ end
40
+
41
+ # Submit business verification
42
+ # @param [Hash] partner_params the options to create a job with.
43
+ # @option opts [String] :job_type The job type, this should be 7
44
+ # @option opts [String] :job_id A unique value generated by you to track jobs on your end.
45
+ # @option opts [String] :user_id A unique value generated by you.
46
+ # @param [Hash] id_info
47
+ # @option opts [String] :country The job type, this should be 7
48
+ # @option opts [String] :id_type A unique value generated by you to track jobs on your end.
49
+ # @option opts [String] :id_number A unique value generated by you.
50
+ # @option opts [String] :business_type The business incorporation type
51
+ # bn - business name co - private/public limited it - incorporated trustees
52
+ def submit_job(partner_params, id_info)
53
+ @partner_params = validate_partner_params(symbolize_keys(partner_params))
54
+ @id_info = validate_id_info(symbolize_keys(id_info), REQUIRED_ID_INFO_FIELD)
55
+
56
+ if @partner_params[:job_type].to_i != JobType::BUSINESS_VERIFICATION
57
+ raise ArgumentError, 'Please ensure that you are setting your job_type to 7 to query Business Verification'
58
+ end
59
+
60
+ submit_requests
61
+ end
62
+
63
+ private
64
+
65
+ def symbolize_keys(params)
66
+ params.is_a?(Hash) ? params.transform_keys(&:to_sym) : params
67
+ end
68
+
69
+ def build_payload
70
+ @payload = generate_signature
71
+ @payload.merge!(@id_info)
72
+ add_partner_info
73
+ add_sdk_info
74
+ @payload
75
+ end
76
+
77
+ def add_partner_info
78
+ @payload[:partner_id] = @partner_id
79
+ @payload[:partner_params] = @partner_params
80
+ end
81
+
82
+ def add_sdk_info
83
+ @payload[:source_sdk] = SmileIdentityCore::SOURCE_SDK
84
+ @payload[:source_sdk_version] = SmileIdentityCore::VERSION
85
+ end
86
+
87
+ def generate_signature
88
+ SmileIdentityCore::Signature.new(@partner_id, @api_key).generate_signature
89
+ end
90
+
91
+ def submit_requests
92
+ request = Typhoeus::Request.new(
93
+ "#{@url}/business_verification",
94
+ method: 'POST',
95
+ headers: { 'Content-Type' => 'application/json' },
96
+ body: build_payload.to_json
97
+ )
98
+
99
+ request.on_complete do |response|
100
+ return response.body if response.success?
101
+
102
+ raise "#{response.code}: #{response.body}"
103
+ end
104
+ request.run
105
+ end
106
+
107
+ alias setup_requests submit_requests
108
+ end
109
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SmileIdentityCore
4
+ module ENV
5
+ SID_SERVER_MAPPING = {
6
+ '0' => 'https://testapi.smileidentity.com/v1',
7
+ '1' => 'https://api.smileidentity.com/v1'
8
+ }.freeze
9
+
10
+ TEST = '0'
11
+ LIVE = '1'
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SmileIdentityCore
4
+ module ImageType
5
+ SELFIE_IMAGE_FILE = 0
6
+ ID_CARD_IMAGE_FILE = 1
7
+ SELFIE_IMAGE_BASE64 = 2
8
+ ID_CARD_IMAGE_BASE64 = 3
9
+ LIVENESS_IMAGE_FILE = 4
10
+ ID_CARD_BACK_IMAGE_FILE = 5
11
+ LIVENESS_IMAGE_BASE64 = 6
12
+ ID_CARD_BACK_IMAGE_BASE64 = 7
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SmileIdentityCore
4
+ module JobType
5
+ BIOMETRIC_KYC = 1
6
+ SMART_SELFIE_REGISTRATION = 2
7
+ SMART_SELFIE_AUTHENTICATION = 4
8
+ BASIC_KYC = 5
9
+ ENHANCED_KYC = 5
10
+ DOCUMENT_VERIFICATION = 6
11
+ BUSINESS_VERIFICATION = 7
12
+ end
13
+ end