noresponse 8.2.0 → 8.2.1

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: e0c991c74c5d3a8b4c657e5734916987e2e39f1599a49553eec08288fdd6380b
4
- data.tar.gz: a580b13bbc7b2cc91a14c61831787fe8250e8c3b72100f297b68a36ce33c2627
3
+ metadata.gz: a2de462c63f05c59d55e926053395a45fa2b45c6e10c45aa66f7ade4fc2e0447
4
+ data.tar.gz: 77ff7a7d0b1b602b1a22b9644746277940a5793f938f27f83571fb7b5660f6c7
5
5
  SHA512:
6
- metadata.gz: 54275c1432e5f05dbf9b99f051d53eedcc97263f5c12457cc99d898640f620ee23f0169b90be712fdc3094113051d318678ca4789e5f4ad7a50f4545bc9d9c41
7
- data.tar.gz: 3877ee1a41acb9d0f768ca7709e80cd24202127e8640f6afcf6759222ec645d51bab21f0c4a2b61193fc4eedb500eb8cb12bcb0afccdf3550217dc5317b0db7b
6
+ metadata.gz: 3050ce89c6a1388e1f1419752a8cd954a608d02757b22f7d941561d996d3b49dec7a2a4409233e20fa96101ab43d59774b93d9ff9200f29ffaec725ccb29237e
7
+ data.tar.gz: e8fc417da076ca6bbef8679ca7671392555ed6c89b31dc5ac7164fb2b46af80a46050796101b3b77da5a43ae4e7d1c6cae2e4693bfcb706ea13ce241ad328d9f
@@ -925,7 +925,7 @@ module NoResponse
925
925
  http_headers: nil
926
926
  )
927
927
  # list_assessments - Page through one account's unexpired assessments.
928
- # The account's history: the same page as POST /v1/assessments/query for this account_id, newest first, each at its latest assessment_version. Requires the history scope. Read-only and safe to retry. An account with no assessments answers 200 with empty items. The cursor is opaque and bound to your workspace and the account; a tampered or expired cursor answers 400 invalid_cursor. response_mode=detailed needs the detailed scope. The account_id travels in the URL; use POST /v1/assessments/query to keep it out of access logs.
928
+ # The account's history: the same page as POST /v1/assessments/query for this account_id, newest first, each at its latest assessment_version. Requires the history scope. Read-only and safe to retry. An account with no assessments answers 200 with empty items. The cursor is opaque and bound to your workspace and the account; a tampered or expired cursor answers 400 invalid_cursor. response_mode=detailed needs the detailed scope. Each item's identifiers holds the identifiers its assessment was sent, exactly as received. The account_id travels in the URL; use POST /v1/assessments/query to keep it out of access logs.
929
929
  request = Models::Operations::ListAccountAssessmentsRequest.new(
930
930
  account_id: account_id,
931
931
  limit: limit,
@@ -3319,7 +3319,7 @@ module NoResponse
3319
3319
  }
3320
3320
  def export(account_id:, response_mode: nil, retries: nil, timeout_ms: nil, http_headers: nil)
3321
3321
  # export - Export an account
3322
- # Retrieve one consistent snapshot of retained customer-accessible records, including assessment revisions, account decisions, feedback, key associations, enforcements and request diagnostics. Secrets, restricted source information, other customers' data and legacy free-text notes are excluded. The same standard/detailed permissions apply. An export exceeding 10000 records or 8 MiB returns export_too_large without a partial result. Historical decisions that were not captured are identified as an exclusion.
3322
+ # Retrieve one consistent snapshot of retained customer-accessible records, including assessment revisions, account decisions, feedback, key associations, enforcements and request diagnostics. Each assessment revision's detail.identifiers holds the identifiers that assessment was sent, exactly as received. Secrets, restricted source information, other customers' data and legacy free-text notes are excluded. The same standard/detailed permissions apply. An export exceeding 10000 records or 8 MiB returns export_too_large without a partial result. Historical decisions that were not captured are identified as an exclusion.
3323
3323
  request = Models::Operations::ExportAccountRequest.new(
3324
3324
  account_id: account_id,
3325
3325
  response_mode: response_mode
@@ -50,7 +50,7 @@ module NoResponse
50
50
  }
51
51
  def create(body:, idempotency_key: nil, retries: nil, timeout_ms: nil, http_headers: nil)
52
52
  # create - Assess identifiers for a signup or gateway decision.
