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,175 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Didit
4
+ class Authentication
5
+ # +org+: the person's earliest organization membership, when customer
6
+ # organizations are on.
7
+ class OrganizationClaim < Model
8
+ field :id, "id", :string
9
+ # "admin", "member" or "billing"
10
+ field :role, "role", :string
11
+ end
12
+
13
+ # +act+: the agent acting for the person. Only agent access tokens carry it.
14
+ class ActorClaim < Model
15
+ # The agent id.
16
+ field :sub, "sub", :string
17
+ # The agent's name.
18
+ field :agent, "agent", :string
19
+ # What the person allowed the agent to do; never act beyond these.
20
+ field :scopes, "scopes", %i[array string]
21
+ end
22
+
23
+ # +verified+: the highest approved verification level and the claims the
24
+ # application selected. Empty when the person has not been verified.
25
+ class VerifiedClaims < Model
26
+ # "liveness", "liveness_face_match" or "full_id"
27
+ field :level, "level", :string
28
+ # The readers keep the claim names.
29
+ field :over_18, "over_18", :boolean # rubocop:disable Naming/VariableNumber
30
+ field :over_21, "over_21", :boolean # rubocop:disable Naming/VariableNumber
31
+ field :given_name, "given_name", :string
32
+ field :family_name, "family_name", :string
33
+ # YYYY-MM-DD
34
+ field :birthdate, "birthdate", :string
35
+ field :nationality, "nationality", :string
36
+ field :country, "country", :string
37
+ field :document_verified, "document_verified", :boolean
38
+ field :liveness, "liveness", :boolean
39
+ end
40
+
41
+ # The claims access tokens and ID tokens share. Times are unix seconds.
42
+ class TokenClaims < Model
43
+ # The issuer.
44
+ field :iss, "iss", :string
45
+ # The identity id of the person.
46
+ field :sub, "sub", :string
47
+ # The application id: a String or an Array of them.
48
+ field :aud, "aud", :any
49
+ # The session id (the grant id on an agent token).
50
+ field :sid, "sid", :string
51
+ field :jti, "jti", :string
52
+ field :iat, "iat", :integer
53
+ field :exp, "exp", :integer
54
+ field :nbf, "nbf", :integer
55
+ # The person's reference across Didit products (verification sessions, monitoring).
56
+ field :vendor_data, "vendor_data", :string
57
+ # How the person signed in, for example ["passkey"]; empty on an agent token.
58
+ field :amr, "amr", %i[array string]
59
+ field :org, "org", OrganizationClaim
60
+ field :verified, "verified", VerifiedClaims
61
+ # nil for a person; the agent on an agent access token.
62
+ field :act, "act", ActorClaim
63
+ end
64
+
65
+ # The verified claims of an access token (header +typ: at+jwt+).
66
+ class AccessTokenClaims < TokenClaims
67
+ # The application id.
68
+ field :client_id, "client_id", :string
69
+ end
70
+
71
+ # The verified claims of an ID token (header +typ: JWT+).
72
+ class IdTokenClaims < TokenClaims
73
+ field :auth_time, "auth_time", :integer
74
+ field :nonce, "nonce", :string
75
+ field :email, "email", :string
76
+ field :email_verified, "email_verified", :boolean
77
+ field :name, "name", :string
78
+ field :phone_number, "phone_number", :string
79
+ end
80
+
81
+ # +POST token/+: new tokens. {#inspect} leaves the tokens out; never log them.
82
+ class TokenResponse < Model
83
+ SECRET_FIELDS = %w[access_token refresh_token id_token].freeze
84
+
85
+ # A JWT access token that expires within five minutes.
86
+ field :access_token, "access_token", :string
87
+ # "Bearer"
88
+ field :token_type, "token_type", :string
89
+ # Seconds until the access token expires.
90
+ field :expires_in, "expires_in", :integer
91
+ # Opaque and single use: every refresh returns a new one.
92
+ field :refresh_token, "refresh_token", :string
93
+ field :id_token, "id_token", :string
94
+ field :scope, "scope", :string
95
+ field :session_id, "session_id", :string
96
+
97
+ def inspect
98
+ shown = raw_data.to_h { |key, value| [key, SECRET_FIELDS.include?(key) && value ? "[redacted]" : value] }
99
+ "#<#{self.class.name} #{shown.inspect}>"
100
+ end
101
+ alias to_s inspect
102
+ end
103
+
104
+ # A custom organization role of {SessionOrganization}.
105
+ class SessionCustomRole < Model
106
+ field :key, "key", :string
107
+ field :permissions, "permissions", %i[array string]
108
+ end
109
+
110
+ # One organization of the person in {Session#organizations}.
111
+ class SessionOrganization < Model
112
+ field :organization_id, "organization_id", :string
113
+ # Sent by the API as +organization__name+.
114
+ field :organization_name, "organization__name", :string
115
+ # "admin", "member" or "billing"
116
+ field :role, "role", :string
117
+ field :custom_role, "custom_role", SessionCustomRole
118
+ end
119
+
120
+ # +GET session/+: the live session behind an access token.
121
+ class Session < Model
122
+ # The identity id.
123
+ field :sub, "sub", :string
124
+ # The session id.
125
+ field :sid, "sid", :string
126
+ field :application_id, "application_id", :string
127
+ field :vendor_data, "vendor_data", :string
128
+ field :amr, "amr", %i[array string]
129
+ field :mfa_verified, "mfa_verified", :boolean
130
+ field :email, "email", :string
131
+ field :email_verified, "email_verified", :boolean
132
+ field :phone, "phone", :string
133
+ field :verified_identity, "verified_identity", %i[map any]
134
+ field :verified, "verified", VerifiedClaims
135
+ field :expires_at, "expires_at", :datetime
136
+ field :post_logout_redirect_uri, "post_logout_redirect_uri", :string
137
+ field :organizations, "organizations", [:array, SessionOrganization]
138
+ end
139
+
140
+ # A step-up: +POST step-up/+ and +GET step-up/{id}/+.
141
+ #
142
+ # When +POST step-up/+ finds no rule that applies it answers only
143
+ # +required: false+ and the action may go ahead. Otherwise send the person to
144
+ # {#verification_url}, then read the step-up again with
145
+ # {Authentication#retrieve_step_up} and act only when {#approved?} is true.
146
+ class StepUp < Model
147
+ # +POST step-up/+ only: whether the person must verify before the action.
148
+ field :required, "required", :boolean
149
+ field :id, "id", :string
150
+ # "payout", "device", "bank" or "contact"
151
+ field :rule, "rule", :string
152
+ # The JSON property +method+ ("liveness", "selfie" or "full_id"); renamed
153
+ # because +method+ is a core Ruby method.
154
+ field :verification_method, "method", :string
155
+ # "pending", "review", "approved", "declined", "expired" or "superseded"
156
+ field :status, "status", :string
157
+ # "liveness", "liveness_face_match" or "full_id"
158
+ field :level, "level", :string
159
+ field :amount, "amount", :string
160
+ field :currency, "currency", :string
161
+ field :created_at, "created_at", :datetime
162
+ field :completed_at, "completed_at", :datetime
163
+ field :expires_at, "expires_at", :datetime
164
+ # +POST step-up/+ only: where to send the person to verify.
165
+ field :verification_url, "verification_url", :string
166
+ # +POST step-up/+ only: seconds the person has to verify.
167
+ field :expires_in, "expires_in", :integer
168
+
169
+ # True only for status "approved": the one status to act on.
170
+ def approved?
171
+ status == "approved"
172
+ end
173
+ end
174
+ end
175
+ end