workos 4.0.0 → 4.2.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 (139) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +37 -0
  3. data/.github/workflows/release.yml +43 -0
  4. data/.rubocop.yml +8 -1
  5. data/Gemfile.lock +22 -69
  6. data/lib/workos/audit_log_export.rb +8 -31
  7. data/lib/workos/audit_logs.rb +0 -26
  8. data/lib/workos/authentication_factor_and_challenge.rb +0 -3
  9. data/lib/workos/authentication_response.rb +12 -5
  10. data/lib/workos/challenge.rb +9 -28
  11. data/lib/workos/client.rb +0 -41
  12. data/lib/workos/configuration.rb +0 -1
  13. data/lib/workos/connection.rb +11 -35
  14. data/lib/workos/directory.rb +10 -37
  15. data/lib/workos/directory_group.rb +9 -36
  16. data/lib/workos/directory_sync.rb +0 -21
  17. data/lib/workos/directory_user.rb +17 -51
  18. data/lib/workos/errors.rb +0 -16
  19. data/lib/workos/event.rb +5 -26
  20. data/lib/workos/events.rb +0 -7
  21. data/lib/workos/factor.rb +9 -28
  22. data/lib/workos/hash_provider.rb +0 -1
  23. data/lib/workos/impersonator.rb +23 -0
  24. data/lib/workos/invitation.rb +12 -37
  25. data/lib/workos/mfa.rb +0 -42
  26. data/lib/workos/organization.rb +8 -31
  27. data/lib/workos/organization_membership.rb +8 -27
  28. data/lib/workos/organizations.rb +0 -26
  29. data/lib/workos/passwordless.rb +0 -14
  30. data/lib/workos/portal.rb +1 -13
  31. data/lib/workos/profile.rb +12 -39
  32. data/lib/workos/profile_and_token.rb +1 -4
  33. data/lib/workos/refresh_authentication_response.rb +24 -0
  34. data/lib/workos/sso.rb +1 -43
  35. data/lib/workos/types/intent.rb +16 -0
  36. data/lib/workos/types/list_struct.rb +8 -5
  37. data/lib/workos/types/passwordless_session_struct.rb +10 -9
  38. data/lib/workos/types/provider.rb +15 -0
  39. data/lib/workos/types.rb +5 -23
  40. data/lib/workos/user.rb +10 -31
  41. data/lib/workos/user_and_token.rb +1 -4
  42. data/lib/workos/user_management.rb +108 -219
  43. data/lib/workos/user_response.rb +0 -3
  44. data/lib/workos/verify_challenge.rb +4 -18
  45. data/lib/workos/version.rb +1 -2
  46. data/lib/workos/webhook.rb +5 -26
  47. data/lib/workos/webhooks.rb +1 -38
  48. data/lib/workos.rb +2 -2
  49. data/spec/lib/workos/audit_logs_spec.rb +2 -3
  50. data/spec/lib/workos/configuration_spec.rb +0 -1
  51. data/spec/lib/workos/directory_sync_spec.rb +0 -1
  52. data/spec/lib/workos/directory_user_spec.rb +0 -1
  53. data/spec/lib/workos/event_spec.rb +0 -1
  54. data/spec/lib/workos/mfa_spec.rb +0 -1
  55. data/spec/lib/workos/organizations_spec.rb +0 -1
  56. data/spec/lib/workos/passwordless_spec.rb +0 -1
  57. data/spec/lib/workos/portal_spec.rb +0 -1
  58. data/spec/lib/workos/sso_spec.rb +0 -1
  59. data/spec/lib/workos/user_management_spec.rb +59 -10
  60. data/spec/lib/workos/webhooks_spec.rb +0 -1
  61. data/spec/spec_helper.rb +6 -9
  62. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_code/valid.yml +1 -1
  63. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_code/valid_with_impersonator.yml +80 -0
  64. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_email_verification/valid.yml +1 -1
  65. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_magic_auth/valid.yml +1 -1
  66. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_organization_selection/valid.yml +1 -1
  67. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_password/valid.yml +1 -1
  68. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_refresh_code/invalid.yml +81 -0
  69. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_refresh_token/valid.yml +81 -0
  70. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_totp/valid.yml +1 -1
  71. data/spec/support/shared_examples/client_spec.rb +0 -1
  72. data/workos.gemspec +1 -6
  73. metadata +19 -129
  74. data/.semaphore/rubygems.yml +0 -24
  75. data/.semaphore/semaphore.yml +0 -51
  76. data/bin/tapioca +0 -29
  77. data/codecov.yml +0 -12
  78. data/devbox.json +0 -18
  79. data/devbox.lock +0 -11
  80. data/lib/workos/types/audit_log_export_struct.rb +0 -17
  81. data/lib/workos/types/challenge_struct.rb +0 -18
  82. data/lib/workos/types/connection_struct.rb +0 -20
  83. data/lib/workos/types/directory_group_struct.rb +0 -19
  84. data/lib/workos/types/directory_struct.rb +0 -19
  85. data/lib/workos/types/directory_user_struct.rb +0 -26
  86. data/lib/workos/types/event_struct.rb +0 -15
  87. data/lib/workos/types/factor_struct.rb +0 -18
  88. data/lib/workos/types/intent_enum.rb +0 -17
  89. data/lib/workos/types/invitation_struct.rb +0 -20
  90. data/lib/workos/types/magic_auth_challenge_struct.rb +0 -12
  91. data/lib/workos/types/organization_membership_struct.rb +0 -16
  92. data/lib/workos/types/organization_struct.rb +0 -17
  93. data/lib/workos/types/profile_struct.rb +0 -21
  94. data/lib/workos/types/provider_enum.rb +0 -16
  95. data/lib/workos/types/user_struct.rb +0 -18
  96. data/lib/workos/types/verify_challenge_struct.rb +0 -13
  97. data/lib/workos/types/webhook_struct.rb +0 -15
  98. data/sorbet/config +0 -2
  99. data/sorbet/rbi/gems/addressable@2.8.0.rbi +0 -290
  100. data/sorbet/rbi/gems/ast@2.4.2.rbi +0 -54
  101. data/sorbet/rbi/gems/codecov@0.2.12.rbi +0 -55
  102. data/sorbet/rbi/gems/coderay@1.1.3.rbi +0 -8
  103. data/sorbet/rbi/gems/crack@0.4.5.rbi +0 -57
  104. data/sorbet/rbi/gems/diff-lcs@1.4.4.rbi +0 -185
  105. data/sorbet/rbi/gems/docile@1.3.5.rbi +0 -54
  106. data/sorbet/rbi/gems/hashdiff@1.0.1.rbi +0 -82
  107. data/sorbet/rbi/gems/json@2.5.1.rbi +0 -109
  108. data/sorbet/rbi/gems/method_source@1.0.0.rbi +0 -8
  109. data/sorbet/rbi/gems/parallel@1.20.1.rbi +0 -113
  110. data/sorbet/rbi/gems/parser@3.0.1.0.rbi +0 -1187
  111. data/sorbet/rbi/gems/pry@0.14.2.rbi +0 -8
  112. data/sorbet/rbi/gems/public_suffix@4.0.6.rbi +0 -146
  113. data/sorbet/rbi/gems/rainbow@3.0.0.rbi +0 -153
  114. data/sorbet/rbi/gems/rake@13.0.3.rbi +0 -807
  115. data/sorbet/rbi/gems/rbi@0.0.16.rbi +0 -2118
  116. data/sorbet/rbi/gems/regexp_parser@2.1.1.rbi +0 -1117
  117. data/sorbet/rbi/gems/rexml@3.2.5.rbi +0 -709
  118. data/sorbet/rbi/gems/rspec-core@3.9.3.rbi +0 -2467
  119. data/sorbet/rbi/gems/rspec-expectations@3.9.4.rbi +0 -1569
  120. data/sorbet/rbi/gems/rspec-mocks@3.9.1.rbi +0 -1493
  121. data/sorbet/rbi/gems/rspec-support@3.9.4.rbi +0 -511
  122. data/sorbet/rbi/gems/rspec@3.9.0.rbi +0 -38
  123. data/sorbet/rbi/gems/rubocop-ast@1.4.1.rbi +0 -1881
  124. data/sorbet/rbi/gems/rubocop@0.93.1.rbi +0 -11497
  125. data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +0 -405
  126. data/sorbet/rbi/gems/simplecov-html@0.12.3.rbi +0 -89
  127. data/sorbet/rbi/gems/simplecov@0.21.2.rbi +0 -577
  128. data/sorbet/rbi/gems/simplecov_json_formatter@0.1.2.rbi +0 -8
  129. data/sorbet/rbi/gems/spoom@1.1.15.rbi +0 -1549
  130. data/sorbet/rbi/gems/tapioca@0.7.3.rbi +0 -1718
  131. data/sorbet/rbi/gems/thor@1.2.1.rbi +0 -844
  132. data/sorbet/rbi/gems/unicode-display_width@1.7.0.rbi +0 -22
  133. data/sorbet/rbi/gems/unparser@0.6.2.rbi +0 -8
  134. data/sorbet/rbi/gems/vcr@5.0.0.rbi +0 -699
  135. data/sorbet/rbi/gems/webmock@3.12.2.rbi +0 -662
  136. data/sorbet/rbi/gems/yard-sorbet@0.8.0.rbi +0 -268
  137. data/sorbet/rbi/gems/yard@0.9.26.rbi +0 -4048
  138. data/sorbet/tapioca/config.yml +0 -13
  139. data/sorbet/tapioca/require.rb +0 -4
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
2
 