53
- # Assesses one account creation, login or purchase (flow) and answers with the account's one current risk: account.risk.decision is the decision for this flow (allow, step_up, review or block, where block means your block threshold was reached), and detail holds this assessment's own facts. depth sets how long the answer waits for sources: quick waits only for the fast ones (500 ms), full for the whole budget (3000 ms at most); it defaults to full for account_creation and purchase and quick for login. 200 carries complete or partial, 202 carries pending with Location and Retry-After. While the account's first assessment is pending, account is absent: apply your own fallback for that, 429, 503 or a timeout. NoResponse blocks nothing itself; you decide. Requires the assess scope. Idempotency-Key is optional in the SDK and is bound to the body for 24 hours: the same key with the same body replays the latest assessment with Idempotent-Replayed: true and starts no new work; the same key with a different body answers 409 idempotency_key_reused. response_mode defaults to standard; detailed needs the detailed scope.
53
+ # Assesses one account creation, login or purchase (flow) and answers with the account's one current risk: account.risk.decision is the decision for this flow (allow, step_up, review or block, where block means your block threshold was reached), and detail holds this assessment's own facts. depth sets how long the answer waits for sources: quick waits only for the fast ones (500 ms), full for the whole budget (3000 ms at most); it defaults to full for account_creation and purchase and quick for login. 200 carries complete or partial, 202 carries pending with Location and Retry-After. While the account's first assessment is pending, account is absent: apply your own fallback for that, 429, 503 or a timeout. NoResponse blocks nothing itself; you decide. Requires the assess scope. Idempotency-Key is optional in the SDK and is bound to the body for 24 hours: the same key with the same body replays the latest assessment with Idempotent-Replayed: true and starts no new work; the same key with a different body answers 409 idempotency_key_reused. response_mode defaults to standard; detailed needs the detailed scope. The answer leaves out detail.identifiers: you hold what you sent, and a key with the history scope gets them back with GET.
54
54
  request = Models::Operations::CreateAssessmentRequest.new(
55
55
  body: body,
56
56
  idempotency_key: idempotency_key
@@ -348,7 +348,7 @@ module NoResponse
348
348
  }
349
349
  def get(assessment_id:, response_mode: nil, retries: nil, timeout_ms: nil, http_headers: nil)
350
350
  # get - Poll the authoritative assessment of one assessment.
351
- # Returns the highest assessment_version, with the account's current risk. Requires the assess or history scope. While status is pending, or partial with a source still running, the response carries Retry-After; poll no faster than it says. Another workspace's assessment, an unknown or expired assessment and a malformed assessment_id all answer 404 not_found. response_mode=detailed needs the detailed scope.
351
+ # Returns the highest assessment_version, with the account's current risk. Requires the assess or history scope. While status is pending, or partial with a source still running, the response carries Retry-After; poll no faster than it says. Another workspace's assessment, an unknown or expired assessment and a malformed assessment_id all answer 404 not_found. response_mode=detailed needs the detailed scope. A key with the history scope also gets detail.identifiers, the identifiers the assessment was sent, exactly as received.
352
352
  request = Models::Operations::GetAssessmentRequest.new(
353
353
  assessment_id: assessment_id,
354
354
  response_mode: response_mode
@@ -1232,7 +1232,7 @@ module NoResponse
1232
1232
  }
1233
1233
  def query(request:, retries: nil, timeout_ms: nil, http_headers: nil)
1234
1234
  # query - Page through one account's unexpired assessments.
1235
- # History is a POST with account_id in the body so an account identifier stays out of URLs and access logs. Requires the history scope. Read-only and safe to retry. Newest first, each at its latest assessment_version. An account with no assessments answers 200 with empty items. The cursor is opaque and bound to your workspace and the account; a tampered or expired cursor answers 400 invalid_cursor. response_mode=detailed needs the detailed scope.
1235
+ # History is a POST with account_id in the body so an account identifier stays out of URLs and access logs. Requires the history scope. Read-only and safe to retry. Newest first, each at its latest assessment_version. An account with no assessments answers 200 with empty items. The cursor is opaque and bound to your workspace and the account; a tampered or expired cursor answers 400 invalid_cursor. response_mode=detailed needs the detailed scope. Each item's identifiers holds the identifiers its assessment was sent, exactly as received.
1236
1236
  url, params = @sdk_configuration.get_server_details
1237
1237
  base_url = Utils.template_url(url, params)
1238
1238
  url = "#{base_url}/v1/assessments/query"
@@ -1548,7 +1548,7 @@ module NoResponse
1548
1548
  }
1549
1549
  def search(request:, retries: nil, timeout_ms: nil, http_headers: nil)
1550
1550
  # search - Search assessments across this environment
