workos 9.3.0 → 9.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 +4 -4
- data/.last-synced-sha +1 -1
- data/.oagen-manifest.json +110 -1
- data/.release-please-manifest.json +1 -1
- data/CHANGELOG.md +123 -0
- data/Gemfile.lock +2 -2
- data/lib/workos/admin_portal/generate_link.rb +0 -3
- data/lib/workos/admin_portal.rb +0 -3
- data/lib/workos/authorization/user_role_assignment.rb +3 -0
- data/lib/workos/authorization/user_role_assignment_source.rb +22 -0
- data/lib/workos/pipes/connected_account_dto.rb +31 -0
- data/lib/workos/pipes/create_data_integration.rb +34 -0
- data/lib/workos/pipes/custom_provider_definition.rb +49 -0
- data/lib/workos/pipes/data_integration.rb +55 -0
- data/lib/workos/pipes/data_integration_credential.rb +25 -0
- data/lib/workos/pipes/data_integration_credentials_dto.rb +25 -0
- data/lib/workos/pipes/data_integration_credentials_response.rb +25 -0
- data/lib/workos/pipes/data_integration_credentials_response_credential.rb +34 -0
- data/lib/workos/pipes/data_integration_custom_provider.rb +49 -0
- data/lib/workos/pipes/data_integrations_upsert_api_key_request.rb +25 -0
- data/lib/workos/pipes/data_integrations_vend_credentials_request.rb +22 -0
- data/lib/workos/pipes/update_custom_provider_definition.rb +49 -0
- data/lib/workos/pipes/update_data_integration.rb +31 -0
- data/lib/workos/pipes.rb +304 -0
- data/lib/workos/radar/radar_standalone_assess_request.rb +5 -2
- data/lib/workos/radar.rb +5 -2
- data/lib/workos/shared/auth_method_mismatch_error.rb +22 -0
- data/lib/workos/types/audit_log_export_state.rb +2 -1
- data/lib/workos/types/connected_account_state.rb +1 -2
- data/lib/workos/types/create_webhook_endpoint_events.rb +8 -1
- data/lib/workos/types/custom_provider_definition_authenticate_via.rb +13 -0
- data/lib/workos/types/data_integration_credential_type.rb +13 -0
- data/lib/workos/types/data_integration_credentials_response_error.rb +9 -0
- data/lib/workos/types/data_integration_credentials_type.rb +9 -0
- data/lib/workos/types/data_integration_custom_provider_authenticate_via.rb +9 -0
- data/lib/workos/types/data_integration_state.rb +14 -0
- data/lib/workos/types/data_integrations_list_response_data_connected_account_state.rb +6 -1
- data/lib/workos/types/update_custom_provider_definition_authenticate_via.rb +9 -0
- data/lib/workos/types/user_role_assignment_source_type.rb +13 -0
- data/lib/workos/user_management/authorization_code_session_authenticate_request.rb +5 -2
- data/lib/workos/user_management/create_magic_code_and_return.rb +14 -2
- data/lib/workos/user_management/create_user.rb +9 -0
- data/lib/workos/user_management/magic_auth_code_session_authenticate_request.rb +5 -2
- data/lib/workos/user_management/magic_auth_send_magic_auth_code_and_return_response.rb +18 -0
- data/lib/workos/user_management/password_session_authenticate_request.rb +8 -2
- data/lib/workos/user_management/radar_email_challenge_code_session_authenticate_request.rb +43 -0
- data/lib/workos/user_management/radar_sms_challenge_code_session_authenticate_request.rb +46 -0
- data/lib/workos/user_management/send_radar_sms_challenge.rb +31 -0
- data/lib/workos/user_management/send_radar_sms_challenge_response.rb +22 -0
- data/lib/workos/user_management/user_create_response.rb +7 -0
- data/lib/workos/user_management.rb +165 -6
- data/lib/workos/version.rb +1 -1
- data/rbi/workos/admin_portal.rbi +1 -2
- data/rbi/workos/auth_method_mismatch_error.rbi +30 -0
- data/rbi/workos/authorization_code_session_authenticate_request.rbi +6 -0
- data/rbi/workos/connected_account_dto.rbi +48 -0
- data/rbi/workos/create_data_integration.rbi +54 -0
- data/rbi/workos/create_magic_code_and_return.rbi +24 -0
- data/rbi/workos/create_user.rbi +18 -0
- data/rbi/workos/custom_provider_definition.rbi +84 -0
- data/rbi/workos/data_integration.rbi +96 -0
- data/rbi/workos/data_integration_credential.rbi +36 -0
- data/rbi/workos/data_integration_credentials_dto.rbi +36 -0
- data/rbi/workos/data_integration_credentials_response.rbi +36 -0
- data/rbi/workos/data_integration_credentials_response_credential.rbi +54 -0
- data/rbi/workos/data_integration_custom_provider.rbi +84 -0
- data/rbi/workos/data_integrations_upsert_api_key_request.rbi +36 -0
- data/rbi/workos/data_integrations_vend_credentials_request.rbi +30 -0
- data/rbi/workos/generate_link.rbi +0 -6
- data/rbi/workos/magic_auth_code_session_authenticate_request.rbi +6 -0
- data/rbi/workos/magic_auth_send_magic_auth_code_and_return_response.rbi +24 -0
- data/rbi/workos/password_session_authenticate_request.rbi +12 -0
- data/rbi/workos/pipes.rbi +104 -0
- data/rbi/workos/radar.rbi +2 -1
- data/rbi/workos/radar_email_challenge_code_session_authenticate_request.rbi +72 -0
- data/rbi/workos/radar_sms_challenge_code_session_authenticate_request.rbi +78 -0
- data/rbi/workos/radar_standalone_assess_request.rbi +6 -0
- data/rbi/workos/send_radar_sms_challenge.rbi +48 -0
- data/rbi/workos/send_radar_sms_challenge_response.rbi +30 -0
- data/rbi/workos/update_custom_provider_definition.rbi +84 -0
- data/rbi/workos/update_data_integration.rbi +48 -0
- data/rbi/workos/user_create_response.rbi +24 -0
- data/rbi/workos/user_management.rbi +47 -5
- data/rbi/workos/user_role_assignment.rbi +6 -0
- data/rbi/workos/user_role_assignment_source.rbi +30 -0
- data/test/workos/test_admin_portal_model_round_trip.rb +33 -0
- data/test/workos/test_audit_logs_model_round_trip.rb +218 -0
- data/test/workos/test_authorization_model_round_trip.rb +456 -0
- data/test/workos/test_connect_model_round_trip.rb +30 -0
- data/test/workos/test_groups_model_round_trip.rb +33 -0
- data/test/workos/test_model_round_trip.rb +2 -7857
- data/test/workos/test_organizations_model_round_trip.rb +29 -0
- data/test/workos/test_pipes.rb +72 -0
- data/test/workos/test_pipes_model_round_trip.rb +389 -0
- data/test/workos/test_radar_model_round_trip.rb +85 -0
- data/test/workos/test_shared_model_round_trip.rb +92 -0
- data/test/workos/test_user_management.rb +24 -0
- data/test/workos/test_user_management_model_round_trip.rb +1048 -0
- data/test/workos/test_webhooks_model_round_trip.rb +53 -0
- metadata +62 -1
data/lib/workos/pipes.rb
CHANGED
|
@@ -10,6 +10,192 @@ module WorkOS
|
|
|
10
10
|
@client = client
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
+
# List data integrations
|
|
14
|
+
# @param before [String, nil] An object ID that defines your place in the list. When the ID is not present, you are at the end of the list. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `before="obj_123"` to fetch a new batch of objects before `"obj_123"`.
|
|
15
|
+
# @param after [String, nil] An object ID that defines your place in the list. When the ID is not present, you are at the end of the list. For example, if you make a list request and receive 100 objects, ending with `"obj_123"`, your subsequent call can include `after="obj_123"` to fetch a new batch of objects after `"obj_123"`.
|
|
16
|
+
# @param limit [Integer, nil] Upper limit on the number of objects to return, between `1` and `100`.
|
|
17
|
+
# @param order [WorkOS::Types::PaginationOrder, nil] Order the results by the creation time. Supported values are `"asc"` (ascending), `"desc"` (descending), and `"normal"` (descending with reversed cursor semantics where `before` fetches older records and `after` fetches newer records).
|
|
18
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
19
|
+
# @return [WorkOS::Types::ListStruct<WorkOS::DataIntegration>]
|
|
20
|
+
def list_data_integrations(
|
|
21
|
+
before: nil,
|
|
22
|
+
after: nil,
|
|
23
|
+
limit: 10,
|
|
24
|
+
order: "desc",
|
|
25
|
+
request_options: {}
|
|
26
|
+
)
|
|
27
|
+
params = {
|
|
28
|
+
"before" => before,
|
|
29
|
+
"after" => after,
|
|
30
|
+
"limit" => limit,
|
|
31
|
+
"order" => order
|
|
32
|
+
}.compact
|
|
33
|
+
response = @client.request(
|
|
34
|
+
method: :get,
|
|
35
|
+
path: "/data-integrations",
|
|
36
|
+
auth: true,
|
|
37
|
+
params: params,
|
|
38
|
+
request_options: request_options
|
|
39
|
+
)
|
|
40
|
+
fetch_next = ->(cursor) {
|
|
41
|
+
list_data_integrations(
|
|
42
|
+
before: before,
|
|
43
|
+
after: cursor,
|
|
44
|
+
limit: limit,
|
|
45
|
+
order: order,
|
|
46
|
+
request_options: request_options
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
WorkOS::Types::ListStruct.from_response(
|
|
50
|
+
response,
|
|
51
|
+
model: WorkOS::DataIntegration,
|
|
52
|
+
filters: {before: before, limit: limit, order: order},
|
|
53
|
+
fetch_next: fetch_next
|
|
54
|
+
)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Create a data integration
|
|
58
|
+
# @param provider [String] The provider to create a Data Integration for. For a built-in provider use its slug (e.g. `github`, `slack`). For a custom provider, this is the new provider slug and `custom_provider` must be supplied. A custom provider slug cannot shadow an existing global provider slug.
|
|
59
|
+
# @param description [String, nil] An optional description of the Data Integration.
|
|
60
|
+
# @param enabled [Boolean, nil] Whether the Data Integration is enabled. Defaults to `false`.
|
|
61
|
+
# @param scopes [Array<String>, nil] The OAuth scopes to request for the Data Integration. Defaults to the provider's configured scopes when omitted.
|
|
62
|
+
# @param credentials [WorkOS::DataIntegrationCredentialsDto, nil] The credentials to configure for the Data Integration. Required for both built-in and custom providers.
|
|
63
|
+
# @param custom_provider [WorkOS::CustomProviderDefinition, nil] The OAuth definition for a custom provider. Supply this to define a custom provider; omit it to create an integration for a built-in provider.
|
|
64
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
65
|
+
# @return [WorkOS::DataIntegration]
|
|
66
|
+
def create_data_integration(
|
|
67
|
+
provider:,
|
|
68
|
+
description: nil,
|
|
69
|
+
enabled: nil,
|
|
70
|
+
scopes: nil,
|
|
71
|
+
credentials: nil,
|
|
72
|
+
custom_provider: nil,
|
|
73
|
+
request_options: {}
|
|
74
|
+
)
|
|
75
|
+
body = {
|
|
76
|
+
"provider" => provider,
|
|
77
|
+
"description" => description,
|
|
78
|
+
"enabled" => enabled,
|
|
79
|
+
"scopes" => scopes,
|
|
80
|
+
"credentials" => credentials,
|
|
81
|
+
"custom_provider" => custom_provider
|
|
82
|
+
}.compact
|
|
83
|
+
response = @client.request(
|
|
84
|
+
method: :post,
|
|
85
|
+
path: "/data-integrations",
|
|
86
|
+
auth: true,
|
|
87
|
+
body: body,
|
|
88
|
+
request_options: request_options
|
|
89
|
+
)
|
|
90
|
+
result = WorkOS::DataIntegration.new(response.body)
|
|
91
|
+
result.last_response = WorkOS::Types::ApiResponse.new(http_status: response.code.to_i, http_headers: response.each_header.to_h, request_id: response["x-request-id"])
|
|
92
|
+
result
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Get a data integration
|
|
96
|
+
# @param slug [String] The slug identifier of the data integration.
|
|
97
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
98
|
+
# @return [WorkOS::DataIntegration]
|
|
99
|
+
def get_data_integration(
|
|
100
|
+
slug:,
|
|
101
|
+
request_options: {}
|
|
102
|
+
)
|
|
103
|
+
response = @client.request(
|
|
104
|
+
method: :get,
|
|
105
|
+
path: "/data-integrations/#{WorkOS::Util.encode_path(slug)}",
|
|
106
|
+
auth: true,
|
|
107
|
+
request_options: request_options
|
|
108
|
+
)
|
|
109
|
+
result = WorkOS::DataIntegration.new(response.body)
|
|
110
|
+
result.last_response = WorkOS::Types::ApiResponse.new(http_status: response.code.to_i, http_headers: response.each_header.to_h, request_id: response["x-request-id"])
|
|
111
|
+
result
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Update a data integration
|
|
115
|
+
# @param slug [String] The slug identifier of the data integration.
|
|
116
|
+
# @param description [String, nil] An optional description of the Data Integration.
|
|
117
|
+
# @param enabled [Boolean, nil] Whether the Data Integration is enabled.
|
|
118
|
+
# @param scopes [Array<String>, nil] The OAuth scopes to request for the Data Integration. Pass `null` to reset to the provider's configured scopes.
|
|
119
|
+
# @param credentials [WorkOS::DataIntegrationCredentialsDto, nil] New credentials for the Data Integration. When provided, rotates the stored client secret.
|
|
120
|
+
# @param custom_provider [WorkOS::UpdateCustomProviderDefinition, nil] Updates to a custom provider's OAuth definition. Only valid for custom-provider integrations.
|
|
121
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
122
|
+
# @return [WorkOS::DataIntegration]
|
|
123
|
+
def update_data_integration(
|
|
124
|
+
slug:,
|
|
125
|
+
description: nil,
|
|
126
|
+
enabled: nil,
|
|
127
|
+
scopes: nil,
|
|
128
|
+
credentials: nil,
|
|
129
|
+
custom_provider: nil,
|
|
130
|
+
request_options: {}
|
|
131
|
+
)
|
|
132
|
+
body = {
|
|
133
|
+
"description" => description,
|
|
134
|
+
"enabled" => enabled,
|
|
135
|
+
"scopes" => scopes,
|
|
136
|
+
"credentials" => credentials,
|
|
137
|
+
"custom_provider" => custom_provider
|
|
138
|
+
}.compact
|
|
139
|
+
response = @client.request(
|
|
140
|
+
method: :put,
|
|
141
|
+
path: "/data-integrations/#{WorkOS::Util.encode_path(slug)}",
|
|
142
|
+
auth: true,
|
|
143
|
+
body: body,
|
|
144
|
+
request_options: request_options
|
|
145
|
+
)
|
|
146
|
+
result = WorkOS::DataIntegration.new(response.body)
|
|
147
|
+
result.last_response = WorkOS::Types::ApiResponse.new(http_status: response.code.to_i, http_headers: response.each_header.to_h, request_id: response["x-request-id"])
|
|
148
|
+
result
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# Delete a data integration
|
|
152
|
+
# @param slug [String] The slug identifier of the data integration.
|
|
153
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
154
|
+
# @return [void]
|
|
155
|
+
def delete_data_integration(
|
|
156
|
+
slug:,
|
|
157
|
+
request_options: {}
|
|
158
|
+
)
|
|
159
|
+
@client.request(
|
|
160
|
+
method: :delete,
|
|
161
|
+
path: "/data-integrations/#{WorkOS::Util.encode_path(slug)}",
|
|
162
|
+
auth: true,
|
|
163
|
+
request_options: request_options
|
|
164
|
+
)
|
|
165
|
+
nil
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
# Upsert an API key for a connected account
|
|
169
|
+
# @param slug [String] The identifier of the integration.
|
|
170
|
+
# @param user_id [String] A [User](https://workos.com/docs/reference/authkit/user) identifier.
|
|
171
|
+
# @param organization_id [String, nil] An [Organization](https://workos.com/docs/reference/organization) identifier. Optional parameter to scope the connection to a specific organization.
|
|
172
|
+
# @param secret [String] The API key secret to store for this integration.
|
|
173
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
174
|
+
# @return [WorkOS::ConnectedAccount]
|
|
175
|
+
def update_data_integration_api_key(
|
|
176
|
+
slug:,
|
|
177
|
+
user_id:,
|
|
178
|
+
secret:,
|
|
179
|
+
organization_id: nil,
|
|
180
|
+
request_options: {}
|
|
181
|
+
)
|
|
182
|
+
body = {
|
|
183
|
+
"user_id" => user_id,
|
|
184
|
+
"organization_id" => organization_id,
|
|
185
|
+
"secret" => secret
|
|
186
|
+
}.compact
|
|
187
|
+
response = @client.request(
|
|
188
|
+
method: :put,
|
|
189
|
+
path: "/data-integrations/#{WorkOS::Util.encode_path(slug)}/api-key",
|
|
190
|
+
auth: true,
|
|
191
|
+
body: body,
|
|
192
|
+
request_options: request_options
|
|
193
|
+
)
|
|
194
|
+
result = WorkOS::ConnectedAccount.new(response.body)
|
|
195
|
+
result.last_response = WorkOS::Types::ApiResponse.new(http_status: response.code.to_i, http_headers: response.each_header.to_h, request_id: response["x-request-id"])
|
|
196
|
+
result
|
|
197
|
+
end
|
|
198
|
+
|
|
13
199
|
# Get authorization URL
|
|
14
200
|
# @param slug [String] The slug identifier of the provider (e.g., `github`, `slack`, `notion`).
|
|
15
201
|
# @param user_id [String] The ID of the user to authorize.
|
|
@@ -41,6 +227,34 @@ module WorkOS
|
|
|
41
227
|
result
|
|
42
228
|
end
|
|
43
229
|
|
|
230
|
+
# Vend credentials for a connected account
|
|
231
|
+
# @param slug [String] The identifier of the integration.
|
|
232
|
+
# @param user_id [String] A [User](https://workos.com/docs/reference/authkit/user) identifier.
|
|
233
|
+
# @param organization_id [String, nil] An [Organization](https://workos.com/docs/reference/organization) identifier. Optional parameter to scope the connection to a specific organization.
|
|
234
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
235
|
+
# @return [WorkOS::DataIntegrationCredentialsResponse]
|
|
236
|
+
def create_data_integration_credential(
|
|
237
|
+
slug:,
|
|
238
|
+
user_id:,
|
|
239
|
+
organization_id: nil,
|
|
240
|
+
request_options: {}
|
|
241
|
+
)
|
|
242
|
+
body = {
|
|
243
|
+
"user_id" => user_id,
|
|
244
|
+
"organization_id" => organization_id
|
|
245
|
+
}.compact
|
|
246
|
+
response = @client.request(
|
|
247
|
+
method: :post,
|
|
248
|
+
path: "/data-integrations/#{WorkOS::Util.encode_path(slug)}/credentials",
|
|
249
|
+
auth: true,
|
|
250
|
+
body: body,
|
|
251
|
+
request_options: request_options
|
|
252
|
+
)
|
|
253
|
+
result = WorkOS::DataIntegrationCredentialsResponse.new(response.body)
|
|
254
|
+
result.last_response = WorkOS::Types::ApiResponse.new(http_status: response.code.to_i, http_headers: response.each_header.to_h, request_id: response["x-request-id"])
|
|
255
|
+
result
|
|
256
|
+
end
|
|
257
|
+
|
|
44
258
|
# Get an access token for a connected account
|
|
45
259
|
# @param provider [String] The identifier of the integration.
|
|
46
260
|
# @param user_id [String] A [User](https://workos.com/docs/reference/authkit/user) identifier.
|
|
@@ -96,6 +310,96 @@ module WorkOS
|
|
|
96
310
|
result
|
|
97
311
|
end
|
|
98
312
|
|
|
313
|
+
# Import a connected account
|
|
314
|
+
# @param user_id [String] A [User](https://workos.com/docs/reference/authkit/user) identifier.
|
|
315
|
+
# @param slug [String] The slug identifier of the provider (e.g., `github`, `slack`, `notion`).
|
|
316
|
+
# @param access_token [String, nil] The OAuth access token for the connected account.
|
|
317
|
+
# @param refresh_token [String, nil] The OAuth refresh token for the connected account.
|
|
318
|
+
# @param expires_at [String, nil] The ISO-8601 timestamp when the access token expires. Required when `access_token` is provided for tokens that expire.
|
|
319
|
+
# @param scopes [Array<String>, nil] The OAuth scopes granted for this connection.
|
|
320
|
+
# @param state [WorkOS::Types::ConnectedAccountState, nil] Explicitly set the state of the connected account. When omitted, the state is derived from the token combination provided.
|
|
321
|
+
# @param organization_id [String, nil] An [Organization](https://workos.com/docs/reference/organization) identifier. Optional parameter if the connection is scoped to an organization.
|
|
322
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
323
|
+
# @return [WorkOS::ConnectedAccount]
|
|
324
|
+
def create_user_connected_account(
|
|
325
|
+
user_id:,
|
|
326
|
+
slug:,
|
|
327
|
+
access_token: nil,
|
|
328
|
+
refresh_token: nil,
|
|
329
|
+
expires_at: nil,
|
|
330
|
+
scopes: nil,
|
|
331
|
+
state: nil,
|
|
332
|
+
organization_id: nil,
|
|
333
|
+
request_options: {}
|
|
334
|
+
)
|
|
335
|
+
params = {
|
|
336
|
+
"organization_id" => organization_id
|
|
337
|
+
}.compact
|
|
338
|
+
body = {
|
|
339
|
+
"access_token" => access_token,
|
|
340
|
+
"refresh_token" => refresh_token,
|
|
341
|
+
"expires_at" => expires_at,
|
|
342
|
+
"scopes" => scopes,
|
|
343
|
+
"state" => state
|
|
344
|
+
}.compact
|
|
345
|
+
response = @client.request(
|
|
346
|
+
method: :post,
|
|
347
|
+
path: "/user_management/users/#{WorkOS::Util.encode_path(user_id)}/connected_accounts/#{WorkOS::Util.encode_path(slug)}",
|
|
348
|
+
auth: true,
|
|
349
|
+
params: params,
|
|
350
|
+
body: body,
|
|
351
|
+
request_options: request_options
|
|
352
|
+
)
|
|
353
|
+
result = WorkOS::ConnectedAccount.new(response.body)
|
|
354
|
+
result.last_response = WorkOS::Types::ApiResponse.new(http_status: response.code.to_i, http_headers: response.each_header.to_h, request_id: response["x-request-id"])
|
|
355
|
+
result
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
# Update a connected account
|
|
359
|
+
# @param user_id [String] A [User](https://workos.com/docs/reference/authkit/user) identifier.
|
|
360
|
+
# @param slug [String] The slug identifier of the provider (e.g., `github`, `slack`, `notion`).
|
|
361
|
+
# @param access_token [String, nil] The OAuth access token for the connected account.
|
|
362
|
+
# @param refresh_token [String, nil] The OAuth refresh token for the connected account.
|
|
363
|
+
# @param expires_at [String, nil] The ISO-8601 timestamp when the access token expires. Required when `access_token` is provided for tokens that expire.
|
|
364
|
+
# @param scopes [Array<String>, nil] The OAuth scopes granted for this connection.
|
|
365
|
+
# @param state [WorkOS::Types::ConnectedAccountState, nil] Explicitly set the state of the connected account. When omitted, the state is derived from the token combination provided.
|
|
366
|
+
# @param organization_id [String, nil] An [Organization](https://workos.com/docs/reference/organization) identifier. Optional parameter if the connection is scoped to an organization.
|
|
367
|
+
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
368
|
+
# @return [WorkOS::ConnectedAccount]
|
|
369
|
+
def update_user_connected_account(
|
|
370
|
+
user_id:,
|
|
371
|
+
slug:,
|
|
372
|
+
access_token: nil,
|
|
373
|
+
refresh_token: nil,
|
|
374
|
+
expires_at: nil,
|
|
375
|
+
scopes: nil,
|
|
376
|
+
state: nil,
|
|
377
|
+
organization_id: nil,
|
|
378
|
+
request_options: {}
|
|
379
|
+
)
|
|
380
|
+
params = {
|
|
381
|
+
"organization_id" => organization_id
|
|
382
|
+
}.compact
|
|
383
|
+
body = {
|
|
384
|
+
"access_token" => access_token,
|
|
385
|
+
"refresh_token" => refresh_token,
|
|
386
|
+
"expires_at" => expires_at,
|
|
387
|
+
"scopes" => scopes,
|
|
388
|
+
"state" => state
|
|
389
|
+
}.compact
|
|
390
|
+
response = @client.request(
|
|
391
|
+
method: :put,
|
|
392
|
+
path: "/user_management/users/#{WorkOS::Util.encode_path(user_id)}/connected_accounts/#{WorkOS::Util.encode_path(slug)}",
|
|
393
|
+
auth: true,
|
|
394
|
+
params: params,
|
|
395
|
+
body: body,
|
|
396
|
+
request_options: request_options
|
|
397
|
+
)
|
|
398
|
+
result = WorkOS::ConnectedAccount.new(response.body)
|
|
399
|
+
result.last_response = WorkOS::Types::ApiResponse.new(http_status: response.code.to_i, http_headers: response.each_header.to_h, request_id: response["x-request-id"])
|
|
400
|
+
result
|
|
401
|
+
end
|
|
402
|
+
|
|
99
403
|
# Delete a connected account
|
|
100
404
|
# @param user_id [String] A [User](https://workos.com/docs/reference/authkit/user) identifier.
|
|
101
405
|
# @param slug [String] The slug identifier of the provider (e.g., `github`, `slack`, `notion`).
|
|
@@ -9,7 +9,8 @@ module WorkOS
|
|
|
9
9
|
user_agent: :user_agent,
|
|
10
10
|
email: :email,
|
|
11
11
|
auth_method: :auth_method,
|
|
12
|
-
action: :action
|
|
12
|
+
action: :action,
|
|
13
|
+
signals_id: :signals_id
|
|
13
14
|
}.freeze
|
|
14
15
|
|
|
15
16
|
attr_accessor \
|
|
@@ -17,7 +18,8 @@ module WorkOS
|
|
|
17
18
|
:user_agent,
|
|
18
19
|
:email,
|
|
19
20
|
:auth_method,
|
|
20
|
-
:action
|
|
21
|
+
:action,
|
|
22
|
+
:signals_id
|
|
21
23
|
|
|
22
24
|
def initialize(json)
|
|
23
25
|
hash = self.class.normalize(json)
|
|
@@ -26,6 +28,7 @@ module WorkOS
|
|
|
26
28
|
@email = hash[:email]
|
|
27
29
|
@auth_method = hash[:auth_method]
|
|
28
30
|
@action = hash[:action]
|
|
31
|
+
@signals_id = hash[:signals_id]
|
|
29
32
|
end
|
|
30
33
|
end
|
|
31
34
|
end
|
data/lib/workos/radar.rb
CHANGED
|
@@ -16,6 +16,7 @@ module WorkOS
|
|
|
16
16
|
# @param email [String] The email address of the user making the request.
|
|
17
17
|
# @param auth_method [WorkOS::Types::RadarStandaloneAssessRequestAuthMethod] The authentication method being used.
|
|
18
18
|
# @param action [WorkOS::Types::RadarStandaloneAssessRequestAction] The action being performed.
|
|
19
|
+
# @param signals_id [String, nil] An optional Radar signals ID for the request.
|
|
19
20
|
# @param request_options [Hash] (see WorkOS::Types::RequestOptions)
|
|
20
21
|
# @return [WorkOS::RadarStandaloneResponse]
|
|
21
22
|
def create_attempt(
|
|
@@ -24,6 +25,7 @@ module WorkOS
|
|
|
24
25
|
email:,
|
|
25
26
|
auth_method:,
|
|
26
27
|
action:,
|
|
28
|
+
signals_id: nil,
|
|
27
29
|
request_options: {}
|
|
28
30
|
)
|
|
29
31
|
body = {
|
|
@@ -31,8 +33,9 @@ module WorkOS
|
|
|
31
33
|
"user_agent" => user_agent,
|
|
32
34
|
"email" => email,
|
|
33
35
|
"auth_method" => auth_method,
|
|
34
|
-
"action" => action
|
|
35
|
-
|
|
36
|
+
"action" => action,
|
|
37
|
+
"signals_id" => signals_id
|
|
38
|
+
}.compact
|
|
36
39
|
response = @client.request(
|
|
37
40
|
method: :post,
|
|
38
41
|
path: "/radar/attempts",
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is auto-generated by oagen. Do not edit.
|
|
4
|
+
|
|
5
|
+
module WorkOS
|
|
6
|
+
class AuthMethodMismatchError < WorkOS::Types::BaseModel
|
|
7
|
+
HASH_ATTRS = {
|
|
8
|
+
code: :code,
|
|
9
|
+
message: :message
|
|
10
|
+
}.freeze
|
|
11
|
+
|
|
12
|
+
attr_accessor \
|
|
13
|
+
:code,
|
|
14
|
+
:message
|
|
15
|
+
|
|
16
|
+
def initialize(json)
|
|
17
|
+
hash = self.class.normalize(json)
|
|
18
|
+
@code = hash[:code]
|
|
19
|
+
@message = hash[:message]
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -7,8 +7,7 @@ module WorkOS
|
|
|
7
7
|
class ConnectedAccountState
|
|
8
8
|
CONNECTED = "connected"
|
|
9
9
|
NEEDS_REAUTHORIZATION = "needs_reauthorization"
|
|
10
|
-
|
|
11
|
-
ALL = [CONNECTED, NEEDS_REAUTHORIZATION, DISCONNECTED].freeze
|
|
10
|
+
ALL = [CONNECTED, NEEDS_REAUTHORIZATION].freeze
|
|
12
11
|
end
|
|
13
12
|
end
|
|
14
13
|
end
|
|
@@ -5,6 +5,11 @@
|
|
|
5
5
|
module WorkOS
|
|
6
6
|
module Types
|
|
7
7
|
class CreateWebhookEndpointEvents
|
|
8
|
+
AGENT_REGISTRATION_CREATED = "agent.registration.created"
|
|
9
|
+
AGENT_REGISTRATION_CLAIM_ATTEMPT_CREATED = "agent.registration.claim.attempt.created"
|
|
10
|
+
AGENT_REGISTRATION_CLAIM_COMPLETED = "agent.registration.claim.completed"
|
|
11
|
+
AGENT_REGISTRATION_CREDENTIAL_ISSUED = "agent.registration.credential.issued"
|
|
12
|
+
AGENT_REGISTRATION_ORGANIZATION_SWITCHED = "agent.registration.organization.switched"
|
|
8
13
|
AUTHENTICATION_EMAIL_VERIFICATION_SUCCEEDED = "authentication.email_verification_succeeded"
|
|
9
14
|
AUTHENTICATION_MAGIC_AUTH_FAILED = "authentication.magic_auth_failed"
|
|
10
15
|
AUTHENTICATION_MAGIC_AUTH_SUCCEEDED = "authentication.magic_auth_succeeded"
|
|
@@ -20,6 +25,7 @@ module WorkOS
|
|
|
20
25
|
AUTHENTICATION_SSO_SUCCEEDED = "authentication.sso_succeeded"
|
|
21
26
|
AUTHENTICATION_SSO_TIMED_OUT = "authentication.sso_timed_out"
|
|
22
27
|
AUTHENTICATION_RADAR_RISK_DETECTED = "authentication.radar_risk_detected"
|
|
28
|
+
AUTHENTICATION_REAUTHENTICATION_SUCCEEDED = "authentication.reauthentication_succeeded"
|
|
23
29
|
API_KEY_CREATED = "api_key.created"
|
|
24
30
|
API_KEY_REVOKED = "api_key.revoked"
|
|
25
31
|
API_KEY_UPDATED = "api_key.updated"
|
|
@@ -79,6 +85,7 @@ module WorkOS
|
|
|
79
85
|
PERMISSION_DELETED = "permission.deleted"
|
|
80
86
|
PERMISSION_UPDATED = "permission.updated"
|
|
81
87
|
PIPES_CONNECTED_ACCOUNT_CONNECTED = "pipes.connected_account.connected"
|
|
88
|
+
PIPES_CONNECTED_ACCOUNT_CONNECTION_FAILED = "pipes.connected_account.connection_failed"
|
|
82
89
|
PIPES_CONNECTED_ACCOUNT_DISCONNECTED = "pipes.connected_account.disconnected"
|
|
83
90
|
PIPES_CONNECTED_ACCOUNT_REAUTHORIZATION_NEEDED = "pipes.connected_account.reauthorization_needed"
|
|
84
91
|
SESSION_CREATED = "session.created"
|
|
@@ -86,7 +93,7 @@ module WorkOS
|
|
|
86
93
|
WAITLIST_USER_APPROVED = "waitlist_user.approved"
|
|
87
94
|
WAITLIST_USER_CREATED = "waitlist_user.created"
|
|
88
95
|
WAITLIST_USER_DENIED = "waitlist_user.denied"
|
|
89
|
-
ALL = [AUTHENTICATION_EMAIL_VERIFICATION_SUCCEEDED, AUTHENTICATION_MAGIC_AUTH_FAILED, AUTHENTICATION_MAGIC_AUTH_SUCCEEDED, AUTHENTICATION_MFA_SUCCEEDED, AUTHENTICATION_OAUTH_FAILED, AUTHENTICATION_OAUTH_SUCCEEDED, AUTHENTICATION_PASSWORD_FAILED, AUTHENTICATION_PASSWORD_SUCCEEDED, AUTHENTICATION_PASSKEY_FAILED, AUTHENTICATION_PASSKEY_SUCCEEDED, AUTHENTICATION_SSO_FAILED, AUTHENTICATION_SSO_STARTED, AUTHENTICATION_SSO_SUCCEEDED, AUTHENTICATION_SSO_TIMED_OUT, AUTHENTICATION_RADAR_RISK_DETECTED, API_KEY_CREATED, API_KEY_REVOKED, API_KEY_UPDATED, CONNECTION_ACTIVATED, CONNECTION_DEACTIVATED, CONNECTION_SAML_CERTIFICATE_RENEWAL_REQUIRED, CONNECTION_SAML_CERTIFICATE_RENEWED, CONNECTION_DELETED, DSYNC_ACTIVATED, DSYNC_DELETED, DSYNC_GROUP_CREATED, DSYNC_GROUP_DELETED, DSYNC_GROUP_UPDATED, DSYNC_GROUP_USER_ADDED, DSYNC_GROUP_USER_REMOVED, DSYNC_USER_CREATED, DSYNC_USER_DELETED, DSYNC_USER_UPDATED, EMAIL_VERIFICATION_CREATED, GROUP_CREATED, GROUP_DELETED, GROUP_MEMBER_ADDED, GROUP_MEMBER_REMOVED, GROUP_UPDATED, FLAG_CREATED, FLAG_DELETED, FLAG_UPDATED, FLAG_RULE_UPDATED, INVITATION_ACCEPTED, INVITATION_CREATED, INVITATION_RESENT, INVITATION_REVOKED, MAGIC_AUTH_CREATED, ORGANIZATION_CREATED, ORGANIZATION_DELETED, ORGANIZATION_UPDATED, ORGANIZATION_DOMAIN_CREATED, ORGANIZATION_DOMAIN_DELETED, ORGANIZATION_DOMAIN_UPDATED, ORGANIZATION_DOMAIN_VERIFIED, ORGANIZATION_DOMAIN_VERIFICATION_FAILED, PASSWORD_RESET_CREATED, PASSWORD_RESET_SUCCEEDED, USER_CREATED, USER_UPDATED, USER_DELETED, ORGANIZATION_MEMBERSHIP_CREATED, ORGANIZATION_MEMBERSHIP_DELETED, ORGANIZATION_MEMBERSHIP_UPDATED, ROLE_CREATED, ROLE_DELETED, ROLE_UPDATED, ORGANIZATION_ROLE_CREATED, ORGANIZATION_ROLE_DELETED, ORGANIZATION_ROLE_UPDATED, PERMISSION_CREATED, PERMISSION_DELETED, PERMISSION_UPDATED, PIPES_CONNECTED_ACCOUNT_CONNECTED, PIPES_CONNECTED_ACCOUNT_DISCONNECTED, PIPES_CONNECTED_ACCOUNT_REAUTHORIZATION_NEEDED, SESSION_CREATED, SESSION_REVOKED, WAITLIST_USER_APPROVED, WAITLIST_USER_CREATED, WAITLIST_USER_DENIED].freeze
|
|
96
|
+
ALL = [AGENT_REGISTRATION_CREATED, AGENT_REGISTRATION_CLAIM_ATTEMPT_CREATED, AGENT_REGISTRATION_CLAIM_COMPLETED, AGENT_REGISTRATION_CREDENTIAL_ISSUED, AGENT_REGISTRATION_ORGANIZATION_SWITCHED, AUTHENTICATION_EMAIL_VERIFICATION_SUCCEEDED, AUTHENTICATION_MAGIC_AUTH_FAILED, AUTHENTICATION_MAGIC_AUTH_SUCCEEDED, AUTHENTICATION_MFA_SUCCEEDED, AUTHENTICATION_OAUTH_FAILED, AUTHENTICATION_OAUTH_SUCCEEDED, AUTHENTICATION_PASSWORD_FAILED, AUTHENTICATION_PASSWORD_SUCCEEDED, AUTHENTICATION_PASSKEY_FAILED, AUTHENTICATION_PASSKEY_SUCCEEDED, AUTHENTICATION_SSO_FAILED, AUTHENTICATION_SSO_STARTED, AUTHENTICATION_SSO_SUCCEEDED, AUTHENTICATION_SSO_TIMED_OUT, AUTHENTICATION_RADAR_RISK_DETECTED, AUTHENTICATION_REAUTHENTICATION_SUCCEEDED, API_KEY_CREATED, API_KEY_REVOKED, API_KEY_UPDATED, CONNECTION_ACTIVATED, CONNECTION_DEACTIVATED, CONNECTION_SAML_CERTIFICATE_RENEWAL_REQUIRED, CONNECTION_SAML_CERTIFICATE_RENEWED, CONNECTION_DELETED, DSYNC_ACTIVATED, DSYNC_DELETED, DSYNC_GROUP_CREATED, DSYNC_GROUP_DELETED, DSYNC_GROUP_UPDATED, DSYNC_GROUP_USER_ADDED, DSYNC_GROUP_USER_REMOVED, DSYNC_USER_CREATED, DSYNC_USER_DELETED, DSYNC_USER_UPDATED, EMAIL_VERIFICATION_CREATED, GROUP_CREATED, GROUP_DELETED, GROUP_MEMBER_ADDED, GROUP_MEMBER_REMOVED, GROUP_UPDATED, FLAG_CREATED, FLAG_DELETED, FLAG_UPDATED, FLAG_RULE_UPDATED, INVITATION_ACCEPTED, INVITATION_CREATED, INVITATION_RESENT, INVITATION_REVOKED, MAGIC_AUTH_CREATED, ORGANIZATION_CREATED, ORGANIZATION_DELETED, ORGANIZATION_UPDATED, ORGANIZATION_DOMAIN_CREATED, ORGANIZATION_DOMAIN_DELETED, ORGANIZATION_DOMAIN_UPDATED, ORGANIZATION_DOMAIN_VERIFIED, ORGANIZATION_DOMAIN_VERIFICATION_FAILED, PASSWORD_RESET_CREATED, PASSWORD_RESET_SUCCEEDED, USER_CREATED, USER_UPDATED, USER_DELETED, ORGANIZATION_MEMBERSHIP_CREATED, ORGANIZATION_MEMBERSHIP_DELETED, ORGANIZATION_MEMBERSHIP_UPDATED, ROLE_CREATED, ROLE_DELETED, ROLE_UPDATED, ORGANIZATION_ROLE_CREATED, ORGANIZATION_ROLE_DELETED, ORGANIZATION_ROLE_UPDATED, PERMISSION_CREATED, PERMISSION_DELETED, PERMISSION_UPDATED, PIPES_CONNECTED_ACCOUNT_CONNECTED, PIPES_CONNECTED_ACCOUNT_CONNECTION_FAILED, PIPES_CONNECTED_ACCOUNT_DISCONNECTED, PIPES_CONNECTED_ACCOUNT_REAUTHORIZATION_NEEDED, SESSION_CREATED, SESSION_REVOKED, WAITLIST_USER_APPROVED, WAITLIST_USER_CREATED, WAITLIST_USER_DENIED].freeze
|
|
90
97
|
end
|
|
91
98
|
end
|
|
92
99
|
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is auto-generated by oagen. Do not edit.
|
|
4
|
+
|
|
5
|
+
module WorkOS
|
|
6
|
+
module Types
|
|
7
|
+
class CustomProviderDefinitionAuthenticateVia
|
|
8
|
+
REQUEST_BODY = "request_body"
|
|
9
|
+
BASIC_AUTH_HEADER = "basic_auth_header"
|
|
10
|
+
ALL = [REQUEST_BODY, BASIC_AUTH_HEADER].freeze
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is auto-generated by oagen. Do not edit.
|
|
4
|
+
|
|
5
|
+
module WorkOS
|
|
6
|
+
module Types
|
|
7
|
+
class DataIntegrationCredentialType
|
|
8
|
+
CUSTOM = "custom"
|
|
9
|
+
ORGANIZATION = "organization"
|
|
10
|
+
ALL = [CUSTOM, ORGANIZATION].freeze
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is auto-generated by oagen. Do not edit.
|
|
4
|
+
|
|
5
|
+
module WorkOS
|
|
6
|
+
module Types
|
|
7
|
+
class DataIntegrationState
|
|
8
|
+
VALID = "valid"
|
|
9
|
+
INVALID = "invalid"
|
|
10
|
+
REQUESTED = "requested"
|
|
11
|
+
ALL = [VALID, INVALID, REQUESTED].freeze
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
module WorkOS
|
|
6
6
|
module Types
|
|
7
|
-
DataIntegrationsListResponseDataConnectedAccountState
|
|
7
|
+
class DataIntegrationsListResponseDataConnectedAccountState
|
|
8
|
+
CONNECTED = "connected"
|
|
9
|
+
NEEDS_REAUTHORIZATION = "needs_reauthorization"
|
|
10
|
+
DISCONNECTED = "disconnected"
|
|
11
|
+
ALL = [CONNECTED, NEEDS_REAUTHORIZATION, DISCONNECTED].freeze
|
|
12
|
+
end
|
|
8
13
|
end
|
|
9
14
|
end
|
|
@@ -13,7 +13,8 @@ module WorkOS
|
|
|
13
13
|
invitation_token: :invitation_token,
|
|
14
14
|
ip_address: :ip_address,
|
|
15
15
|
device_id: :device_id,
|
|
16
|
-
user_agent: :user_agent
|
|
16
|
+
user_agent: :user_agent,
|
|
17
|
+
signals_id: :signals_id
|
|
17
18
|
}.freeze
|
|
18
19
|
|
|
19
20
|
attr_accessor \
|
|
@@ -25,7 +26,8 @@ module WorkOS
|
|
|
25
26
|
:invitation_token,
|
|
26
27
|
:ip_address,
|
|
27
28
|
:device_id,
|
|
28
|
-
:user_agent
|
|
29
|
+
:user_agent,
|
|
30
|
+
:signals_id
|
|
29
31
|
|
|
30
32
|
def initialize(json)
|
|
31
33
|
hash = self.class.normalize(json)
|
|
@@ -38,6 +40,7 @@ module WorkOS
|
|
|
38
40
|
@ip_address = hash[:ip_address]
|
|
39
41
|
@device_id = hash[:device_id]
|
|
40
42
|
@user_agent = hash[:user_agent]
|
|
43
|
+
@signals_id = hash[:signals_id]
|
|
41
44
|
end
|
|
42
45
|
end
|
|
43
46
|
end
|
|
@@ -6,17 +6,29 @@ module WorkOS
|
|
|
6
6
|
class CreateMagicCodeAndReturn < WorkOS::Types::BaseModel
|
|
7
7
|
HASH_ATTRS = {
|
|
8
8
|
email: :email,
|
|
9
|
-
invitation_token: :invitation_token
|
|
9
|
+
invitation_token: :invitation_token,
|
|
10
|
+
ip_address: :ip_address,
|
|
11
|
+
user_agent: :user_agent,
|
|
12
|
+
radar_auth_attempt_id: :radar_auth_attempt_id,
|
|
13
|
+
signals_id: :signals_id
|
|
10
14
|
}.freeze
|
|
11
15
|
|
|
12
16
|
attr_accessor \
|
|
13
17
|
:email,
|
|
14
|
-
:invitation_token
|
|
18
|
+
:invitation_token,
|
|
19
|
+
:ip_address,
|
|
20
|
+
:user_agent,
|
|
21
|
+
:radar_auth_attempt_id,
|
|
22
|
+
:signals_id
|
|
15
23
|
|
|
16
24
|
def initialize(json)
|
|
17
25
|
hash = self.class.normalize(json)
|
|
18
26
|
@email = hash[:email]
|
|
19
27
|
@invitation_token = hash[:invitation_token]
|
|
28
|
+
@ip_address = hash[:ip_address]
|
|
29
|
+
@user_agent = hash[:user_agent]
|
|
30
|
+
@radar_auth_attempt_id = hash[:radar_auth_attempt_id]
|
|
31
|
+
@signals_id = hash[:signals_id]
|
|
20
32
|
end
|
|
21
33
|
end
|
|
22
34
|
end
|
|
@@ -12,6 +12,9 @@ module WorkOS
|
|
|
12
12
|
email_verified: :email_verified,
|
|
13
13
|
metadata: :metadata,
|
|
14
14
|
external_id: :external_id,
|
|
15
|
+
ip_address: :ip_address,
|
|
16
|
+
user_agent: :user_agent,
|
|
17
|
+
signals_id: :signals_id,
|
|
15
18
|
password: :password,
|
|
16
19
|
password_hash: :password_hash,
|
|
17
20
|
password_hash_type: :password_hash_type
|
|
@@ -25,6 +28,9 @@ module WorkOS
|
|
|
25
28
|
:email_verified,
|
|
26
29
|
:metadata,
|
|
27
30
|
:external_id,
|
|
31
|
+
:ip_address,
|
|
32
|
+
:user_agent,
|
|
33
|
+
:signals_id,
|
|
28
34
|
:password,
|
|
29
35
|
:password_hash,
|
|
30
36
|
:password_hash_type
|
|
@@ -38,6 +44,9 @@ module WorkOS
|
|
|
38
44
|
@email_verified = hash[:email_verified]
|
|
39
45
|
@metadata = hash[:metadata] || {}
|
|
40
46
|
@external_id = hash[:external_id]
|
|
47
|
+
@ip_address = hash[:ip_address]
|
|
48
|
+
@user_agent = hash[:user_agent]
|
|
49
|
+
@signals_id = hash[:signals_id]
|
|
41
50
|
@password = hash[:password]
|
|
42
51
|
@password_hash = hash[:password_hash]
|
|
43
52
|
@password_hash_type = hash[:password_hash_type]
|