4
3
  module WorkOS
5
4
  # The Directory class provides a lightweight wrapper around
@@ -7,25 +6,21 @@ module WorkOS
7
6
  # in user space, and is instantiated internally but exposed.
8
7
  class Directory
9
8
  include HashProvider
10
- extend T::Sig
11
9
 
12
10
  attr_accessor :id, :domain, :name, :type, :state, :organization_id, :created_at, :updated_at
13
11
 
14
- # rubocop:disable Metrics/AbcSize
15
- sig { params(json: String).void }
16
12
  def initialize(json)
17
- raw = parse_json(json)
18
-
19
- @id = T.let(raw.id, String)
20
- @name = T.let(raw.name, String)
21
- @domain = raw.domain
22
- @type = T.let(raw.type, String)
23
- @state = T.let(raw.state, String)
24
- @organization_id = raw.organization_id
25
- @created_at = T.let(raw.created_at, String)
26
- @updated_at = T.let(raw.updated_at, String)
13
+ hash = JSON.parse(json, symbolize_names: true)
14
+
15
+ @id = hash[:id]
16
+ @name = hash[:name]
17
+ @domain = hash[:domain]
18
+ @type = hash[:type]
19
+ @state = hash[:state]
20
+ @organization_id = hash[:organization_id]
21
+ @created_at = hash[:created_at]
22
+ @updated_at = hash[:updated_at]
27
23
  end
