didit-sdk 1.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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +25 -0
- data/LICENSE +21 -0
- data/README.md +277 -0
- data/lib/didit/authentication/base64_url.rb +34 -0
- data/lib/didit/authentication/cache.rb +201 -0
- data/lib/didit/authentication/http.rb +150 -0
- data/lib/didit/authentication/issuer.rb +115 -0
- data/lib/didit/authentication/jws.rb +231 -0
- data/lib/didit/authentication/key_set.rb +89 -0
- data/lib/didit/authentication/pkce.rb +64 -0
- data/lib/didit/authentication/types.rb +175 -0
- data/lib/didit/authentication.rb +546 -0
- data/lib/didit/client.rb +211 -0
- data/lib/didit/errors.rb +153 -0
- data/lib/didit/file_part.rb +85 -0
- data/lib/didit/internal/config.rb +94 -0
- data/lib/didit/internal/errors.rb +83 -0
- data/lib/didit/internal/log.rb +41 -0
- data/lib/didit/internal/multipart.rb +60 -0
- data/lib/didit/internal/request.rb +322 -0
- data/lib/didit/internal/transport.rb +198 -0
- data/lib/didit/internal/util.rb +76 -0
- data/lib/didit/internal.rb +15 -0
- data/lib/didit/model.rb +199 -0
- data/lib/didit/page.rb +130 -0
- data/lib/didit/raw_response.rb +57 -0
- data/lib/didit/resource.rb +15 -0
- data/lib/didit/resources/account.rb +309 -0
- data/lib/didit/resources/address_validation.rb +73 -0
- data/lib/didit/resources/age_estimation.rb +110 -0
- data/lib/didit/resources/aml.rb +166 -0
- data/lib/didit/resources/aml_monitoring.rb +30 -0
- data/lib/didit/resources/analytics.rb +87 -0
- data/lib/didit/resources/bank.rb +65 -0
- data/lib/didit/resources/billing.rb +61 -0
- data/lib/didit/resources/biometric_templates.rb +234 -0
- data/lib/didit/resources/blocklist.rb +130 -0
- data/lib/didit/resources/business_sessions.rb +29 -0
- data/lib/didit/resources/businesses.rb +471 -0
- data/lib/didit/resources/cases.rb +2116 -0
- data/lib/didit/resources/customization.rb +153 -0
- data/lib/didit/resources/database_validation.rb +327 -0
- data/lib/didit/resources/document_ai.rb +145 -0
- data/lib/didit/resources/email.rb +254 -0
- data/lib/didit/resources/face_match.rb +103 -0
- data/lib/didit/resources/face_search.rb +103 -0
- data/lib/didit/resources/fraud_checks.rb +130 -0
- data/lib/didit/resources/id_verification.rb +163 -0
- data/lib/didit/resources/id_wallets.rb +1468 -0
- data/lib/didit/resources/investigator.rb +419 -0
- data/lib/didit/resources/ip.rb +68 -0
- data/lib/didit/resources/kyb.rb +256 -0
- data/lib/didit/resources/lists.rb +332 -0
- data/lib/didit/resources/monitoring_events.rb +466 -0
- data/lib/didit/resources/networks.rb +427 -0
- data/lib/didit/resources/passive_liveness.rb +103 -0
- data/lib/didit/resources/phone.rb +271 -0
- data/lib/didit/resources/pricing.rb +40 -0
- data/lib/didit/resources/proof_of_address.rb +167 -0
- data/lib/didit/resources/questionnaires.rb +170 -0
- data/lib/didit/resources/regulatory_reports.rb +314 -0
- data/lib/didit/resources/report_templates.rb +146 -0
- data/lib/didit/resources/sessions.rb +2820 -0
- data/lib/didit/resources/transactions.rb +981 -0
- data/lib/didit/resources/travel_rule.rb +1202 -0
- data/lib/didit/resources/users.rb +521 -0
- data/lib/didit/resources/wallet_screening.rb +190 -0
- data/lib/didit/resources/webhooks.rb +396 -0
- data/lib/didit/resources/workflows.rb +214 -0
- data/lib/didit/resources.rb +263 -0
- data/lib/didit/types/account.rb +11 -0
- data/lib/didit/types/account_components.rb +105 -0
- data/lib/didit/types/address_validation.rb +8 -0
- data/lib/didit/types/age_estimation.rb +89 -0
- data/lib/didit/types/aml.rb +193 -0
- data/lib/didit/types/aml_monitoring.rb +73 -0
- data/lib/didit/types/analytics.rb +62 -0
- data/lib/didit/types/bank.rb +8 -0
- data/lib/didit/types/billing.rb +18 -0
- data/lib/didit/types/biometric_templates.rb +292 -0
- data/lib/didit/types/blocklist.rb +31 -0
- data/lib/didit/types/businesses.rb +45 -0
- data/lib/didit/types/cases.rb +368 -0
- data/lib/didit/types/components.rb +12206 -0
- data/lib/didit/types/customization.rb +8 -0
- data/lib/didit/types/database_validation.rb +177 -0
- data/lib/didit/types/document_ai.rb +135 -0
- data/lib/didit/types/email.rb +116 -0
- data/lib/didit/types/face_match.rb +93 -0
- data/lib/didit/types/face_search.rb +129 -0
- data/lib/didit/types/fraud_checks.rb +8 -0
- data/lib/didit/types/id_verification.rb +231 -0
- data/lib/didit/types/id_wallets.rb +8 -0
- data/lib/didit/types/investigator.rb +221 -0
- data/lib/didit/types/ip.rb +8 -0
- data/lib/didit/types/kyb.rb +1391 -0
- data/lib/didit/types/lists.rb +111 -0
- data/lib/didit/types/monitoring_events.rb +235 -0
- data/lib/didit/types/networks.rb +120 -0
- data/lib/didit/types/passive_liveness.rb +95 -0
- data/lib/didit/types/phone.rb +69 -0
- data/lib/didit/types/proof_of_address.rb +166 -0
- data/lib/didit/types/questionnaires.rb +29 -0
- data/lib/didit/types/regulatory_reports.rb +100 -0
- data/lib/didit/types/report_templates.rb +41 -0
- data/lib/didit/types/sessions.rb +1441 -0
- data/lib/didit/types/transactions.rb +245 -0
- data/lib/didit/types/travel_rule.rb +168 -0
- data/lib/didit/types/users.rb +180 -0
- data/lib/didit/types/wallet_screening.rb +49 -0
- data/lib/didit/types/webhooks.rb +355 -0
- data/lib/didit/types/workflows.rb +32 -0
- data/lib/didit/types.rb +1681 -0
- data/lib/didit/version.rb +5 -0
- data/lib/didit/webhooks/canonical_json.rb +187 -0
- data/lib/didit/webhooks/client_methods.rb +23 -0
- data/lib/didit/webhooks/events.rb +221 -0
- data/lib/didit/webhooks/headers.rb +83 -0
- data/lib/didit/webhooks/verifier.rb +260 -0
- data/lib/didit/webhooks.rb +99 -0
- data/lib/didit-sdk.rb +4 -0
- data/lib/didit.rb +31 -0
- data/sig/didit/authentication/base64_url.rbs +10 -0
- data/sig/didit/authentication/cache.rbs +60 -0
- data/sig/didit/authentication/http.rbs +37 -0
- data/sig/didit/authentication/issuer.rbs +17 -0
- data/sig/didit/authentication/jws.rbs +41 -0
- data/sig/didit/authentication/jwt.rbs +14 -0
- data/sig/didit/authentication/key_set.rbs +25 -0
- data/sig/didit/authentication/pkce.rbs +20 -0
- data/sig/didit/authentication/types.rbs +114 -0
- data/sig/didit/authentication.rbs +81 -0
- data/sig/didit/client.rbs +61 -0
- data/sig/didit/errors.rbs +80 -0
- data/sig/didit/file_part.rbs +19 -0
- data/sig/didit/internal.rbs +199 -0
- data/sig/didit/model.rbs +42 -0
- data/sig/didit/page.rbs +34 -0
- data/sig/didit/raw_response.rbs +20 -0
- data/sig/didit/resource.rbs +8 -0
- data/sig/didit/resources/account.rbs +23 -0
- data/sig/didit/resources/address_validation.rbs +9 -0
- data/sig/didit/resources/age_estimation.rbs +9 -0
- data/sig/didit/resources/aml.rbs +10 -0
- data/sig/didit/resources/aml_monitoring.rbs +9 -0
- data/sig/didit/resources/analytics.rbs +9 -0
- data/sig/didit/resources/bank.rbs +9 -0
- data/sig/didit/resources/billing.rbs +10 -0
- data/sig/didit/resources/biometric_templates.rbs +13 -0
- data/sig/didit/resources/blocklist.rbs +11 -0
- data/sig/didit/resources/business_sessions.rbs +9 -0
- data/sig/didit/resources/businesses.rbs +22 -0
- data/sig/didit/resources/cases.rbs +103 -0
- data/sig/didit/resources/customization.rbs +10 -0
- data/sig/didit/resources/database_validation.rbs +9 -0
- data/sig/didit/resources/document_ai.rbs +9 -0
- data/sig/didit/resources/email.rbs +11 -0
- data/sig/didit/resources/face_match.rbs +9 -0
- data/sig/didit/resources/face_search.rbs +9 -0
- data/sig/didit/resources/fraud_checks.rbs +11 -0
- data/sig/didit/resources/id_verification.rbs +9 -0
- data/sig/didit/resources/id_wallets.rbs +37 -0
- data/sig/didit/resources/investigator.rbs +23 -0
- data/sig/didit/resources/ip.rbs +9 -0
- data/sig/didit/resources/kyb.rbs +12 -0
- data/sig/didit/resources/lists.rbs +20 -0
- data/sig/didit/resources/monitoring_events.rbs +16 -0
- data/sig/didit/resources/networks.rbs +25 -0
- data/sig/didit/resources/passive_liveness.rbs +9 -0
- data/sig/didit/resources/phone.rbs +11 -0
- data/sig/didit/resources/pricing.rbs +9 -0
- data/sig/didit/resources/proof_of_address.rbs +9 -0
- data/sig/didit/resources/questionnaires.rbs +13 -0
- data/sig/didit/resources/regulatory_reports.rbs +16 -0
- data/sig/didit/resources/report_templates.rbs +13 -0
- data/sig/didit/resources/sessions.rbs +78 -0
- data/sig/didit/resources/transactions.rbs +43 -0
- data/sig/didit/resources/travel_rule.rbs +62 -0
- data/sig/didit/resources/users.rbs +21 -0
- data/sig/didit/resources/wallet_screening.rbs +11 -0
- data/sig/didit/resources/webhooks.rbs +23 -0
- data/sig/didit/resources/workflows.rbs +13 -0
- data/sig/didit/resources.rbs +50 -0
- data/sig/didit/types/account.rbs +22 -0
- data/sig/didit/types/account_components.rbs +94 -0
- data/sig/didit/types/address_validation.rbs +7 -0
- data/sig/didit/types/age_estimation.rbs +80 -0
- data/sig/didit/types/aml.rbs +174 -0
- data/sig/didit/types/aml_monitoring.rbs +67 -0
- data/sig/didit/types/analytics.rbs +57 -0
- data/sig/didit/types/bank.rbs +9 -0
- data/sig/didit/types/billing.rbs +19 -0
- data/sig/didit/types/biometric_templates.rbs +268 -0
- data/sig/didit/types/blocklist.rbs +33 -0
- data/sig/didit/types/businesses.rbs +54 -0
- data/sig/didit/types/cases.rbs +414 -0
- data/sig/didit/types/components.rbs +10920 -0
- data/sig/didit/types/customization.rbs +7 -0
- data/sig/didit/types/database_validation.rbs +152 -0
- data/sig/didit/types/document_ai.rbs +123 -0
- data/sig/didit/types/email.rbs +112 -0
- data/sig/didit/types/face_match.rbs +86 -0
- data/sig/didit/types/face_search.rbs +112 -0
- data/sig/didit/types/fraud_checks.rbs +9 -0
- data/sig/didit/types/id_verification.rbs +196 -0
- data/sig/didit/types/id_wallets.rbs +55 -0
- data/sig/didit/types/investigator.rbs +212 -0
- data/sig/didit/types/ip.rbs +7 -0
- data/sig/didit/types/kyb.rbs +1254 -0
- data/sig/didit/types/lists.rbs +106 -0
- data/sig/didit/types/monitoring_events.rbs +234 -0
- data/sig/didit/types/networks.rbs +113 -0
- data/sig/didit/types/passive_liveness.rbs +87 -0
- data/sig/didit/types/phone.rbs +65 -0
- data/sig/didit/types/proof_of_address.rbs +144 -0
- data/sig/didit/types/questionnaires.rbs +30 -0
- data/sig/didit/types/regulatory_reports.rbs +101 -0
- data/sig/didit/types/report_templates.rbs +42 -0
- data/sig/didit/types/sessions.rbs +1349 -0
- data/sig/didit/types/transactions.rbs +273 -0
- data/sig/didit/types/travel_rule.rbs +188 -0
- data/sig/didit/types/users.rbs +181 -0
- data/sig/didit/types/wallet_screening.rbs +40 -0
- data/sig/didit/types/webhooks.rbs +311 -0
- data/sig/didit/types/workflows.rbs +30 -0
- data/sig/didit/webhooks/canonical_json.rbs +25 -0
- data/sig/didit/webhooks/client_methods.rbs +11 -0
- data/sig/didit/webhooks/events.rbs +125 -0
- data/sig/didit/webhooks/headers.rbs +22 -0
- data/sig/didit/webhooks/verifier.rbs +54 -0
- data/sig/didit/webhooks.rbs +37 -0
- data/sig/didit.rbs +20 -0
- metadata +300 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Code generated by codegen from openapi/*.json. DO NOT EDIT.
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Didit
|
|
5
|
+
module Types
|
|
6
|
+
# Type of document being validated: `P` passport, `DL` driver license, `ID` national ID, `RP` residence permit
|
|
7
|
+
# (plus `SSC`, `HIC`, `WP`, `TC`, `VISA`, `PSC`, `BC`, `OTHER`). Required by some services (e.g. ESP).
|
|
8
|
+
module DatabaseValidationValidateParamsDocumentType
|
|
9
|
+
P = "P"
|
|
10
|
+
DL = "DL"
|
|
11
|
+
ID = "ID"
|
|
12
|
+
RP = "RP"
|
|
13
|
+
SSC = "SSC"
|
|
14
|
+
HIC = "HIC"
|
|
15
|
+
WP = "WP"
|
|
16
|
+
TC = "TC"
|
|
17
|
+
VISA = "VISA"
|
|
18
|
+
PSC = "PSC"
|
|
19
|
+
BC = "BC"
|
|
20
|
+
OTHER = "OTHER"
|
|
21
|
+
|
|
22
|
+
VALUES = [P, DL, ID, RP, SSC, HIC, WP, TC, VISA, PSC, BC, OTHER].freeze
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Gender: `M`, `F`, or `X` (other/unknown). Required for Argentina's RENAPER validation (`arg_renaper`).
|
|
26
|
+
module DatabaseValidationValidateParamsGender
|
|
27
|
+
M = "M"
|
|
28
|
+
F = "F"
|
|
29
|
+
X = "X"
|
|
30
|
+
|
|
31
|
+
VALUES = [M, F, X].freeze
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# What a `no_match` does to `database_validation.status`. Defaults to `DECLINE`.
|
|
35
|
+
module DatabaseValidationValidateParamsNoMatchAction
|
|
36
|
+
DECLINE = "DECLINE"
|
|
37
|
+
NO_ACTION = "NO_ACTION"
|
|
38
|
+
|
|
39
|
+
VALUES = [DECLINE, NO_ACTION].freeze
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# What a `partial_match` does to `database_validation.status`. Defaults to `NO_ACTION` (status stays `Approved`,
|
|
43
|
+
# with a warning).
|
|
44
|
+
module DatabaseValidationValidateParamsPartialMatchAction
|
|
45
|
+
DECLINE = "DECLINE"
|
|
46
|
+
NO_ACTION = "NO_ACTION"
|
|
47
|
+
|
|
48
|
+
VALUES = [DECLINE, NO_ACTION].freeze
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Overall result aggregated across services with field-level comparisons: any `full_match` → `full_match`; else
|
|
52
|
+
# any `partial_match` → `partial_match`; else `no_match`. Outcome-only services, such as biometric criminal
|
|
53
|
+
# screening, can return `null`; inspect each item in `validations` for its `outcome_code`.
|
|
54
|
+
module DatabaseValidationValidateResponseDatabaseValidationMatchType
|
|
55
|
+
FULL_MATCH = "full_match"
|
|
56
|
+
PARTIAL_MATCH = "partial_match"
|
|
57
|
+
NO_MATCH = "no_match"
|
|
58
|
+
|
|
59
|
+
VALUES = [FULL_MATCH, PARTIAL_MATCH, NO_MATCH].freeze
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# `Declined` when the overall `match_type` triggers a `DECLINE` action (`no_match_action` defaults to `DECLINE`,
|
|
63
|
+
# `partial_match_action` to `NO_ACTION`); `In Review` when no service produced a usable comparison, for example
|
|
64
|
+
# when the only selected service came back `REGISTRY_UNAVAILABLE` or `INCONCLUSIVE`; `Approved` otherwise. A
|
|
65
|
+
# request that selected several services can be `Approved` on one service's match while another was unavailable,
|
|
66
|
+
# so check `errors` and the per-service `outcome_code`s too.
|
|
67
|
+
module DatabaseValidationValidateResponseDatabaseValidationStatus
|
|
68
|
+
APPROVED = "Approved"
|
|
69
|
+
DECLINED = "Declined"
|
|
70
|
+
IN_REVIEW = "In Review"
|
|
71
|
+
|
|
72
|
+
VALUES = [APPROVED, DECLINED, IN_REVIEW].freeze
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Derived from the results: `two_by_two` when ≥2 distinct services produced a full match (on the identification
|
|
76
|
+
# number, on full name + date of birth together, or on the address without contradictions); `one_by_one`
|
|
77
|
+
# otherwise. (The request field of the same name is deprecated and ignored.)
|
|
78
|
+
module DatabaseValidationValidateResponseDatabaseValidationValidationType
|
|
79
|
+
ONE_BY_ONE = "one_by_one"
|
|
80
|
+
TWO_BY_TWO = "two_by_two"
|
|
81
|
+
|
|
82
|
+
VALUES = [ONE_BY_ONE, TWO_BY_TWO].freeze
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Vendor-neutral outcome of the registry lookup. `MATCH`/`PARTIAL_MATCH`/`NO_MATCH` describe the comparison;
|
|
86
|
+
# `DOCUMENT_NOT_FOUND` means the identifier is not in the registry; `INCONCLUSIVE` means the registry could not
|
|
87
|
+
# confirm either way (routed to review - NOT a no-match); `BIOMETRIC_NO_MATCH` is a definitive face mismatch while
|
|
88
|
+
# `BIOMETRIC_IMAGE_UNUSABLE` is a technical image problem (retake the selfie); `DECEASED`/`MINOR_BLOCKED` are
|
|
89
|
+
# registry-policy outcomes; `DOCUMENT_SUPERSEDED` means the identity matched but the edition of the document
|
|
90
|
+
# presented is not the one on file (a newer edition has been issued); `INVALID_DOCUMENT_FORMAT`/`INVALID_INPUT`
|
|
91
|
+
# mean the registry itself rejected the data it was sent; `REGISTRY_UNAVAILABLE`/`REGISTRY_ERROR` indicate
|
|
92
|
+
# upstream failures.
|
|
93
|
+
module DatabaseValidationValidateResponseDatabaseValidationValidationsVariant1OutcomeCode
|
|
94
|
+
MATCH = "MATCH"
|
|
95
|
+
PARTIAL_MATCH = "PARTIAL_MATCH"
|
|
96
|
+
NO_MATCH = "NO_MATCH"
|
|
97
|
+
DOCUMENT_NOT_FOUND = "DOCUMENT_NOT_FOUND"
|
|
98
|
+
INVALID_DOCUMENT_FORMAT = "INVALID_DOCUMENT_FORMAT"
|
|
99
|
+
INVALID_INPUT = "INVALID_INPUT"
|
|
100
|
+
MINOR_BLOCKED = "MINOR_BLOCKED"
|
|
101
|
+
DECEASED = "DECEASED"
|
|
102
|
+
BIOMETRIC_NO_MATCH = "BIOMETRIC_NO_MATCH"
|
|
103
|
+
BIOMETRIC_IMAGE_UNUSABLE = "BIOMETRIC_IMAGE_UNUSABLE"
|
|
104
|
+
INCONCLUSIVE = "INCONCLUSIVE"
|
|
105
|
+
DOCUMENT_SUPERSEDED = "DOCUMENT_SUPERSEDED"
|
|
106
|
+
REGISTRY_UNAVAILABLE = "REGISTRY_UNAVAILABLE"
|
|
107
|
+
REGISTRY_ERROR = "REGISTRY_ERROR"
|
|
108
|
+
|
|
109
|
+
VALUES = [MATCH, PARTIAL_MATCH, NO_MATCH, DOCUMENT_NOT_FOUND, INVALID_DOCUMENT_FORMAT, INVALID_INPUT, MINOR_BLOCKED, DECEASED, BIOMETRIC_NO_MATCH, BIOMETRIC_IMAGE_UNUSABLE, INCONCLUSIVE, DOCUMENT_SUPERSEDED, REGISTRY_UNAVAILABLE, REGISTRY_ERROR].freeze
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Known values of an open enum: the API may send others.
|
|
113
|
+
module DatabaseValidationValidateResponseDatabaseValidationValidationsVariant1ValidationValue
|
|
114
|
+
FULL_MATCH = "full_match"
|
|
115
|
+
PARTIAL_MATCH = "partial_match"
|
|
116
|
+
NO_MATCH = "no_match"
|
|
117
|
+
|
|
118
|
+
VALUES = [FULL_MATCH, PARTIAL_MATCH, NO_MATCH].freeze
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# Known values of an open enum: the API may send others.
|
|
122
|
+
module DatabaseValidationValidateResponseDatabaseValidationValidationsVariant2Value
|
|
123
|
+
FULL_MATCH = "full_match"
|
|
124
|
+
PARTIAL_MATCH = "partial_match"
|
|
125
|
+
NO_MATCH = "no_match"
|
|
126
|
+
|
|
127
|
+
VALUES = [FULL_MATCH, PARTIAL_MATCH, NO_MATCH].freeze
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
class DatabaseValidationValidateResponse < Didit::Model
|
|
131
|
+
field :request_id, "request_id", :string
|
|
132
|
+
field :database_validation, "database_validation", "DatabaseValidationValidateResponseDatabaseValidation"
|
|
133
|
+
field :vendor_data, "vendor_data", :string
|
|
134
|
+
field :metadata, "metadata", :any
|
|
135
|
+
field :created_at, "created_at", :datetime
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
class DatabaseValidationValidateResponseDatabaseValidation < Didit::Model
|
|
139
|
+
field :status, "status", :string
|
|
140
|
+
field :issuing_state, "issuing_state", :string
|
|
141
|
+
field :validation_type, "validation_type", :string
|
|
142
|
+
field :screened_data, "screened_data", :any
|
|
143
|
+
field :match_type, "match_type", :string
|
|
144
|
+
field :validations, "validations", [:union, [[:array, "DatabaseValidationValidateResponseDatabaseValidationValidationsVariant1"], [:map, :string]]]
|
|
145
|
+
field :warnings, "warnings", [:array, "DatabaseValidationValidateResponseDatabaseValidationWarnings"]
|
|
146
|
+
field :errors, "errors", [:array, "DatabaseValidationValidateResponseDatabaseValidationErrors"]
|
|
147
|
+
field :services_used, "services_used", [:array, :string]
|
|
148
|
+
field :match_score, "match_score", :float
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
class DatabaseValidationValidateResponseDatabaseValidationErrors < Didit::Model
|
|
152
|
+
field :service_id, "service_id", :string
|
|
153
|
+
field :code, "code", :string
|
|
154
|
+
field :message, "message", :string
|
|
155
|
+
field :retryable, "retryable", :boolean
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
# Per-service validation result (returned when `save_api_request=true`, the default).
|
|
159
|
+
class DatabaseValidationValidateResponseDatabaseValidationValidationsVariant1 < Didit::Model
|
|
160
|
+
field :service_id, "service_id", :string
|
|
161
|
+
field :service_name, "service_name", :string
|
|
162
|
+
field :validation, "validation", [:map, :string]
|
|
163
|
+
field :outcome_code, "outcome_code", :string
|
|
164
|
+
field :outcome_detail, "outcome_detail", :string
|
|
165
|
+
field :source_data, "source_data", :any
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
class DatabaseValidationValidateResponseDatabaseValidationWarnings < Didit::Model
|
|
169
|
+
field :feature, "feature", :string
|
|
170
|
+
field :risk, "risk", :string
|
|
171
|
+
field :additional_data, "additional_data", :any
|
|
172
|
+
field :log_type, "log_type", :string
|
|
173
|
+
field :short_description, "short_description", :string
|
|
174
|
+
field :long_description, "long_description", :string
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
end
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Code generated by codegen from openapi/*.json. DO NOT EDIT.
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Didit
|
|
5
|
+
module Types
|
|
6
|
+
# What to do when PDF/EXIF forensics suspect manipulation - modified after digital signing, known PDF editor,
|
|
7
|
+
# overlay-text manipulation, suspicious re-export, image anomalies (`DOCUMENT_AI_SUSPECTED_MANIPULATION`).
|
|
8
|
+
module DocumentAiAnalyzeParamsDocumentAiDocumentTamperingAction
|
|
9
|
+
DECLINE = "DECLINE"
|
|
10
|
+
REVIEW = "REVIEW"
|
|
11
|
+
NO_ACTION = "NO_ACTION"
|
|
12
|
+
|
|
13
|
+
VALUES = [DECLINE, REVIEW, NO_ACTION].freeze
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# What to do when at least one `required` field could not be read (`DOCUMENT_AI_MISSING_REQUIRED_FIELDS`;
|
|
17
|
+
# `additional_data.missing_fields` lists them).
|
|
18
|
+
module DocumentAiAnalyzeParamsDocumentAiMissingRequiredFieldsAction
|
|
19
|
+
DECLINE = "DECLINE"
|
|
20
|
+
REVIEW = "REVIEW"
|
|
21
|
+
NO_ACTION = "NO_ACTION"
|
|
22
|
+
|
|
23
|
+
VALUES = [DECLINE, REVIEW, NO_ACTION].freeze
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# What to do when `name_match_score` is below the threshold (`DOCUMENT_AI_NAME_MISMATCH`).
|
|
27
|
+
module DocumentAiAnalyzeParamsDocumentAiNameMismatchAction
|
|
28
|
+
DECLINE = "DECLINE"
|
|
29
|
+
REVIEW = "REVIEW"
|
|
30
|
+
NO_ACTION = "NO_ACTION"
|
|
31
|
+
|
|
32
|
+
VALUES = [DECLINE, REVIEW, NO_ACTION].freeze
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# What to do when no field could be read from the document (`DOCUMENT_AI_UNREADABLE_DOCUMENT`).
|
|
36
|
+
module DocumentAiAnalyzeParamsDocumentAiUnreadableDocumentAction
|
|
37
|
+
DECLINE = "DECLINE"
|
|
38
|
+
REVIEW = "REVIEW"
|
|
39
|
+
NO_ACTION = "NO_ACTION"
|
|
40
|
+
|
|
41
|
+
VALUES = [DECLINE, REVIEW, NO_ACTION].freeze
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# What to do when the upload is empty or not a processable file (`DOCUMENT_AI_UNSUPPORTED_FILE`).
|
|
45
|
+
module DocumentAiAnalyzeParamsDocumentAiUnsupportedFileAction
|
|
46
|
+
DECLINE = "DECLINE"
|
|
47
|
+
REVIEW = "REVIEW"
|
|
48
|
+
NO_ACTION = "NO_ACTION"
|
|
49
|
+
|
|
50
|
+
VALUES = [DECLINE, REVIEW, NO_ACTION].freeze
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Known values of an open enum: the API may send others.
|
|
54
|
+
module DocumentAiAnalyzeResponseDocumentAiFieldsType
|
|
55
|
+
TEXT = "text"
|
|
56
|
+
NUMBER = "number"
|
|
57
|
+
DATE = "date"
|
|
58
|
+
|
|
59
|
+
VALUES = [TEXT, NUMBER, DATE].freeze
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# `Approved` when no warning resolves to a decline or review; `Declined` when at least one risk maps to `DECLINE`;
|
|
63
|
+
# otherwise `In Review` when at least one maps to `REVIEW`. The `warnings` list explains why.
|
|
64
|
+
module DocumentAiAnalyzeResponseDocumentAiStatus
|
|
65
|
+
APPROVED = "Approved"
|
|
66
|
+
DECLINED = "Declined"
|
|
67
|
+
IN_REVIEW = "In Review"
|
|
68
|
+
|
|
69
|
+
VALUES = [APPROVED, DECLINED, IN_REVIEW].freeze
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Feature that raised the warning. Always `DOCUMENT_AI` on this endpoint.
|
|
73
|
+
module DocumentAiAnalyzeResponseDocumentAiWarningsFeature
|
|
74
|
+
DOCUMENT_AI = "DOCUMENT_AI"
|
|
75
|
+
|
|
76
|
+
VALUES = [DOCUMENT_AI].freeze
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Severity derived from the configured action: `error` (DECLINE), `warning` (REVIEW), `information` (NO_ACTION).
|
|
80
|
+
module DocumentAiAnalyzeResponseDocumentAiWarningsLogType
|
|
81
|
+
ERROR = "error"
|
|
82
|
+
WARNING = "warning"
|
|
83
|
+
INFORMATION = "information"
|
|
84
|
+
|
|
85
|
+
VALUES = [ERROR, WARNING, INFORMATION].freeze
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Machine-readable risk code. Each one is governed by the matching `document_ai_*_action` request option.
|
|
89
|
+
module DocumentAiAnalyzeResponseDocumentAiWarningsRisk
|
|
90
|
+
DOCUMENT_AI_UNREADABLE_DOCUMENT = "DOCUMENT_AI_UNREADABLE_DOCUMENT"
|
|
91
|
+
DOCUMENT_AI_MISSING_REQUIRED_FIELDS = "DOCUMENT_AI_MISSING_REQUIRED_FIELDS"
|
|
92
|
+
DOCUMENT_AI_SUSPECTED_MANIPULATION = "DOCUMENT_AI_SUSPECTED_MANIPULATION"
|
|
93
|
+
DOCUMENT_AI_NAME_MISMATCH = "DOCUMENT_AI_NAME_MISMATCH"
|
|
94
|
+
DOCUMENT_AI_UNSUPPORTED_FILE = "DOCUMENT_AI_UNSUPPORTED_FILE"
|
|
95
|
+
|
|
96
|
+
VALUES = [DOCUMENT_AI_UNREADABLE_DOCUMENT, DOCUMENT_AI_MISSING_REQUIRED_FIELDS, DOCUMENT_AI_SUSPECTED_MANIPULATION, DOCUMENT_AI_NAME_MISMATCH, DOCUMENT_AI_UNSUPPORTED_FILE].freeze
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
class DocumentAiAnalyzeResponse < Didit::Model
|
|
100
|
+
field :request_id, "request_id", :string
|
|
101
|
+
field :document_ai, "document_ai", "DocumentAiAnalyzeResponseDocumentAi"
|
|
102
|
+
field :vendor_data, "vendor_data", :string
|
|
103
|
+
field :metadata, "metadata", :any
|
|
104
|
+
field :created_at, "created_at", :datetime
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
class DocumentAiAnalyzeResponseDocumentAi < Didit::Model
|
|
108
|
+
field :status, "status", :string
|
|
109
|
+
field :extracted_data, "extracted_data", :any
|
|
110
|
+
field :detected_codes, "detected_codes", [:array, "DocumentAIDetectedCode"]
|
|
111
|
+
field :fields, "fields", [:array, "DocumentAiAnalyzeResponseDocumentAiFields"]
|
|
112
|
+
field :name_match_score, "name_match_score", :float
|
|
113
|
+
field :name_on_document, "name_on_document", :string
|
|
114
|
+
field :warnings, "warnings", [:array, "DocumentAiAnalyzeResponseDocumentAiWarnings"]
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
class DocumentAiAnalyzeResponseDocumentAiFields < Didit::Model
|
|
118
|
+
field :key, "key", :string
|
|
119
|
+
field :name, "name", :string
|
|
120
|
+
field :instruction, "instruction", :string
|
|
121
|
+
field :type, "type", :string
|
|
122
|
+
field :required, "required", :boolean
|
|
123
|
+
field :is_full_name, "is_full_name", :boolean
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
class DocumentAiAnalyzeResponseDocumentAiWarnings < Didit::Model
|
|
127
|
+
field :risk, "risk", :string
|
|
128
|
+
field :feature, "feature", :string
|
|
129
|
+
field :additional_data, "additional_data", :any
|
|
130
|
+
field :log_type, "log_type", :string
|
|
131
|
+
field :short_description, "short_description", :string
|
|
132
|
+
field :long_description, "long_description", :string
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Code generated by codegen from openapi/*.json. DO NOT EDIT.
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Didit
|
|
5
|
+
module Types
|
|
6
|
+
# What to do when the address appears in known data breaches (`email.is_breached`). `DECLINE` flips the final
|
|
7
|
+
# `status` to `Declined`; `NO_ACTION` records the risk in `email.warnings`.
|
|
8
|
+
module EmailCheckCodeParamsBreachedEmailAction
|
|
9
|
+
NO_ACTION = "NO_ACTION"
|
|
10
|
+
DECLINE = "DECLINE"
|
|
11
|
+
|
|
12
|
+
VALUES = [NO_ACTION, DECLINE].freeze
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# What to do when the domain belongs to a disposable/temporary-mail provider (`email.is_disposable`). `DECLINE`
|
|
16
|
+
# flips the final `status` to `Declined`; `NO_ACTION` records the risk in `email.warnings`.
|
|
17
|
+
module EmailCheckCodeParamsDisposableEmailAction
|
|
18
|
+
NO_ACTION = "NO_ACTION"
|
|
19
|
+
DECLINE = "DECLINE"
|
|
20
|
+
|
|
21
|
+
VALUES = [NO_ACTION, DECLINE].freeze
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# What to do when the same address was already used and approved by a different user (only previously Approved
|
|
25
|
+
# verifications count) (different `vendor_data`) of your application. `DECLINE` flips the final `status` to
|
|
26
|
+
# `Declined`; `NO_ACTION` records the risk in `email.warnings` and fills `email.matches`.
|
|
27
|
+
module EmailCheckCodeParamsDuplicatedEmailAction
|
|
28
|
+
NO_ACTION = "NO_ACTION"
|
|
29
|
+
DECLINE = "DECLINE"
|
|
30
|
+
|
|
31
|
+
VALUES = [NO_ACTION, DECLINE].freeze
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Action when the social footprint check finds the address registered on none of the platforms it covers. Only
|
|
35
|
+
# NO_ACTION and DECLINE are accepted on this endpoint; REVIEW is available on the workflow configuration key of
|
|
36
|
+
# the same name.
|
|
37
|
+
module EmailCheckCodeParamsEmailNoSocialPresenceAction
|
|
38
|
+
NO_ACTION = "NO_ACTION"
|
|
39
|
+
DECLINE = "DECLINE"
|
|
40
|
+
|
|
41
|
+
VALUES = [NO_ACTION, DECLINE].freeze
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Language of the OTP email template. Defaults to `en`. Unsupported values return `400` listing all supported
|
|
45
|
+
# locales.
|
|
46
|
+
module EmailSendCodeParamsOptionsLocale
|
|
47
|
+
EN = "en"
|
|
48
|
+
AR = "ar"
|
|
49
|
+
BN = "bn"
|
|
50
|
+
BG = "bg"
|
|
51
|
+
BS = "bs"
|
|
52
|
+
CA = "ca"
|
|
53
|
+
CS = "cs"
|
|
54
|
+
DA = "da"
|
|
55
|
+
DE = "de"
|
|
56
|
+
EL = "el"
|
|
57
|
+
ES = "es"
|
|
58
|
+
ET = "et"
|
|
59
|
+
FA = "fa"
|
|
60
|
+
FI = "fi"
|
|
61
|
+
FR = "fr"
|
|
62
|
+
HE = "he"
|
|
63
|
+
HI = "hi"
|
|
64
|
+
HR = "hr"
|
|
65
|
+
HU = "hu"
|
|
66
|
+
HY = "hy"
|
|
67
|
+
ID = "id"
|
|
68
|
+
IT = "it"
|
|
69
|
+
JA = "ja"
|
|
70
|
+
KA = "ka"
|
|
71
|
+
KK = "kk"
|
|
72
|
+
KO = "ko"
|
|
73
|
+
KY = "ky"
|
|
74
|
+
LT = "lt"
|
|
75
|
+
LV = "lv"
|
|
76
|
+
CNR = "cnr"
|
|
77
|
+
MK = "mk"
|
|
78
|
+
MN = "mn"
|
|
79
|
+
MS = "ms"
|
|
80
|
+
NL = "nl"
|
|
81
|
+
NO = "no"
|
|
82
|
+
PL = "pl"
|
|
83
|
+
PT_BR = "pt-BR"
|
|
84
|
+
PT = "pt"
|
|
85
|
+
RO = "ro"
|
|
86
|
+
RU = "ru"
|
|
87
|
+
SK = "sk"
|
|
88
|
+
SL = "sl"
|
|
89
|
+
SO = "so"
|
|
90
|
+
SQ = "sq"
|
|
91
|
+
SR = "sr"
|
|
92
|
+
SV = "sv"
|
|
93
|
+
TH = "th"
|
|
94
|
+
TR = "tr"
|
|
95
|
+
UK = "uk"
|
|
96
|
+
UZ = "uz"
|
|
97
|
+
VI = "vi"
|
|
98
|
+
ZH_CN = "zh-CN"
|
|
99
|
+
ZH_TW = "zh-TW"
|
|
100
|
+
ZH = "zh"
|
|
101
|
+
|
|
102
|
+
VALUES = [EN, AR, BN, BG, BS, CA, CS, DA, DE, EL, ES, ET, FA, FI, FR, HE, HI, HR, HU, HY, ID, IT, JA, KA, KK, KO, KY, LT, LV, CNR, MK, MN, MS, NL, NO, PL, PT_BR, PT, RO, RU, SK, SL, SO, SQ, SR, SV, TH, TR, UK, UZ, VI, ZH_CN, ZH_TW, ZH].freeze
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Platform of the end user's device.
|
|
106
|
+
module EmailSendCodeParamsSignalsDevicePlatform
|
|
107
|
+
ANDROID = "android"
|
|
108
|
+
IOS = "ios"
|
|
109
|
+
IPADOS = "ipados"
|
|
110
|
+
TVOS = "tvos"
|
|
111
|
+
WEB = "web"
|
|
112
|
+
|
|
113
|
+
VALUES = [ANDROID, IOS, IPADOS, TVOS, WEB].freeze
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Code generated by codegen from openapi/*.json. DO NOT EDIT.
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Didit
|
|
5
|
+
module Types
|
|
6
|
+
# `Approved` when the similarity score is strictly above `face_match_score_decline_threshold` and a score could be
|
|
7
|
+
# computed; `Declined` otherwise (a warning explains why).
|
|
8
|
+
module FaceMatchCompareResponseFaceMatchStatus
|
|
9
|
+
APPROVED = "Approved"
|
|
10
|
+
DECLINED = "Declined"
|
|
11
|
+
|
|
12
|
+
VALUES = [APPROVED, DECLINED].freeze
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Feature that raised the warning. Always `FACEMATCH` on this endpoint.
|
|
16
|
+
module FaceMatchCompareResponseFaceMatchWarningsFeature
|
|
17
|
+
FACEMATCH = "FACEMATCH"
|
|
18
|
+
|
|
19
|
+
VALUES = [FACEMATCH].freeze
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Severity. `error` warnings drive `status` to `Declined`; `warning` and `information` entries are advisory and
|
|
23
|
+
# never decline on their own.
|
|
24
|
+
module FaceMatchCompareResponseFaceMatchWarningsLogType
|
|
25
|
+
ERROR = "error"
|
|
26
|
+
WARNING = "warning"
|
|
27
|
+
INFORMATION = "information"
|
|
28
|
+
|
|
29
|
+
VALUES = [ERROR, WARNING, INFORMATION].freeze
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Machine-readable risk code.
|
|
33
|
+
module FaceMatchCompareResponseFaceMatchWarningsRisk
|
|
34
|
+
NO_REFERENCE_IMAGE = "NO_REFERENCE_IMAGE"
|
|
35
|
+
LOW_FACE_MATCH_SIMILARITY = "LOW_FACE_MATCH_SIMILARITY"
|
|
36
|
+
|
|
37
|
+
VALUES = [NO_REFERENCE_IMAGE, LOW_FACE_MATCH_SIMILARITY].freeze
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
class FaceMatchCompareResponse < Didit::Model
|
|
41
|
+
field :request_id, "request_id", :string
|
|
42
|
+
field :face_match, "face_match", "FaceMatchCompareResponseFaceMatch"
|
|
43
|
+
field :vendor_data, "vendor_data", :string
|
|
44
|
+
field :metadata, "metadata", :any
|
|
45
|
+
field :created_at, "created_at", :datetime
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
class FaceMatchCompareResponseFaceMatch < Didit::Model
|
|
49
|
+
field :status, "status", :string
|
|
50
|
+
field :score, "score", :float
|
|
51
|
+
field :user_image, "user_image", "FaceMatchCompareResponseFaceMatchUserImage"
|
|
52
|
+
field :ref_image, "ref_image", "FaceMatchCompareResponseFaceMatchRefImage"
|
|
53
|
+
field :warnings, "warnings", [:array, "FaceMatchCompareResponseFaceMatchWarnings"]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Face-detection results for the reference image, same shape as `user_image`.
|
|
57
|
+
class FaceMatchCompareResponseFaceMatchRefImage < Didit::Model
|
|
58
|
+
field :entities, "entities", [:array, "FaceMatchCompareResponseFaceMatchRefImageEntities"]
|
|
59
|
+
field :best_angle, "best_angle", :integer
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
class FaceMatchCompareResponseFaceMatchRefImageEntities < Didit::Model
|
|
63
|
+
field :bbox, "bbox", [:array, :integer]
|
|
64
|
+
field :confidence, "confidence", :float
|
|
65
|
+
field :age, "age", :float
|
|
66
|
+
field :gender, "gender", :string
|
|
67
|
+
field :race, "race", :string
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Face-detection results for the analyzed images.
|
|
71
|
+
class FaceMatchCompareResponseFaceMatchUserImage < Didit::Model
|
|
72
|
+
field :entities, "entities", [:array, "FaceMatchCompareResponseFaceMatchUserImageEntities"]
|
|
73
|
+
field :best_angle, "best_angle", :integer
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
class FaceMatchCompareResponseFaceMatchUserImageEntities < Didit::Model
|
|
77
|
+
field :bbox, "bbox", [:array, :integer]
|
|
78
|
+
field :confidence, "confidence", :float
|
|
79
|
+
field :age, "age", :float
|
|
80
|
+
field :gender, "gender", :string
|
|
81
|
+
field :race, "race", :string
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
class FaceMatchCompareResponseFaceMatchWarnings < Didit::Model
|
|
85
|
+
field :risk, "risk", :string
|
|
86
|
+
field :feature, "feature", :string
|
|
87
|
+
field :additional_data, "additional_data", :any
|
|
88
|
+
field :log_type, "log_type", :string
|
|
89
|
+
field :short_description, "short_description", :string
|
|
90
|
+
field :long_description, "long_description", :string
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Code generated by codegen from openapi/*.json. DO NOT EDIT.
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Didit
|
|
5
|
+
module Types
|
|
6
|
+
# Search policy. `most_similar` (default) ranks every enrolled face in your application by similarity.
|
|
7
|
+
# `blocklisted_or_approved` restricts candidates to blocklisted faces, allowlisted faces, faces from approved
|
|
8
|
+
# sessions, and imported user-profile faces - with blocklisted entries ranked first.
|
|
9
|
+
module FaceSearchSearchParamsSearchType
|
|
10
|
+
MOST_SIMILAR = "most_similar"
|
|
11
|
+
BLOCKLISTED_OR_APPROVED = "blocklisted_or_approved"
|
|
12
|
+
|
|
13
|
+
VALUES = [MOST_SIMILAR, BLOCKLISTED_OR_APPROVED].freeze
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Where the matched face was enrolled from: `session` - a verification session or a saved standalone API call;
|
|
17
|
+
# `imported` - a face uploaded directly to a User profile; `list_entry` - a face attached to one of your lists;
|
|
18
|
+
# `retained_template` - an image-free biometric template stored on a User, listed under
|
|
19
|
+
# `/v3/biometric-templates/`.
|
|
20
|
+
module FaceSearchSearchResponseFaceSearchMatchesSource
|
|
21
|
+
SESSION = "session"
|
|
22
|
+
IMPORTED = "imported"
|
|
23
|
+
LIST_ENTRY = "list_entry"
|
|
24
|
+
RETAINED_TEMPLATE = "retained_template"
|
|
25
|
+
|
|
26
|
+
VALUES = [SESSION, IMPORTED, LIST_ENTRY, RETAINED_TEMPLATE].freeze
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# `Declined` only when a `FACE_IN_BLOCKLIST` or `POSSIBLE_FACE_IN_BLOCKLIST` warning fired. Duplicate matches and
|
|
30
|
+
# multiple-face warnings never decline.
|
|
31
|
+
module FaceSearchSearchResponseFaceSearchStatus
|
|
32
|
+
APPROVED = "Approved"
|
|
33
|
+
DECLINED = "Declined"
|
|
34
|
+
|
|
35
|
+
VALUES = [APPROVED, DECLINED].freeze
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Feature that raised the warning. Always `LIVENESS` on this endpoint.
|
|
39
|
+
module FaceSearchSearchResponseFaceSearchWarningsFeature
|
|
40
|
+
LIVENESS = "LIVENESS"
|
|
41
|
+
|
|
42
|
+
VALUES = [LIVENESS].freeze
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Severity. `error` warnings drive `status` to `Declined`; `warning` and `information` entries are advisory and
|
|
46
|
+
# never decline on their own.
|
|
47
|
+
module FaceSearchSearchResponseFaceSearchWarningsLogType
|
|
48
|
+
ERROR = "error"
|
|
49
|
+
WARNING = "warning"
|
|
50
|
+
INFORMATION = "information"
|
|
51
|
+
|
|
52
|
+
VALUES = [ERROR, WARNING, INFORMATION].freeze
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Machine-readable risk code.
|
|
56
|
+
module FaceSearchSearchResponseFaceSearchWarningsRisk
|
|
57
|
+
MULTIPLE_FACES_DETECTED = "MULTIPLE_FACES_DETECTED"
|
|
58
|
+
FACE_IN_BLOCKLIST = "FACE_IN_BLOCKLIST"
|
|
59
|
+
POSSIBLE_FACE_IN_BLOCKLIST = "POSSIBLE_FACE_IN_BLOCKLIST"
|
|
60
|
+
DUPLICATED_FACE = "DUPLICATED_FACE"
|
|
61
|
+
POSSIBLE_DUPLICATED_FACE = "POSSIBLE_DUPLICATED_FACE"
|
|
62
|
+
|
|
63
|
+
VALUES = [MULTIPLE_FACES_DETECTED, FACE_IN_BLOCKLIST, POSSIBLE_FACE_IN_BLOCKLIST, DUPLICATED_FACE, POSSIBLE_DUPLICATED_FACE].freeze
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
class FaceSearchSearchResponse < Didit::Model
|
|
67
|
+
field :request_id, "request_id", :string
|
|
68
|
+
field :face_search, "face_search", "FaceSearchSearchResponseFaceSearch"
|
|
69
|
+
field :vendor_data, "vendor_data", :string
|
|
70
|
+
field :metadata, "metadata", :any
|
|
71
|
+
field :created_at, "created_at", :datetime
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
class FaceSearchSearchResponseFaceSearch < Didit::Model
|
|
75
|
+
field :status, "status", :string
|
|
76
|
+
field :total_matches, "total_matches", :integer
|
|
77
|
+
field :matches, "matches", [:array, "FaceSearchSearchResponseFaceSearchMatches"]
|
|
78
|
+
field :user_image, "user_image", "FaceSearchSearchResponseFaceSearchUserImage"
|
|
79
|
+
field :warnings, "warnings", [:array, "FaceSearchSearchResponseFaceSearchWarnings"]
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
class FaceSearchSearchResponseFaceSearchMatches < Didit::Model
|
|
83
|
+
field :session_id, "session_id", :string
|
|
84
|
+
field :session_number, "session_number", :integer
|
|
85
|
+
field :similarity_percentage, "similarity_percentage", :float
|
|
86
|
+
field :source, "source", :string
|
|
87
|
+
field :vendor_data, "vendor_data", :string
|
|
88
|
+
field :vendor_user_id, "vendor_user_id", :string
|
|
89
|
+
field :biometric_template_id, "biometric_template_id", :string
|
|
90
|
+
field :verification_date, "verification_date", :datetime
|
|
91
|
+
field :user_details, "user_details", "FaceSearchSearchResponseFaceSearchMatchesUserDetails"
|
|
92
|
+
field :match_image_url, "match_image_url", :string
|
|
93
|
+
field :status, "status", :string
|
|
94
|
+
field :is_blocklisted, "is_blocklisted", :boolean
|
|
95
|
+
field :is_allowlisted, "is_allowlisted", :boolean
|
|
96
|
+
field :api_service, "api_service", :string
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Identity data extracted during the matched session's document verification. `null` when the matched session has
|
|
100
|
+
# no document data (e.g. liveness-only sessions) and always `null` for `retained_template` matches. For `source:
|
|
101
|
+
# imported` matches it is populated from the User profile instead: `full_name` set,
|
|
102
|
+
# `document_type`/`document_number` null.
|
|
103
|
+
class FaceSearchSearchResponseFaceSearchMatchesUserDetails < Didit::Model
|
|
104
|
+
field :full_name, "full_name", :string
|
|
105
|
+
field :document_type, "document_type", :string
|
|
106
|
+
field :document_number, "document_number", :string
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# Face-detection results for the submitted image. Entries here carry only `bbox` and `confidence`.
|
|
110
|
+
class FaceSearchSearchResponseFaceSearchUserImage < Didit::Model
|
|
111
|
+
field :entities, "entities", [:array, "FaceSearchSearchResponseFaceSearchUserImageEntities"]
|
|
112
|
+
field :best_angle, "best_angle", :integer
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
class FaceSearchSearchResponseFaceSearchUserImageEntities < Didit::Model
|
|
116
|
+
field :bbox, "bbox", [:array, :integer]
|
|
117
|
+
field :confidence, "confidence", :float
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
class FaceSearchSearchResponseFaceSearchWarnings < Didit::Model
|
|
121
|
+
field :risk, "risk", :string
|
|
122
|
+
field :feature, "feature", :string
|
|
123
|
+
field :additional_data, "additional_data", :any
|
|
124
|
+
field :log_type, "log_type", :string
|
|
125
|
+
field :short_description, "short_description", :string
|
|
126
|
+
field :long_description, "long_description", :string
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|