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.
Files changed (234) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +25 -0
  3. data/LICENSE +21 -0
  4. data/README.md +277 -0
  5. data/lib/didit/authentication/base64_url.rb +34 -0
  6. data/lib/didit/authentication/cache.rb +201 -0
  7. data/lib/didit/authentication/http.rb +150 -0
  8. data/lib/didit/authentication/issuer.rb +115 -0
  9. data/lib/didit/authentication/jws.rb +231 -0
  10. data/lib/didit/authentication/key_set.rb +89 -0
  11. data/lib/didit/authentication/pkce.rb +64 -0
  12. data/lib/didit/authentication/types.rb +175 -0
  13. data/lib/didit/authentication.rb +546 -0
  14. data/lib/didit/client.rb +211 -0
  15. data/lib/didit/errors.rb +153 -0
  16. data/lib/didit/file_part.rb +85 -0
  17. data/lib/didit/internal/config.rb +94 -0
  18. data/lib/didit/internal/errors.rb +83 -0
  19. data/lib/didit/internal/log.rb +41 -0
  20. data/lib/didit/internal/multipart.rb +60 -0
  21. data/lib/didit/internal/request.rb +322 -0
  22. data/lib/didit/internal/transport.rb +198 -0
  23. data/lib/didit/internal/util.rb +76 -0
  24. data/lib/didit/internal.rb +15 -0
  25. data/lib/didit/model.rb +199 -0
  26. data/lib/didit/page.rb +130 -0
  27. data/lib/didit/raw_response.rb +57 -0
  28. data/lib/didit/resource.rb +15 -0
  29. data/lib/didit/resources/account.rb +309 -0
  30. data/lib/didit/resources/address_validation.rb +73 -0
  31. data/lib/didit/resources/age_estimation.rb +110 -0
  32. data/lib/didit/resources/aml.rb +166 -0
  33. data/lib/didit/resources/aml_monitoring.rb +30 -0
  34. data/lib/didit/resources/analytics.rb +87 -0
  35. data/lib/didit/resources/bank.rb +65 -0
  36. data/lib/didit/resources/billing.rb +61 -0
  37. data/lib/didit/resources/biometric_templates.rb +234 -0
  38. data/lib/didit/resources/blocklist.rb +130 -0
  39. data/lib/didit/resources/business_sessions.rb +29 -0
  40. data/lib/didit/resources/businesses.rb +471 -0
  41. data/lib/didit/resources/cases.rb +2116 -0
  42. data/lib/didit/resources/customization.rb +153 -0
  43. data/lib/didit/resources/database_validation.rb +327 -0
  44. data/lib/didit/resources/document_ai.rb +145 -0
  45. data/lib/didit/resources/email.rb +254 -0
  46. data/lib/didit/resources/face_match.rb +103 -0
  47. data/lib/didit/resources/face_search.rb +103 -0
  48. data/lib/didit/resources/fraud_checks.rb +130 -0
  49. data/lib/didit/resources/id_verification.rb +163 -0
  50. data/lib/didit/resources/id_wallets.rb +1468 -0
  51. data/lib/didit/resources/investigator.rb +419 -0
  52. data/lib/didit/resources/ip.rb +68 -0
  53. data/lib/didit/resources/kyb.rb +256 -0
  54. data/lib/didit/resources/lists.rb +332 -0
  55. data/lib/didit/resources/monitoring_events.rb +466 -0
  56. data/lib/didit/resources/networks.rb +427 -0
  57. data/lib/didit/resources/passive_liveness.rb +103 -0
  58. data/lib/didit/resources/phone.rb +271 -0
  59. data/lib/didit/resources/pricing.rb +40 -0
  60. data/lib/didit/resources/proof_of_address.rb +167 -0
  61. data/lib/didit/resources/questionnaires.rb +170 -0
  62. data/lib/didit/resources/regulatory_reports.rb +314 -0
  63. data/lib/didit/resources/report_templates.rb +146 -0
  64. data/lib/didit/resources/sessions.rb +2820 -0
  65. data/lib/didit/resources/transactions.rb +981 -0
  66. data/lib/didit/resources/travel_rule.rb +1202 -0
  67. data/lib/didit/resources/users.rb +521 -0
  68. data/lib/didit/resources/wallet_screening.rb +190 -0
  69. data/lib/didit/resources/webhooks.rb +396 -0
  70. data/lib/didit/resources/workflows.rb +214 -0
  71. data/lib/didit/resources.rb +263 -0
  72. data/lib/didit/types/account.rb +11 -0
  73. data/lib/didit/types/account_components.rb +105 -0
  74. data/lib/didit/types/address_validation.rb +8 -0
  75. data/lib/didit/types/age_estimation.rb +89 -0
  76. data/lib/didit/types/aml.rb +193 -0
  77. data/lib/didit/types/aml_monitoring.rb +73 -0
  78. data/lib/didit/types/analytics.rb +62 -0
  79. data/lib/didit/types/bank.rb +8 -0
  80. data/lib/didit/types/billing.rb +18 -0
  81. data/lib/didit/types/biometric_templates.rb +292 -0
  82. data/lib/didit/types/blocklist.rb +31 -0
  83. data/lib/didit/types/businesses.rb +45 -0
  84. data/lib/didit/types/cases.rb +368 -0
  85. data/lib/didit/types/components.rb +12206 -0
  86. data/lib/didit/types/customization.rb +8 -0
  87. data/lib/didit/types/database_validation.rb +177 -0
  88. data/lib/didit/types/document_ai.rb +135 -0
  89. data/lib/didit/types/email.rb +116 -0
  90. data/lib/didit/types/face_match.rb +93 -0
  91. data/lib/didit/types/face_search.rb +129 -0
  92. data/lib/didit/types/fraud_checks.rb +8 -0
  93. data/lib/didit/types/id_verification.rb +231 -0
  94. data/lib/didit/types/id_wallets.rb +8 -0
  95. data/lib/didit/types/investigator.rb +221 -0
  96. data/lib/didit/types/ip.rb +8 -0
  97. data/lib/didit/types/kyb.rb +1391 -0
  98. data/lib/didit/types/lists.rb +111 -0
  99. data/lib/didit/types/monitoring_events.rb +235 -0
  100. data/lib/didit/types/networks.rb +120 -0
  101. data/lib/didit/types/passive_liveness.rb +95 -0
  102. data/lib/didit/types/phone.rb +69 -0
  103. data/lib/didit/types/proof_of_address.rb +166 -0
  104. data/lib/didit/types/questionnaires.rb +29 -0
  105. data/lib/didit/types/regulatory_reports.rb +100 -0
  106. data/lib/didit/types/report_templates.rb +41 -0
  107. data/lib/didit/types/sessions.rb +1441 -0
  108. data/lib/didit/types/transactions.rb +245 -0
  109. data/lib/didit/types/travel_rule.rb +168 -0
  110. data/lib/didit/types/users.rb +180 -0
  111. data/lib/didit/types/wallet_screening.rb +49 -0
  112. data/lib/didit/types/webhooks.rb +355 -0
  113. data/lib/didit/types/workflows.rb +32 -0
  114. data/lib/didit/types.rb +1681 -0
  115. data/lib/didit/version.rb +5 -0
  116. data/lib/didit/webhooks/canonical_json.rb +187 -0
  117. data/lib/didit/webhooks/client_methods.rb +23 -0
  118. data/lib/didit/webhooks/events.rb +221 -0
  119. data/lib/didit/webhooks/headers.rb +83 -0
  120. data/lib/didit/webhooks/verifier.rb +260 -0
  121. data/lib/didit/webhooks.rb +99 -0
  122. data/lib/didit-sdk.rb +4 -0
  123. data/lib/didit.rb +31 -0
  124. data/sig/didit/authentication/base64_url.rbs +10 -0
  125. data/sig/didit/authentication/cache.rbs +60 -0
  126. data/sig/didit/authentication/http.rbs +37 -0
  127. data/sig/didit/authentication/issuer.rbs +17 -0
  128. data/sig/didit/authentication/jws.rbs +41 -0
  129. data/sig/didit/authentication/jwt.rbs +14 -0
  130. data/sig/didit/authentication/key_set.rbs +25 -0
  131. data/sig/didit/authentication/pkce.rbs +20 -0
  132. data/sig/didit/authentication/types.rbs +114 -0
  133. data/sig/didit/authentication.rbs +81 -0
  134. data/sig/didit/client.rbs +61 -0
  135. data/sig/didit/errors.rbs +80 -0
  136. data/sig/didit/file_part.rbs +19 -0
  137. data/sig/didit/internal.rbs +199 -0
  138. data/sig/didit/model.rbs +42 -0
  139. data/sig/didit/page.rbs +34 -0
  140. data/sig/didit/raw_response.rbs +20 -0
  141. data/sig/didit/resource.rbs +8 -0
  142. data/sig/didit/resources/account.rbs +23 -0
  143. data/sig/didit/resources/address_validation.rbs +9 -0
  144. data/sig/didit/resources/age_estimation.rbs +9 -0
  145. data/sig/didit/resources/aml.rbs +10 -0
  146. data/sig/didit/resources/aml_monitoring.rbs +9 -0
  147. data/sig/didit/resources/analytics.rbs +9 -0
  148. data/sig/didit/resources/bank.rbs +9 -0
  149. data/sig/didit/resources/billing.rbs +10 -0
  150. data/sig/didit/resources/biometric_templates.rbs +13 -0
  151. data/sig/didit/resources/blocklist.rbs +11 -0
  152. data/sig/didit/resources/business_sessions.rbs +9 -0
  153. data/sig/didit/resources/businesses.rbs +22 -0
  154. data/sig/didit/resources/cases.rbs +103 -0
  155. data/sig/didit/resources/customization.rbs +10 -0
  156. data/sig/didit/resources/database_validation.rbs +9 -0
  157. data/sig/didit/resources/document_ai.rbs +9 -0
  158. data/sig/didit/resources/email.rbs +11 -0
  159. data/sig/didit/resources/face_match.rbs +9 -0
  160. data/sig/didit/resources/face_search.rbs +9 -0
  161. data/sig/didit/resources/fraud_checks.rbs +11 -0
  162. data/sig/didit/resources/id_verification.rbs +9 -0
  163. data/sig/didit/resources/id_wallets.rbs +37 -0
  164. data/sig/didit/resources/investigator.rbs +23 -0
  165. data/sig/didit/resources/ip.rbs +9 -0
  166. data/sig/didit/resources/kyb.rbs +12 -0
  167. data/sig/didit/resources/lists.rbs +20 -0
  168. data/sig/didit/resources/monitoring_events.rbs +16 -0
  169. data/sig/didit/resources/networks.rbs +25 -0
  170. data/sig/didit/resources/passive_liveness.rbs +9 -0
  171. data/sig/didit/resources/phone.rbs +11 -0
  172. data/sig/didit/resources/pricing.rbs +9 -0
  173. data/sig/didit/resources/proof_of_address.rbs +9 -0
  174. data/sig/didit/resources/questionnaires.rbs +13 -0
  175. data/sig/didit/resources/regulatory_reports.rbs +16 -0
  176. data/sig/didit/resources/report_templates.rbs +13 -0
  177. data/sig/didit/resources/sessions.rbs +78 -0
  178. data/sig/didit/resources/transactions.rbs +43 -0
  179. data/sig/didit/resources/travel_rule.rbs +62 -0
  180. data/sig/didit/resources/users.rbs +21 -0
  181. data/sig/didit/resources/wallet_screening.rbs +11 -0
  182. data/sig/didit/resources/webhooks.rbs +23 -0
  183. data/sig/didit/resources/workflows.rbs +13 -0
  184. data/sig/didit/resources.rbs +50 -0
  185. data/sig/didit/types/account.rbs +22 -0
  186. data/sig/didit/types/account_components.rbs +94 -0
  187. data/sig/didit/types/address_validation.rbs +7 -0
  188. data/sig/didit/types/age_estimation.rbs +80 -0
  189. data/sig/didit/types/aml.rbs +174 -0
  190. data/sig/didit/types/aml_monitoring.rbs +67 -0
  191. data/sig/didit/types/analytics.rbs +57 -0
  192. data/sig/didit/types/bank.rbs +9 -0
  193. data/sig/didit/types/billing.rbs +19 -0
  194. data/sig/didit/types/biometric_templates.rbs +268 -0
  195. data/sig/didit/types/blocklist.rbs +33 -0
  196. data/sig/didit/types/businesses.rbs +54 -0
  197. data/sig/didit/types/cases.rbs +414 -0
  198. data/sig/didit/types/components.rbs +10920 -0
  199. data/sig/didit/types/customization.rbs +7 -0
  200. data/sig/didit/types/database_validation.rbs +152 -0
  201. data/sig/didit/types/document_ai.rbs +123 -0
  202. data/sig/didit/types/email.rbs +112 -0
  203. data/sig/didit/types/face_match.rbs +86 -0
  204. data/sig/didit/types/face_search.rbs +112 -0
  205. data/sig/didit/types/fraud_checks.rbs +9 -0
  206. data/sig/didit/types/id_verification.rbs +196 -0
  207. data/sig/didit/types/id_wallets.rbs +55 -0
  208. data/sig/didit/types/investigator.rbs +212 -0
  209. data/sig/didit/types/ip.rbs +7 -0
  210. data/sig/didit/types/kyb.rbs +1254 -0
  211. data/sig/didit/types/lists.rbs +106 -0
  212. data/sig/didit/types/monitoring_events.rbs +234 -0
  213. data/sig/didit/types/networks.rbs +113 -0
  214. data/sig/didit/types/passive_liveness.rbs +87 -0
  215. data/sig/didit/types/phone.rbs +65 -0
  216. data/sig/didit/types/proof_of_address.rbs +144 -0
  217. data/sig/didit/types/questionnaires.rbs +30 -0
  218. data/sig/didit/types/regulatory_reports.rbs +101 -0
  219. data/sig/didit/types/report_templates.rbs +42 -0
  220. data/sig/didit/types/sessions.rbs +1349 -0
  221. data/sig/didit/types/transactions.rbs +273 -0
  222. data/sig/didit/types/travel_rule.rbs +188 -0
  223. data/sig/didit/types/users.rbs +181 -0
  224. data/sig/didit/types/wallet_screening.rbs +40 -0
  225. data/sig/didit/types/webhooks.rbs +311 -0
  226. data/sig/didit/types/workflows.rbs +30 -0
  227. data/sig/didit/webhooks/canonical_json.rbs +25 -0
  228. data/sig/didit/webhooks/client_methods.rbs +11 -0
  229. data/sig/didit/webhooks/events.rbs +125 -0
  230. data/sig/didit/webhooks/headers.rbs +22 -0
  231. data/sig/didit/webhooks/verifier.rbs +54 -0
  232. data/sig/didit/webhooks.rbs +37 -0
  233. data/sig/didit.rbs +20 -0
  234. metadata +300 -0
@@ -0,0 +1,8 @@
1
+ # Code generated by codegen from openapi/*.json. DO NOT EDIT.
2
+ # frozen_string_literal: true
3
+
4
+ module Didit
5
+ module Types
6
+
7
+ end
8
+ end
@@ -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
@@ -0,0 +1,8 @@
1
+ # Code generated by codegen from openapi/*.json. DO NOT EDIT.
2
+ # frozen_string_literal: true
3
+
4
+ module Didit
5
+ module Types
6
+
7
+ end
8
+ end