28
- # rubocop:enable Metrics/AbcSize
29
24
 
30
25
  def to_json(*)
31
26
  {
@@ -39,27 +34,5 @@ module WorkOS
39
34
  updated_at: updated_at,
40
35
  }
41
36
  end
42
-
43
- private
44
-
45
- sig do
46
- params(
47
- json_string: String,
48
- ).returns(WorkOS::Types::DirectoryStruct)
49
- end
50
- def parse_json(json_string)
51
- hash = JSON.parse(json_string, symbolize_names: true)
52
-
53
- WorkOS::Types::DirectoryStruct.new(
54
- id: hash[:id],
55
- name: hash[:name],
56
- domain: hash[:domain],
57
- type: hash[:type],
58
- state: hash[:state],
59
- organization_id: hash[:organization_id],
60
- created_at: hash[:created_at],
61
- updated_at: hash[:updated_at],
62
- )
63
- end
64
37
  end
65
38
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
2
 
4
3
  module WorkOS
5
4
  # The DirectoryGroup class provides a lightweight wrapper around
@@ -7,28 +6,24 @@ module WorkOS
7
6
  # in user space, and is instantiated internally but exposed.
8
7
  class DirectoryGroup < DeprecatedHashWrapper
9
8
  include HashProvider
10
- extend T::Sig
11
9
 
12
10
  attr_accessor :id, :directory_id, :idp_id, :name, :created_at, :updated_at,
13
11
  :raw_attributes, :organization_id
14
12
 
15
- # rubocop:disable Metrics/AbcSize
16
- sig { params(json: String).void }
17
13
  def initialize(json)
18
- raw = parse_json(json)
14
+ hash = JSON.parse(json, symbolize_names: true)
19
15
 
