authsignal-ruby 5.2.2 → 5.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc7b157f7e5e965983377b879308969e0e64cdaa9e9c898befcb960882768d87
4
- data.tar.gz: 3a52e2684801ab9e9825f5a053c9bbdeb58a663e714613e7a2994b064354793a
3
+ metadata.gz: e8673d23a407cf818e019f318a4ffaf1e70f966991f2b32d4de8b8fe0ef8d14f
4
+ data.tar.gz: 3cbb5a1b6e98adb1b45825a552ef8c2cec54e0eca1e828be0234b31a76a35eef
5
5
  SHA512:
6
- metadata.gz: 814653fbdea511018febd90b03d4be4f75de814e12cf71c96ca560eaaad078ffbc496ae48b0e43a178ceab49f1dba7ea280a2fcd2bf4202393c0fa52e7970b5e
7
- data.tar.gz: f2f939e03b2a02a572f69fe65c6907904ef0947d27ef5bb41274a0fe40e73c346656883af5ffa765504264041f5fb3f3584bde954da69fc5878d79869c19fa26
6
+ metadata.gz: bbacd4fec6eeb9f33136d7b91252c3ff00477d7a9a88db6e8984b130b79375a0623bcb5a5a5a047febfaa7cbd881f7c70a3a9e74f01fe1d5b61dc4b04aa64dc9
7
+ data.tar.gz: da91e1f2178a0d3e20defd5421f6bfc63c7cab887861528412dc32c79a890ad7a681f2ae1aee361c886e453635c90af581163d5b9ce1ca06c50d86f3b0ce82f5
data/.rubocop.yml CHANGED
@@ -22,8 +22,11 @@ Metrics/BlockLength:
22
22
  Metrics/ParameterLists:
23
23
  Max: 15
24
24
 
25
- # SDK classes can be longer
25
+ # SDK classes/modules can be longer
26
26
  Metrics/ClassLength:
27
+ Max: 250
28
+
29
+ Metrics/ModuleLength:
27
30
  Max: 150
28
31
 
29
32
  Metrics/MethodLength:
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.6.10
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- authsignal-ruby (5.2.2)
4
+ authsignal-ruby (5.4.0)
5
5
  base64
6
6
  faraday (>= 2.0.1)
7
7
  faraday-retry (~> 2.2)
@@ -52,6 +52,27 @@ module Authsignal
52
52
  make_request(:delete, "users/#{url_encode(user_id)}")
53
53
  end
54
54
 
55
+ def query_users(
56
+ username: nil,
57
+ email: nil,
58
+ phone_number: nil,
59
+ token: nil,
60
+ limit: nil,
61
+ last_evaluated_user_id: nil
62
+ )
63
+ params = {
64
+ username: username,
65
+ email: email,
66
+ phoneNumber: phone_number,
67
+ token: token,
68
+ limit: limit&.to_s,
69
+ lastEvaluatedUserId: last_evaluated_user_id
70
+ }.compact
71
+
72
+ path = params.empty? ? 'users' : "users?#{URI.encode_www_form(params)}"
73
+ make_request(:get, path)
74
+ end
75
+
55
76
  def get_authenticators(user_id:)
56
77
  make_request(:get, "users/#{url_encode(user_id)}/authenticators")
57
78
  end
@@ -81,10 +102,133 @@ module Authsignal
81
102
  make_request(:get, "users/#{url_encode(user_id)}/actions/#{action}/#{url_encode(idempotency_key)}")
82
103
  end
83
104
 
105
+ def query_user_actions(
106
+ user_id:,
107
+ from_date: nil,
108
+ action_codes: [],
109
+ state: nil
110
+ )
111
+ params = {
112
+ fromDate: from_date,
113
+ codes: action_codes.empty? ? nil : action_codes.join(','),
114
+ state: state
115
+ }.compact
116
+
117
+ base_path = "users/#{url_encode(user_id)}/actions"
118
+ path = params.empty? ? base_path : "#{base_path}?#{URI.encode_www_form(params)}"
119
+ make_request(:get, path)
120
+ end
121
+
84
122
  def update_action(user_id:, action:, idempotency_key:, attributes:)
85
123
  make_request(:patch, "users/#{url_encode(user_id)}/actions/#{action}/#{url_encode(idempotency_key)}", body: attributes)
86
124
  end
87
125
 