1551
- # Search retained assessments created in [from,to), over at most 366 days. Filters use each assessment decision, rather than the current account decision. Results can change between pages. Keep the assessment version to retrieve the exact decision later. This read does not require an idempotency key.
1551
+ # Search retained assessments created in [from,to), over at most 366 days. Filters use each assessment decision, rather than the current account decision. Results can change between pages. Keep the assessment version to retrieve the exact decision later. Each item's detail.identifiers holds the identifiers its assessment was sent, exactly as received. This read does not require an idempotency key.
1552
1552
  url, params = @sdk_configuration.get_server_details
1553
1553
  base_url = Utils.template_url(url, params)
1554
1554
  url = "#{base_url}/v1/assessments/search"
@@ -1843,7 +1843,7 @@ module NoResponse
1843
1843
  }
1844
1844
  def retrieve_version(assessment_id:, version:, response_mode: nil, retries: nil, timeout_ms: nil, http_headers: nil)
1845
1845
  # retrieve_version - Retrieve an exact assessment revision
1846
- # Retrieve a retained assessment version with its original decision, policy, flow and depth. This response excludes the current account decision. Current retention and response-mode permissions still apply.
1846
+ # Retrieve a retained assessment version with its original decision, policy, flow and depth. This response excludes the current account decision. Current retention and response-mode permissions still apply. detail.identifiers holds the identifiers the assessment was sent, exactly as received.
1847
1847
  request = Models::Operations::GetAssessmentVersionRequest.new(
1848
1848
  assessment_id: assessment_id,
1849
1849
  version: version,
@@ -93,6 +93,12 @@ module NoResponse
93
93
  ::String,
94
94
  {'format_json': {'letter_case': ::NoResponse::Utils.field_name("schema_version"), required: true}}
95
95
  )
96
+ # The identifiers an assessment was sent: each member of the request's identifiers object exactly as received, before the server normalised it (the email domain keeps its case, the name its Unicode form). A member the request did not send is absent. NoResponse keeps them encrypted under the workspace's own key, does not index or log them, and deletes them with the assessment: on DELETE of the assessment or its account, at its expires_at, and with the workspace.
97
+ field(
98
+ :identifiers,
99
+ Crystalline::Nilable.new(Models::Shared::SentIdentifiers),
100
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("identifiers")}}
101
+ )
96
102
  # An optional provider correlation id, echoed back. It is not an idempotency key. Refuses an exact-shape JWT or a bare 40, 64 or 128 character hex digest; a UUID is accepted.