20
- @id = T.let(raw.id, String)
21
- @directory_id = T.let(raw.directory_id, String)
22
- @organization_id = raw.organization_id
23
- @idp_id = T.let(raw.idp_id, String)
24
- @name = T.let(raw.name, String)
25
- @created_at = T.let(raw.created_at, String)
26
- @updated_at = T.let(raw.updated_at, String)
27
- @raw_attributes = raw.raw_attributes
16
+ @id = hash[:id]
17
+ @directory_id = hash[:directory_id]
18
+ @organization_id = hash[:organization_id]
19
+ @idp_id = hash[:idp_id]
20
+ @name = hash[:name]
21
+ @created_at = hash[:created_at]
22
+ @updated_at = hash[:updated_at]
23
+ @raw_attributes = hash[:raw_attributes]
28
24
 
29
25
  replace_without_warning(to_json)
30
26
  end
31
- # rubocop:enable Metrics/AbcSize
32
27
 
33
28
  def to_json(*)
34
29
  {
@@ -42,27 +37,5 @@ module WorkOS
42
37
  raw_attributes: raw_attributes,
43
38
  }
44
39
  end
45
-
46
- private
47
-
48
- sig do
49
- params(
50
- json_string: String,
51
- ).returns(WorkOS::Types::DirectoryGroupStruct)
52
- end
53
- def parse_json(json_string)
54
- hash = JSON.parse(json_string, symbolize_names: true)
55
-
56
- WorkOS::Types::DirectoryGroupStruct.new(
57
- id: hash[:id],
58
- directory_id: hash[:directory_id],
59
- organization_id: hash[:organization_id],
60
- idp_id: hash[:idp_id],
61
- name: hash[:name],
62
- created_at: hash[:created_at],
63
- updated_at: hash[:updated_at],
64
- raw_attributes: hash[:raw_attributes],
65
- )
66
- end
67
40
  end
68
41
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: strict
3
2
 
4
3
  require 'net/http'
5
4
 
@@ -11,7 +10,6 @@ module WorkOS
11
10
  # @see https://docs.workos.com/directory-sync/overview
12
11
  module DirectorySync
13
12
  class << self
14
- extend T::Sig
15
13
  include Client
16
14
 
17
15
  # Retrieve directories.
@@ -29,11 +27,6 @@ module WorkOS
29
27
  # @option options [String] organization_id The ID for an Organization configured on WorkOS.
30
28
  #
31
29
  # @return [Hash]
32
- sig do
33
- params(
34
- options: T::Hash[Symbol, String],
35
- ).returns(WorkOS::Types::ListStruct)
36
- end
37
30
  def list_directories(options = {})
38
31
  options[:order] ||= 'desc'