126
+ def challenge(
127
+ verification_method: nil,
128
+ action: nil,
129
+ challenge_id: nil,
130
+ idempotency_key: nil,
131
+ user_id: nil,
132
+ email: nil,
133
+ phone_number: nil,
134
+ sms_channel: nil,
135
+ locale: nil,
136
+ device_id: nil,
137
+ ip_address: nil,
138
+ user_agent: nil,
139
+ custom: nil,
140
+ scope: nil
141
+ )
142
+ body = {
143
+ verification_method: verification_method,
144
+ action: action,
145
+ challenge_id: challenge_id,
146
+ idempotency_key: idempotency_key,
147
+ user_id: user_id,
148
+ email: email,
149
+ phone_number: phone_number,
150
+ sms_channel: sms_channel,
151
+ locale: locale,
152
+ device_id: device_id,
153
+ ip_address: ip_address,
154
+ user_agent: user_agent,
155
+ custom: custom,
156
+ scope: scope
157
+ }
158
+ make_request(:post, 'challenge', body: body)
159
+ end
160
+
161
+ def verify(challenge_id:, verification_code:)
162
+ body = {
163
+ challenge_id: challenge_id,
164
+ verification_code: verification_code
165
+ }
166
+ make_request(:post, 'verify', body: body)
167
+ end
168
+
169
+ def claim_challenge(
170
+ challenge_id:,
171
+ user_id:,
172
+ skip_verification_check: nil
173
+ )
174
+ body = {
175
+ challenge_id: challenge_id,
176
+ user_id: user_id,
177
+ skip_verification_check: skip_verification_check
178
+ }
179
+ make_request(:post, 'claim', body: body)
180
+ end
181
+
182
+ def get_challenge(
183
+ challenge_id: nil,
184
+ user_id: nil,
185
+ action: nil,
186
+ verification_method: nil
187
+ )
188
+ params = {}
189
+ params[:challengeId] = challenge_id if challenge_id
190
+ params[:userId] = user_id if user_id
191
+ params[:action] = action if action
192
+ params[:verificationMethod] = verification_method if verification_method
193
+
194
+ query_string = URI.encode_www_form(params) unless params.empty?
195
+ path = query_string ? "challenges?#{query_string}" : 'challenges'
196
+
197
+ make_request(:get, path)
198
+ end
199
+
200
+ def create_session(client_id:, token:, action: nil)
201
+ body = {
202
+ client_id: client_id,
203
+ token: token,
204
+ action: action
205
+ }.compact
206
+ make_request(:post, 'sessions', body: body)
207
+ end
208
+
209
+ def validate_session(access_token:, client_ids: nil)
210
+ body = {
211
+ access_token: access_token,
212
+ client_ids: client_ids
213
+ }.compact
214
+ make_request(:post, 'sessions/validate', body: body)
215
+ end
216
+
217
+ def refresh_session(refresh_token:)
218
+ body = { refresh_token: refresh_token }
219
+ make_request(:post, 'sessions/refresh', body: body)
220
+ end
221
+
222
+ def revoke_session(access_token:)
223
+ body = { access_token: access_token }
224
+ make_request(:post, 'sessions/revoke', body: body)
225
+ end
226
+
227
+ def revoke_user_sessions(user_id:)
228
+ body = { user_id: user_id }
229
+ make_request(:post, 'sessions/user/revoke', body: body)
230
+ end
231
+
88
232
  ##
89
233
  # TODO: delete identify?
90
234
  def identify(user_id, user_payload)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Authsignal
4
- VERSION = '5.2.2'
4
+ VERSION = '5.4.0'
5
5
  end
data/lib/authsignal.rb CHANGED
@@ -39,6 +39,12 @@ module Authsignal
39
39
  handle_response(response)
40
40
  end
41
41
 
42
+ def query_users(**options)
43
+ response = Client.new.query_users(**options)
44
+
45
+ handle_response(response)
46
+ end
47
+
42
48
  def update_user(user_id:, attributes:)
43
49
  response = Client.new.update_user(user_id: user_id, attributes: attributes)
44
50
 
@@ -86,12 +92,72 @@ module Authsignal
86
92
  handle_response(response)
87
93
  end
88
94
 
95
+ def query_user_actions(user_id:, **options)
96
+ response = Client.new.query_user_actions(user_id: user_id, **options)
97
+
98
+ handle_response(response)
99
+ end
100
+
89
101
  def update_action(user_id:, action:, idempotency_key:, attributes:)
90
102
  response = Client.new.update_action(user_id: user_id, action: action, idempotency_key: idempotency_key, attributes: attributes)
91
103
 
92
104
  handle_response(response)
93
105
  end
94
106
 
107
+ def challenge(**options)
108
+ response = Client.new.challenge(**options)
109
+
110
+ handle_response(response)
111
+ end
112
+
113
+ def verify(challenge_id:, verification_code:)
114
+ response = Client.new.verify(challenge_id: challenge_id, verification_code: verification_code)
115
+
116
+ handle_response(response)
117
+ end
118
+
119
+ def claim_challenge(challenge_id:, user_id:, **options)
120
+ response = Client.new.claim_challenge(challenge_id: challenge_id, user_id: user_id, **options)
121
+
122
+ handle_response(response)
123
+ end
124
+
125
+ def get_challenge(**options)
126
+ response = Client.new.get_challenge(**options)
127
+
128
+ handle_response(response)
129
+ end
130
+
131
+ def create_session(client_id:, token:, action: nil)
132
+ response = Client.new.create_session(client_id: client_id, token: token, action: action)
133
+
134
+ handle_response(response)
135
+ end
136
+
137
+ def validate_session(access_token:, client_ids: nil)
138
+ response = Client.new.validate_session(access_token: access_token, client_ids: client_ids)
139
+
140
+ handle_response(response)
141
+ end
142
+
143
+ def refresh_session(refresh_token:)
144
+ response = Client.new.refresh_session(refresh_token: refresh_token)
145
+
146
+ handle_response(response)
147
+ end
148
+
149
+ def revoke_session(access_token:)
150
+ response = Client.new.revoke_session(access_token: access_token)
151
+
152
+ handle_response(response)
153
+ end
154
+
155
+ def revoke_user_sessions(user_id:)
156
+ response = Client.new.revoke_user_sessions(user_id: user_id)
157
+
158
+ handle_response(response)
159
+ end
160
+
95
161
  private
96
162
 
97
163
  def handle_response(response)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authsignal-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.2
4
+ version: 5.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - justinsoong
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-01-07 00:00:00.000000000 Z
11
+ date: 2026-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -105,6 +105,7 @@ files:
105
105
  - ".editorconfig"
106
106
  - ".rspec"
107
107
  - ".rubocop.yml"
108
+ - ".ruby-version"
108
109
  - ".tool-versions"
109
110
  - CHANGELOG.md
110
111
  - Gemfile