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,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
|