97
103
  field(
98
104
  :request_id,
@@ -155,6 +161,7 @@ module NoResponse
155
161
  expires_at: ::String,
156
162
  timing: Models::Shared::AssessmentDetailTiming,
157
163
  schema_version: ::String,
164
+ identifiers: T.nilable(Models::Shared::SentIdentifiers),
158
165
  request_id: T.nilable(::String),
159
166
  recommendation: T.nilable(Models::Shared::Recommendation),
160
167
  risk: T.nilable(Models::Shared::Risk),
@@ -178,6 +185,7 @@ module NoResponse
178
185
  expires_at:,
179
186
  timing:,
180
187
  schema_version: "1",
188
+ identifiers: nil,
181
189
  request_id: nil,
182
190
  recommendation: nil,
183
191
  risk: nil,
@@ -202,6 +210,7 @@ module NoResponse
202
210
  end
203
211
 
204
212
  @schema_version = "1"
213
+ @identifiers = identifiers
205
214
  @request_id = request_id
206
215
  @recommendation = recommendation
207
216
  @risk = risk
@@ -230,6 +239,7 @@ module NoResponse
230
239
  return false unless @expires_at == other.expires_at
231
240
  return false unless @timing == other.timing
232
241
  return false unless @schema_version == other.schema_version
242
+ return false unless @identifiers == other.identifiers
233
243
  return false unless @request_id == other.request_id
234
244
  return false unless @recommendation == other.recommendation
235
245
  return false unless @risk == other.risk
@@ -78,6 +78,12 @@ class NoResponse::Models::Shared::AssessmentDetail
78
78
  def schema_version=(str_)
79
79
  end
80
80
 
81
+ def identifiers
82
+ end
83
+
84
+ def identifiers=(str_)
85
+ end
86
+
81
87
  def request_id
82
88
  end
83
89
 
@@ -0,0 +1,74 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # The identifiers an assessment was sent: each member of the request's identifiers object exactly as received, before the server normalised it (the email domain keeps its case, the name its Unicode form). A member the request did not send is absent. NoResponse keeps them encrypted under the workspace's own key, does not index or log them, and deletes them with the assessment: on DELETE of the assessment or its account, at its expires_at, and with the workspace.
8
+ class SentIdentifiers
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # identifiers.email as the request sent it.
13
+ field(
14
+ :email,
15
+ Crystalline::Nilable.new(::String),
16
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("email")}}
17
+ )
18
+ # identifiers.username as the request sent it.
19
+ field(
20
+ :username,
21
+ Crystalline::Nilable.new(::String),
22
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("username")}}
23
+ )
24
+ # identifiers.phone as the request sent it.
25
+ field(
26
+ :phone,
27
+ Crystalline::Nilable.new(::String),
28
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("phone")}}
29
+ )
30
+ # identifiers.name as the request sent it, before NFC normalisation.
31
+ field(
32
+ :name,
33
+ Crystalline::Nilable.new(::String),
34
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("name")}}
35
+ )
36
+ # identifiers.ip as the request sent it.
37
+ field(
38
+ :ip,
39
+ Crystalline::Nilable.new(::String),
40
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("ip")}}
41
+ )
42
+
43
+ sig {
44
+ params(
45
+ email: T.nilable(::String),
46
+ username: T.nilable(::String),
47
+ phone: T.nilable(::String),
48
+ name: T.nilable(::String),
49
+ ip: T.nilable(::String)
50
+ )
51
+ .void
52
+ }
53
+ def initialize(email: nil, username: nil, phone: nil, name: nil, ip: nil)
54
+ @email = email
55
+ @username = username
56
+ @phone = phone
57
+ @name = name
58
+ @ip = ip
59
+ end
60
+
61
+ sig { params(other: T.untyped).returns(T::Boolean) }
62
+ def ==(other)
63
+ return false unless other.is_a?(self.class)
64
+ return false unless @email == other.email
65
+ return false unless @username == other.username
66
+ return false unless @phone == other.phone
67
+ return false unless @name == other.name
68
+ return false unless @ip == other.ip
69
+ true
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,38 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::SentIdentifiers
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::SentIdentifiers
9
+ def email
10
+ end
11
+
12
+ def email=(str_)
13
+ end
14
+
15
+ def username
16
+ end
17
+
18
+ def username=(str_)
19
+ end
20
+
21
+ def phone
22
+ end
23
+
24
+ def phone=(str_)
25
+ end
26
+
27
+ def name
28
+ end
29
+
30
+ def name=(str_)
31
+ end
32
+
33
+ def ip
34
+ end
35
+
36
+ def ip=(str_)
37
+ end
38
+ end
@@ -157,6 +157,7 @@ module NoResponse
157
157
  autoload :RiskSummaryPhone, "no_response/models/shared/risksummaryphone.rb"
158
158
  autoload :RiskSummaryUsername, "no_response/models/shared/risksummaryusername.rb"
159
159
  autoload :Security, "no_response/models/shared/security.rb"
160
+ autoload :SentIdentifiers, "no_response/models/shared/sentidentifiers.rb"
160
161
  autoload :Settings, "no_response/models/shared/settings.rb"
161
162
  autoload :SettingsFlows, "no_response/models/shared/settingsflows.rb"
162
163
  autoload :SettingsRequest, "no_response/models/shared/settingsrequest.rb"
@@ -95,9 +95,9 @@ module NoResponse
95
95
 
96
96
  @language = "ruby"
97
97
  @openapi_doc_version = "1"
98
- @sdk_version = "8.2.0"
98
+ @sdk_version = "8.2.1"
99
99
  @gen_version = "internal"
100
- @user_agent = "noresponse-sdk/ruby 8.2.0 internal 1 noresponse"
100
+ @user_agent = "noresponse-sdk/ruby 8.2.1 internal 1 noresponse"
101
101
  end
102
102
 
103
103
  sig { returns([String, T::Hash[Symbol, String]]) }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: noresponse
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.2.0
4
+ version: 8.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - NoResponse
@@ -757,6 +757,8 @@ files:
757
757
  - lib/no_response/models/shared/risksummaryusername.rbi
758
758
  - lib/no_response/models/shared/security.rb
759
759
  - lib/no_response/models/shared/security.rbi
760
+ - lib/no_response/models/shared/sentidentifiers.rb
761
+ - lib/no_response/models/shared/sentidentifiers.rbi
760
762
  - lib/no_response/models/shared/settings.rb
761
763
  - lib/no_response/models/shared/settings.rbi
762
764
  - lib/no_response/models/shared/settingsflows.rb