39
32
  response = execute_request(
@@ -72,7 +65,6 @@ module WorkOS
72
65
  # @updated_at="2021-10-27T16:03:43.990Z"
73
66
  #
74
67
  # @return [WorkOS::Directory]
75
- sig { params(id: String).returns(WorkOS::Directory) }
76
68
  def get_directory(id:)
77
69
  request = get_request(
78
70
  auth: true,
@@ -99,11 +91,6 @@ module WorkOS
99
91
  # before a provided Directory Group ID.
100
92
  #
101
93
  # @return [WorkOS::DirectoryGroup]
102
- sig do
103
- params(
104
- options: T::Hash[Symbol, String],
105
- ).returns(WorkOS::Types::ListStruct)
106
- end
107
94
  def list_groups(options = {})
108
95
  options[:order] ||= 'desc'
109
96
  response = execute_request(
@@ -140,11 +127,6 @@ module WorkOS
140
127
  # before a provided Directory User ID.
141
128
  #
142
129
  # @return [WorkOS::DirectoryUser]
143
- sig do
144
- params(
145
- options: T::Hash[Symbol, String],
146
- ).returns(WorkOS::Types::ListStruct)
147
- end
148
130
  def list_users(options = {})
149
131
  options[:order] ||= 'desc'
150
132
  response = execute_request(
@@ -171,7 +153,6 @@ module WorkOS
171
153
  # @param [String] id The ID of the directory group.
172
154
  #
173
155
  # @return WorkOS::DirectoryGroup
174
- sig { params(id: String).returns(WorkOS::DirectoryGroup) }
175
156
  def get_group(id)
176
157
  response = execute_request(
177
158
  request: get_request(
@@ -188,7 +169,6 @@ module WorkOS
188
169
  # @param [String] id The ID of the directory user.
189
170
  #
190
171
  # @return WorkOS::DirectoryUser
191
- sig { params(id: String).returns(WorkOS::DirectoryUser) }
192
172
  def get_user(id)
193
173
  response = execute_request(
194
174
  request: get_request(
@@ -205,7 +185,6 @@ module WorkOS
205
185
  # @param [String] id The ID of the directory.
206
186
  #
207
187
  # @return Boolean
208
- sig { params(id: String).returns(T::Boolean) }
209
188
  def delete_directory(id)
210
189
  request = delete_request(
211
190
  auth: true,
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
2
 
4
3
  module WorkOS
5
4
  # The DirectoryUser class provides a lightweight wrapper around
@@ -7,32 +6,30 @@ module WorkOS
7
6
  # in DirectoryUser space, and is instantiated internally but exposed.
8
7
  class DirectoryUser < DeprecatedHashWrapper
9
8
  include HashProvider
10
- extend T::Sig
11
9
 
12
10
  attr_accessor :id, :idp_id, :emails, :first_name, :last_name, :job_title, :username, :state,
13
11
  :groups, :custom_attributes, :raw_attributes, :directory_id, :organization_id,
14
12
  :created_at, :updated_at
15
13
 
16
14
  # rubocop:disable Metrics/AbcSize
17
- sig { params(json: String).void }
18
15
  def initialize(json)
19
- raw = parse_json(json)
20
-
21
- @id = T.let(raw.id, String)
22
- @directory_id = T.let(raw.directory_id, String)
23
- @organization_id = raw.organization_id
24
- @idp_id = T.let(raw.idp_id, String)
25
- @emails = T.let(raw.emails, Array)
26
- @first_name = raw.first_name
27
- @last_name = raw.last_name
28
- @job_title = raw.job_title
29
- @username = raw.username
30
- @state = raw.state
31
- @groups = T.let(raw.groups, Array)
32
- @custom_attributes = raw.custom_attributes
33
- @raw_attributes = raw.raw_attributes
34
- @created_at = T.let(raw.created_at, String)
35
- @updated_at = T.let(raw.updated_at, String)
16
+ hash = JSON.parse(json, symbolize_names: true)
17
+
18
+ @id = hash[:id]
19
+ @directory_id = hash[:directory_id]
20
+ @organization_id = hash[:organization_id]
21
+ @idp_id = hash[:idp_id]
22
+ @emails = hash[:emails]
23
+ @first_name = hash[:first_name]
24
+ @last_name = hash[:last_name]
25
+ @job_title = hash[:job_title]
26
+ @username = hash[:username]
27
+ @state = hash[:state]
28
+ @groups = hash[:groups]
29
+ @custom_attributes = hash[:custom_attributes]
30
+ @raw_attributes = hash[:raw_attributes]
31
+ @created_at = hash[:created_at]
32
+ @updated_at = hash[:updated_at]
36
33
 
37
34
  replace_without_warning(to_json)
38
35
  end
@@ -62,36 +59,5 @@ module WorkOS
62
59
  primary_email = (emails || []).find { |email| email[:primary] }
63
60
  return primary_email[:value] if primary_email
64
61
  end
65
-
66
- private
67
-
68
- # rubocop:disable Metrics/AbcSize
69
- sig do
70
- params(
71
- json_string: String,
72
- ).returns(WorkOS::Types::DirectoryUserStruct)
73
- end
74
- def parse_json(json_string)
75
- hash = JSON.parse(json_string, symbolize_names: true)
76
-
77
- WorkOS::Types::DirectoryUserStruct.new(
78
- id: hash[:id],
79
- directory_id: hash[:directory_id],
80
- organization_id: hash[:organization_id],
81
- idp_id: hash[:idp_id],
82
- emails: hash[:emails],
83
- first_name: hash[:first_name],
84
- last_name: hash[:last_name],
85
- job_title: hash[:job_title],
86
- username: hash[:username],
87
- state: hash[:state],
88
- groups: hash[:groups],
89
- custom_attributes: hash[:custom_attributes],
90
- created_at: hash[:created_at],
91
- updated_at: hash[:updated_at],
92
- raw_attributes: hash[:raw_attributes],
93
- )
94
- end
95
- # rubocop:enable Metrics/AbcSize
96
62
  end
97
63
  end
data/lib/workos/errors.rb CHANGED
@@ -1,29 +1,14 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
-
4
2
 
5
3
  module WorkOS
6
4
  # Parent class for WorkOS related errors
7
5
  class WorkOSError < StandardError
8
- extend T::Sig
9
-
10
6
  attr_reader :http_status
11
7
  attr_reader :request_id
12
8
  attr_reader :code
13
9
  attr_reader :errors
14
10
 
15
11
  # rubocop:disable Metrics/ParameterLists
16
- sig do
17
- params(
18
- message: T.nilable(String),
19
- error: T.nilable(String),
20
- error_description: T.nilable(String),
21
- http_status: T.nilable(Integer),
22
- request_id: T.nilable(String),
23
- code: T.nilable(String),
24
- errors: T.nilable(T::Array[T::Hash[T.untyped, T.untyped]]),
25
- ).void
26
- end
27
12
  def initialize(
28
13
  message: nil,
29
14
  error: nil,
@@ -43,7 +28,6 @@ module WorkOS
43
28
  end
44
29
  # rubocop:enable Metrics/ParameterLists
45
30
 
46
- sig { returns(String) }
47
31
  def to_s
48
32
  status_string = @http_status.nil? ? '' : "Status #{@http_status}, "
49
33
  id_string = @request_id.nil? ? '' : " - request ID: #{@request_id}"
data/lib/workos/event.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
2
 
4
3
  module WorkOS
5
4
  # The Event class provides a lightweight wrapper around
@@ -7,18 +6,16 @@ module WorkOS
7
6
  # in user space, and is instantiated internally but exposed.
8
7
  class Event
9
8
  include HashProvider
10
- extend T::Sig
11
9
 
12
10
  attr_accessor :id, :event, :data, :created_at
13
11
 
14
- sig { params(json: String).void }
15
12
  def initialize(json)
16
- raw = parse_json(json)
13
+ hash = JSON.parse(json, symbolize_names: true)
17
14
 
18
- @id = T.let(raw.id, String)
19
- @event = T.let(raw.event, String)
20
- @created_at = T.let(raw.created_at, String)
21
- @data = raw.data
15
+ @id = hash[:id]
16
+ @event = hash[:event]
17
+ @created_at = hash[:created_at]
18
+ @data = hash[:data]
22
19
  end
23
20
 
24
21
  def to_json(*)
@@ -29,23 +26,5 @@ module WorkOS
29
26
  created_at: created_at,
30
27
  }
31
28
  end
32
-
33
- private
34
-
35
- sig do
36
- params(
37
- json_string: String,
38
- ).returns(WorkOS::Types::EventStruct)
39
- end
40
- def parse_json(json_string)
41
- hash = JSON.parse(json_string, symbolize_names: true)
42
-
43
- WorkOS::Types::EventStruct.new(
44
- id: hash[:id],
45
- event: hash[:event],
46
- data: hash[:data],
47
- created_at: hash[:created_at],
48
- )
49
- end
50
29
  end
51
30
  end
data/lib/workos/events.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: strict
3
2
 
4
3
  require 'net/http'
5
4
 
@@ -10,7 +9,6 @@ module WorkOS
10
9
  #
11
10
  module Events
12
11
  class << self
13
- extend T::Sig
14
12
  include Client
15
13
 
16
14
  # Retrieve events.
@@ -23,11 +21,6 @@ module WorkOS
23
21
  # after a provided Event ID.
24
22
  #
25
23
  # @return [Hash]
26
- sig do
27
- params(
28
- options: T::Hash[Symbol, String],
29
- ).returns(WorkOS::Types::ListStruct)
30
- end
31
24
  def list_events(options = {})
32
25
  response = execute_request(
33
26
  request: get_request(
data/lib/workos/factor.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  module WorkOS
5
4
  # The Factor class provides a lightweight wrapper around
@@ -7,19 +6,18 @@ module WorkOS
7
6
  # in DirectoryUser space, and is instantiated internally but exposed.
8
7
  class Factor
9
8
  include HashProvider
10
- extend T::Sig
11
9
  attr_accessor :id, :object, :type, :sms, :totp, :updated_at, :created_at
12
10
 
13
- sig { params(json: String).void }
14
11
  def initialize(json)
15
- raw = parse_json(json)
16
- @id = T.let(raw.id, String)
17
- @object = T.let(raw.object, String)
18
- @type = T.let(raw.type, String)
19
- @created_at = T.let(raw.created_at, String)
20
- @updated_at = T.let(raw.updated_at, String)
21
- @totp = raw.totp
22
- @sms = raw.sms
12
+ hash = JSON.parse(json, symbolize_names: true)
13
+
14
+ @id = hash[:id]
15
+ @object = hash[:object]
16
+ @type = hash[:type]
17
+ @created_at = hash[:created_at]
18
+ @updated_at = hash[:updated_at]
19
+ @totp = hash[:totp]
20
+ @sms = hash[:sms]
23
21
  end
24
22
 
25
23
  def to_json(*)
@@ -33,22 +31,5 @@ module WorkOS
33
31
  updated_at: updated_at,
34
32
  }
35
33
  end
36
-
37
- private
38
-
39
- sig { params(json_string: String).returns(WorkOS::Types::FactorStruct) }
40
- def parse_json(json_string)
41
- hash = JSON.parse(json_string, symbolize_names: true)
42
-
43
- WorkOS::Types::FactorStruct.new(
44
- id: hash[:id],
45
- object: hash[:object],
46
- type: hash[:type],
47
- totp: hash[:totp],
48
- sms: hash[:sms],
49
- created_at: hash[:created_at],
50
- updated_at: hash[:updated_at],
51
- )
52
- end
53
34
  end
54
35
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
2
 
4
3
  module WorkOS
5
4
  # Module to include an explicit method for converting a model into a Hash containing
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WorkOS
4
+ # Contains information about a WorkOS Dashboard user impersonating
5
+ # a User Management user.
6
+ class Impersonator
7
+ include HashProvider
8
+
9
+ attr_accessor :email, :reason
10
+
11
+ def initialize(email:, reason:)
12
+ @email = email
13
+ @reason = reason
14
+ end
15
+
16
+ def to_json(*)
17
+ {
18
+ email: email,
19
+ reason: reason,
20
+ }
21
+ end
22
+ end
23
+ end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
2
 
4
3
  module WorkOS
5
4
  # The Invitation class provides a lightweight wrapper around a WorkOS Invitation
@@ -7,28 +6,24 @@ module WorkOS
7
6
  # and is instantiated internally but exposed.
8
7
  class Invitation
9
8
  include HashProvider
10
- extend T::Sig
11
9
 
12
10
  attr_accessor :id, :email, :state, :accepted_at, :revoked_at,
13
11
  :expires_at, :token, :organization_id, :created_at, :updated_at
14
12
 
15
- # rubocop:disable Metrics/AbcSize
16
- sig { params(json: String).void }
17
13
  def initialize(json)
18
- raw = parse_json(json)
19
-
20
- @id = T.let(raw.id, String)
21
- @email = T.let(raw.email, String)
22
- @state = T.let(raw.state, String)
23
- @token = T.let(raw.token, String)
24
- @organization_id = T.let(raw.organization_id, T.nilable(String))
25
- @accepted_at = T.let(raw.accepted_at, T.nilable(String))
26
- @revoked_at = T.let(raw.revoked_at, T.nilable(String))
27
- @expires_at = T.let(raw.expires_at, String)
28
- @created_at = T.let(raw.created_at, String)
29
- @updated_at = T.let(raw.updated_at, String)
14
+ hash = JSON.parse(json, symbolize_names: true)
15
+
16
+ @id = hash[:id]
17
+ @email = hash[:email]
18
+ @state = hash[:state]
19
+ @token = hash[:token]
20
+ @organization_id = hash[:organization_id]
21
+ @accepted_at = hash[:accepted_at]
22
+ @revoked_at = hash[:revoked_at]
23
+ @expires_at = hash[:expires_at]
24
+ @created_at = hash[:created_at]
25
+ @updated_at = hash[:updated_at]
30
26
  end
31
- # rubocop:enable Metrics/AbcSize
32
27
 
33
28
  def to_json(*)
34
29
  {
@@ -44,25 +39,5 @@ module WorkOS
44
39
  updated_at: updated_at,
45
40
  }
46
41
  end
47
-
48
- private
49
-
50
- sig { params(json_string: String).returns(WorkOS::Types::InvitationStruct) }
51
- def parse_json(json_string)
52
- hash = JSON.parse(json_string, symbolize_names: true)
53
-
54
- WorkOS::Types::InvitationStruct.new(
55
- id: hash[:id],
56
- email: hash[:email],
57
- state: hash[:state],
58
- token: hash[:token],
59
- organization_id: hash[:organization_id],
60
- accepted_at: hash[:accepted_at],
61
- revoked_at: hash[:revoked_at],
62
- expires_at: hash[:expires_at],
63
- created_at: hash[:created_at],
64
- updated_at: hash[:updated_at],
65
- )
66
- end
67
42
  end
68
43
  end
data/lib/workos/mfa.rb CHANGED
@@ -1,6 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
-
4
2
 
5
3
  require 'net/http'
6
4
  require 'uri'
@@ -10,9 +8,7 @@ module WorkOS
10
8
  # MFA platform. You'll need a valid API key
11
9
  module MFA
12
10
  class << self
13
- extend T::Sig
14
11
  include Client
15
- sig { params(id: String).returns(T::Boolean) }
16
12
  def delete_factor(id:)
17
13
  response = execute_request(
18
14
  request: delete_request(
@@ -23,9 +19,6 @@ module WorkOS
23
19
  response.is_a? Net::HTTPSuccess
24
20
  end
25
21
 
26
- sig do
27
- params(id: String).returns(WorkOS::Factor)
28
- end
29
22
  def get_factor(
30
23
  id:
31
24
  )
@@ -38,17 +31,8 @@ module WorkOS
38
31
  WorkOS::Factor.new(response.body)
39
32
  end
40
33
 
41
- sig do
42
- params(
43
- type: String,
44
- totp_issuer: T.nilable(String),
45
- totp_user: T.nilable(String),
46
- phone_number: T.nilable(String),
47
- ).void
48
- end
49
34
  # rubocop:disable Metrics/CyclomaticComplexity
50
35
  # rubocop:disable Metrics/PerceivedComplexity
51
-
52
36
  def validate_args(
53
37
  type:,
54
38
  totp_issuer: nil,
@@ -68,14 +52,6 @@ module WorkOS
68
52
  # rubocop:enable Metrics/CyclomaticComplexity
69
53
  # rubocop:enable Metrics/PerceivedComplexity
70
54
 
71
- sig do
72
- params(
73
- type: String,
74
- totp_issuer: T.nilable(String),
75
- totp_user: T.nilable(String),
76
- phone_number: T.nilable(String),
77
- ).returns(WorkOS::Factor)
78
- end
79
55
  def enroll_factor(
80
56
  type:,
81
57
  totp_issuer: nil,
@@ -101,12 +77,6 @@ module WorkOS
101
77
  WorkOS::Factor.new(response.body)
102
78
  end
103
79
 
104
- sig do
105
- params(
106
- authentication_factor_id: T.nilable(String),
107
- sms_template: T.nilable(String),
108
- ).returns(WorkOS::Challenge)
109
- end
110
80
  def challenge_factor(
111
81
  authentication_factor_id: nil,
112
82
  sms_template: nil
@@ -127,12 +97,6 @@ module WorkOS
127
97
  WorkOS::Challenge.new(response.body)
128
98
  end
129
99
 
130
- sig do
131
- params(
132
- authentication_challenge_id: T.nilable(String),
133
- code: T.nilable(String),
134
- ).returns(WorkOS::VerifyChallenge)
135
- end
136
100
  def verify_factor(
137
101
  authentication_challenge_id: nil,
138
102
  code: nil
@@ -145,12 +109,6 @@ module WorkOS
145
109
  )
146
110
  end
147
111
 
148
- sig do
149
- params(
150
- authentication_challenge_id: T.nilable(String),
151
- code: T.nilable(String),
152
- ).returns(WorkOS::VerifyChallenge)
153
- end
154
112
  def verify_challenge(
155
113
  authentication_challenge_id: nil,
156
114
  code: nil