noresponse 9.4.4 → 9.5.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.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/lib/no_response/accounts.rb +1 -1
  3. data/lib/no_response/assessments.rb +1 -1
  4. data/lib/no_response/models/shared/accountdirectorypageitem.rb +19 -2
  5. data/lib/no_response/models/shared/accountdirectorypageitem.rbi +6 -0
  6. data/lib/no_response/models/shared/accountdirectorysearchrequest.rb +20 -3
  7. data/lib/no_response/models/shared/accountdirectorysearchrequest.rbi +6 -0
  8. data/lib/no_response/models/shared/assessmentsearchitem.rb +12 -2
  9. data/lib/no_response/models/shared/assessmentsearchitem.rbi +6 -0
  10. data/lib/no_response/models/shared/assessmentsearchrequest.rb +12 -2
  11. data/lib/no_response/models/shared/assessmentsearchrequest.rbi +6 -0
  12. data/lib/no_response/models/shared/identifierexpression.rb +47 -0
  13. data/lib/no_response/models/shared/identifierexpression.rbi +20 -0
  14. data/lib/no_response/models/shared/identifierexpressionleaf.rb +33 -0
  15. data/lib/no_response/models/shared/identifierexpressionleaf.rbi +14 -0
  16. data/lib/no_response/models/shared/identifierexpressionnode.rb +56 -0
  17. data/lib/no_response/models/shared/identifierexpressionnode.rbi +26 -0
  18. data/lib/no_response/models/shared/identifierexpressionnodelevelone.rb +56 -0
  19. data/lib/no_response/models/shared/identifierexpressionnodelevelone.rbi +26 -0
  20. data/lib/no_response/models/shared/identifierexpressionnodeleveltwo.rb +56 -0
  21. data/lib/no_response/models/shared/identifierexpressionnodeleveltwo.rbi +26 -0
  22. data/lib/no_response/models/shared/identifiertermmatch.rb +114 -0
  23. data/lib/no_response/models/shared/identifiertermmatch.rbi +50 -0
  24. data/lib/no_response/models/shared/permissiondeniederrorcode.rb +3 -0
  25. data/lib/no_response/models/shared/scope_enum.rb +16 -0
  26. data/lib/no_response/models/shared/scope_enum.rbi +9 -0
  27. data/lib/no_response/models/shared.rb +7 -0
  28. data/lib/no_response/sdkconfiguration.rb +2 -2
  29. metadata +16 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52bf0e469211da6bcdaa3def8fae14b509718f9099b95e0caefbcb5dc3d4b790
4
- data.tar.gz: b071853ab63121d223b6707fb2c55577d0c932ea1a08b422ed05873107faf719
3
+ metadata.gz: a38cb0fcaa5a2432b34567ef9cd9f96a97748f8c8573466f4d9bd9ddb0f11266
4
+ data.tar.gz: 96f6861bbb27d324c5e07e996375b356084892c6992dc6df11add8f5ccf51429
5
5
  SHA512:
6
- metadata.gz: 72fbb0a9f8444ac044317a62e72c19d21d95767f76caa6304e9dc4204e0647d7e67d0ecbe82858963e98a3dda7214321c370e8b1c6dbcda14ae94e1c8e5dc867
7
- data.tar.gz: a0db4c974286509b49ef6c63ca94836a8547736ad3d00a2d50e6928e3f418203b0e5fba31547759710e6c51c1285dca3d5b234999022f86ce25c3694b72475e9
6
+ metadata.gz: 7fcacf2819e0d838d4ddbfc77ead1998ef526ca89c4b640786148eb30f31a29087b2488de5809541e80718a00abb086c0c11d540664ac64d727c5ec53a4b9083
7
+ data.tar.gz: e9cd8ab8325646ce2a0c5793f1383b238a7cd6067dc0b5440e0912ee3368b1398c4730e340982e3690f05379d546413e76cd25c413fe10a1023b24543c36301d
@@ -4278,7 +4278,7 @@ module NoResponse
4278
4278
  }
4279
4279
  def search(request:, retries: nil, timeout_ms: nil, http_headers: nil)
4280
4280
  # search - Search distinct accounts by submitted identifier or account ID
4281
- # Search distinct accounts observed in retained assessments in this environment. identifier matches an exact, canonical or explicitly selected mailbox form of a submitted email, phone or customer-namespace username. It matches historical retained inputs and returns matched_identifier with the original value and matching assessment. Each row has its newest retained assessment, current account decision when available, retained assessment count, and total distinct-account count. identifier and legacy email are mutually exclusive; account_id and needs_action combine with either using AND. Set needs_action to select accounts with a retained open or in-progress review, or a current review/block account decision without an effective retained account outcome. This filter applies before counting and pagination and adds waiting_for reasons. Current decisions include account list overrides and shared-key scoring and preserve admission holds. Typed identifier search uses stable opaque account order; ordinary and legacy email searches retain newest-seen order. Results are live across pages; each page's items and total share a database snapshot, while current account risk is read separately. Cursors are expiring and bound to scope, operation and filters. Totals are exact below 10000 and capped at 10000. Requires history or investigate authority and identifier-read permission for identifier or email filtering. needs_action additionally requires management scope. Source-discovered associations are not searched and equality is not verified ownership.
4281
+ # Search distinct accounts observed in retained assessments in this environment. identifier matches an exact, canonical or explicitly selected mailbox form of a submitted email, phone or customer-namespace username. It matches historical retained inputs and returns matched_identifier with the original value and matching assessment. Each row has its newest retained assessment, current account decision when available, retained assessment count, and total distinct-account count. identifier and legacy email are mutually exclusive; account_id and needs_action combine with either using AND. Set needs_action to select accounts with a retained open or in-progress review, or a current review/block account decision without an effective retained account outcome. This filter applies before counting and pagination and adds waiting_for reasons. Current decisions include account list overrides and shared-key scoring and preserve admission holds. Typed identifier search uses stable opaque account order; ordinary and legacy email searches retain newest-seen order. Results are live across pages; each page's items and total share a database snapshot, while current account risk is read separately. Cursors are expiring and bound to scope, operation and filters. Totals are exact below 10000 and capped at 10000. Requires history or investigate authority and identifier-read permission for identifier, identifier_expression or email filtering. needs_action additionally requires management scope. Source-discovered associations are not searched and equality is not verified ownership. identifier_expression combines submitted terms with bounded AND/OR, at most 8 raw terms and 3 group levels. Each node selects exactly one of term, and, or. Groups have 2 to 8 operands. Duplicate normalized terms are idempotent and still count toward the limit. identifier_expression, identifier and email are mutually exclusive. Expression results use matched_identifiers with original submitted witnesses and zero-based depth-first term_index. All satisfied unique terms are returned in first-occurrence order. Cursors bind scope, ordered structure, original values, matching modes and all other filters; changing only page limit is allowed. Required expression scope assessment evaluates the whole expression in one retained submission; scope account allows different retained submissions of the same account to satisfy different terms. Both use stable opaque account ordering and distinct-account counting before pagination.
4282
4282
  url, params = @sdk_configuration.get_server_details
4283
4283
  base_url = Utils.template_url(url, params)
4284
4284
  url = "#{base_url}/v1/accounts/search"
@@ -1841,7 +1841,7 @@ module NoResponse
1841
1841
  }
1842
1842
  def search(request:, retries: nil, timeout_ms: nil, http_headers: nil)
1843
1843
  # search - Search assessments across this environment
1844
- # Search retained assessments created in [from,to), at most 366 days. identifier directly matches that assessment's submitted email, phone or customer-namespace username using exact, canonical or explicitly selected email mailbox matching. matched_identifier explains the original value and match basis. Legacy email keeps its account-wide mailbox semantics and cannot be combined with identifier. Other filters combine using AND and describe assessment decisions, separate from current account decisions. Each item carries the original submitted identifiers and its first_decision when available. Newest-created order has an assessment-ID tie break. Results are live across pages; each page's total and items use one database snapshot. Totals are exact below 10000 and capped at 10000. Requires history or investigate authority and identifier-read permission for identifier/email filters; detailed mode also requires detailed permission. No Idempotency-Key.
1844
+ # Search retained assessments created in [from,to), at most 366 days. identifier directly matches that assessment's submitted email, phone or customer-namespace username using exact, canonical or explicitly selected email mailbox matching. matched_identifier explains the original value and match basis. Legacy email keeps its account-wide mailbox semantics and cannot be combined with identifier. Other filters combine using AND and describe assessment decisions, separate from current account decisions. Each item carries the original submitted identifiers and its first_decision when available. Newest-created order has an assessment-ID tie break. Results are live across pages; each page's total and items use one database snapshot. Totals are exact below 10000 and capped at 10000. Requires history or investigate authority and identifier-read permission for identifier, identifier_expression or email filters; detailed mode also requires detailed permission. No Idempotency-Key. identifier_expression combines submitted terms with bounded AND/OR, at most 8 raw terms and 3 group levels. Each node selects exactly one of term, and, or. Groups have 2 to 8 operands. Duplicate normalized terms are idempotent and still count toward the limit. identifier_expression, identifier and email are mutually exclusive. Expression results use matched_identifiers with original submitted witnesses and zero-based depth-first term_index. All satisfied unique terms are returned in first-occurrence order. Cursors bind scope, ordered structure, original values, matching modes and all other filters; changing only page limit is allowed. Expression scope must be assessment: each returned assessment itself satisfies the complete expression. Scope account is rejected with 400 invalid_request; use account search for historical combinations.
1845
1845
  url, params = @sdk_configuration.get_server_details
1846
1846
  base_url = Utils.template_url(url, params)
1847
1847
  url = "#{base_url}/v1/assessments/search"
@@ -45,6 +45,12 @@ module NoResponse
45
45
  Crystalline::Nilable.new(Models::Shared::IdentifierMatch),
46
46
  {'format_json': {'letter_case': ::NoResponse::Utils.field_name("matched_identifier")}}
47
47
  )
48
+ # Present only for identifier_expression. All satisfied unique terms, ordered by term_index, with original submitted values and retained assessment witnesses. A duplicate normalized term appears once at its first raw leaf index. The legacy single identifier filter instead returns matched_identifier.
49
+ field(
50
+ :matched_identifiers,
51
+ Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::IdentifierTermMatch)),
52
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("matched_identifiers")}}
53
+ )
48
54
 
49
55
  sig {
50
56
  params(
@@ -53,17 +59,27 @@ module NoResponse
53
59
  assessments: ::Integer,
54
60
  waiting_for: T.nilable(T::Array[Models::Shared::WaitingFor]),
55
61
  current: T.nilable(Models::Shared::Account),
56
- matched_identifier: T.nilable(Models::Shared::IdentifierMatch)
62
+ matched_identifier: T.nilable(Models::Shared::IdentifierMatch),
63
+ matched_identifiers: T.nilable(T::Array[Models::Shared::IdentifierTermMatch])
57
64
  )
58
65
  .void
59
66
  }
60
- def initialize(account_id:, latest:, assessments:, waiting_for: nil, current: nil, matched_identifier: nil)
67
+ def initialize(
68
+ account_id:,
69
+ latest:,
70
+ assessments:,
71
+ waiting_for: nil,
72
+ current: nil,
73
+ matched_identifier: nil,
74
+ matched_identifiers: nil
75
+ )
61
76
  @account_id = account_id
62
77
  @latest = latest
63
78
  @assessments = assessments
64
79
  @waiting_for = waiting_for
65
80
  @current = current
66
81
  @matched_identifier = matched_identifier
82
+ @matched_identifiers = matched_identifiers
67
83
  end
68
84
 
69
85
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -75,6 +91,7 @@ module NoResponse
75
91
  return false unless @waiting_for == other.waiting_for
76
92
  return false unless @current == other.current
77
93
  return false unless @matched_identifier == other.matched_identifier
94
+ return false unless @matched_identifiers == other.matched_identifiers
78
95
  true
79
96
  end
80
97
  end
@@ -41,4 +41,10 @@ class NoResponse::Models::Shared::AccountDirectoryPageItem
41
41
 
42
42
  def matched_identifier=(str_)
43
43
  end
44
+
45
+ def matched_identifiers
46
+ end
47
+
48
+ def matched_identifiers=(str_)
49
+ end
44
50
  end
@@ -4,7 +4,7 @@
4
4
  module NoResponse
5
5
  module Models
6
6
  module Shared
7
- # Bounded distinct-account search for one authenticated workspace/environment. identifier matches any retained admitted assessment of an account, including historical submitted values. email preserves the legacy canonical-mailbox filter. identifier and email cannot be combined. All other filters combine using AND. Typed identifier search uses stable opaque account order; ordinary and legacy email searches retain newest-seen ordering. Pages are live, not a cross-page snapshot. Requires history or investigate authority and identifier-read permission for identifier or email filtering.
7
+ # Bounded distinct-account search for one authenticated workspace/environment. identifier matches any retained admitted assessment of an account, including historical submitted values. email preserves the legacy canonical-mailbox filter. identifier and email cannot be combined. All other filters combine using AND. Typed identifier search uses stable opaque account order; ordinary and legacy email searches retain newest-seen ordering. Pages are live, not a cross-page snapshot. Requires history or investigate authority and identifier-read permission for identifier, identifier_expression or email filtering. identifier_expression explicitly chooses scope assessment (one whole matching submission) or account (terms may match different retained submissions of one account). At most 8 raw terms and 3 group levels. Mutually exclusive with identifier and email. Expression search uses the same stable opaque account order as typed identifier search.
8
8
  class AccountDirectorySearchRequest
9
9
  extend T::Sig
10
10
  include Crystalline::MetadataFields
@@ -21,7 +21,7 @@ module NoResponse
21
21
  Crystalline::Nilable.new(::String),
22
22
  {'format_json': {'letter_case': ::NoResponse::Utils.field_name("email")}}
23
23
  )
24
- # Opaque, expiring cursor bound to this environment, operation and every filter. Keep the filters unchanged.
24
+ # Opaque, expiring cursor bound to workspace, environment, operation and all filters, including expression scope, ordered structure and original term values. Keep grouping, operand order, matching modes and values unchanged; an omitted match is equivalent to exact. The page limit may change.
25
25
  field(
26
26
  :cursor,
27
27
  Crystalline::Nilable.new(::String),
@@ -33,6 +33,12 @@ module NoResponse
33
33
  Crystalline::Nilable.new(Models::Shared::IdentifierSearch),
34
34
  {'format_json': {'letter_case': ::NoResponse::Utils.field_name("identifier")}}
35
35
  )
36
+ # A bounded AND/OR expression over submitted identifiers. Required scope assessment means the entire expression must match one retained assessment. Scope account permits each term to match a different retained assessment of the same account and is accepted only by account search. Exactly one of term, and or or is allowed at every node. Groups contain 2 to 8 operands, with at most 3 nested group levels and 8 raw term occurrences over the entire expression. A root term is allowed. Duplicate terms with the same kind, match rule, namespace and normalized comparison are idempotent, but count toward the raw limit. Match rules default to exact and preserve the existing identifier contract. Only retained submitted identifiers can satisfy a term. Unknown fields, unsupported scopes and malformed or oversized expressions return 400 invalid_request.
37
+ field(
38
+ :identifier_expression,
39
+ Crystalline::Nilable.new(Models::Shared::IdentifierExpression),
40
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("identifier_expression")}}
41
+ )
36
42
  # Select accounts with a retained open or in-progress review, or a current review/block account decision with no retained effective account outcome. The server applies this filter before counting and pagination. Requires reviews.read as well as history.read for console members; API keys additionally require management.
37
43
  field(
38
44
  :needs_action,
@@ -52,16 +58,26 @@ module NoResponse
52
58
  email: T.nilable(::String),
53
59
  cursor: T.nilable(::String),
54
60
  identifier: T.nilable(Models::Shared::IdentifierSearch),
61
+ identifier_expression: T.nilable(Models::Shared::IdentifierExpression),
55
62
  needs_action: T.nilable(T::Boolean),
56
63
  limit: T.nilable(::Integer)
57
64
  )
58
65
  .void
59
66
  }
60
- def initialize(account_id: nil, email: nil, cursor: nil, identifier: nil, needs_action: false, limit: 25)
67
+ def initialize(
68
+ account_id: nil,
69
+ email: nil,
70
+ cursor: nil,
71
+ identifier: nil,
72
+ identifier_expression: nil,
73
+ needs_action: false,
74
+ limit: 25
75
+ )
61
76
  @account_id = account_id
62
77
  @email = email
63
78
  @cursor = cursor
64
79
  @identifier = identifier
80
+ @identifier_expression = identifier_expression
65
81
  @needs_action = needs_action
66
82
  @limit = limit
67
83
  end
@@ -73,6 +89,7 @@ module NoResponse
73
89
  return false unless @email == other.email
74
90
  return false unless @cursor == other.cursor
75
91
  return false unless @identifier == other.identifier
92
+ return false unless @identifier_expression == other.identifier_expression
76
93
  return false unless @needs_action == other.needs_action
77
94
  return false unless @limit == other.limit
78
95
  true
@@ -30,6 +30,12 @@ class NoResponse::Models::Shared::AccountDirectorySearchRequest
30
30
  def identifier=(str_)
31
31
  end
32
32
 
33
+ def identifier_expression
34
+ end
35
+
36
+ def identifier_expression=(str_)
37
+ end
38
+
33
39
  def needs_action
34
40
  end
35
41
 
@@ -76,6 +76,12 @@ module NoResponse
76
76
  Crystalline::Nilable.new(Models::Shared::IdentifierMatch),
77
77
  {'format_json': {'letter_case': ::NoResponse::Utils.field_name("matched_identifier")}}
78
78
  )
79
+ # Present only for identifier_expression. All satisfied unique terms, ordered by term_index, with original submitted values and retained assessment witnesses. A duplicate normalized term appears once at its first raw leaf index. The legacy single identifier filter instead returns matched_identifier.
80
+ field(
81
+ :matched_identifiers,
82
+ Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::IdentifierTermMatch)),
83
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("matched_identifiers")}}
84
+ )
79
85
 
80
86
  sig {
81
87
  params(
@@ -86,7 +92,8 @@ module NoResponse
86
92
  detail: Models::Shared::AssessmentDetail,
87
93
  schema_version: ::String,
88
94
  first_decision: T.nilable(Models::Shared::Decision),
89
- matched_identifier: T.nilable(Models::Shared::IdentifierMatch)
95
+ matched_identifier: T.nilable(Models::Shared::IdentifierMatch),
96
+ matched_identifiers: T.nilable(T::Array[Models::Shared::IdentifierTermMatch])
90
97
  )
91
98
  .void
92
99
  }
@@ -98,7 +105,8 @@ module NoResponse
98
105
  detail:,
99
106
  schema_version: "1",
100
107
  first_decision: nil,
101
- matched_identifier: nil
108
+ matched_identifier: nil,
109
+ matched_identifiers: nil
102
110
  )
103
111
  @id = id
104
112
  @status = status
@@ -112,6 +120,7 @@ module NoResponse
112
120
  @schema_version = "1"
113
121
  @first_decision = first_decision
114
122
  @matched_identifier = matched_identifier
123
+ @matched_identifiers = matched_identifiers
115
124
  end
116
125
 
117
126
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -125,6 +134,7 @@ module NoResponse
125
134
  return false unless @schema_version == other.schema_version
126
135
  return false unless @first_decision == other.first_decision
127
136
  return false unless @matched_identifier == other.matched_identifier
137
+ return false unless @matched_identifiers == other.matched_identifiers
128
138
  true
129
139
  end
130
140
  end
@@ -53,4 +53,10 @@ class NoResponse::Models::Shared::AssessmentSearchItem
53
53
 
54
54
  def matched_identifier=(str_)
55
55
  end
56
+
57
+ def matched_identifiers
58
+ end
59
+
60
+ def matched_identifiers=(str_)
61
+ end
56
62
  end
@@ -4,7 +4,7 @@
4
4
  module NoResponse
5
5
  module Models
6
6
  module Shared
7
- # Search retained assessments created in [from,to), at most 366 days. identifier matches the submitted value of each returned assessment directly. The legacy email filter keeps its account-wide mailbox semantics and cannot be combined with identifier. Other filters combine using AND and describe assessment decisions, separate from current account decisions. Results use newest-created order with an assessment-ID tie break and are live, not a snapshot across pages. Requires history or investigate authority; identifier/email filtering also requires identifier-read permission. Detailed response mode additionally requires detailed permission. No Idempotency-Key.
7
+ # Search retained assessments created in [from,to), at most 366 days. identifier matches the submitted value of each returned assessment directly. The legacy email filter keeps its account-wide mailbox semantics and cannot be combined with identifier. Other filters combine using AND and describe assessment decisions, separate from current account decisions. Results use newest-created order with an assessment-ID tie break and are live, not a snapshot across pages. Requires history or investigate authority; identifier, identifier_expression and email filtering also require identifier-read permission. Detailed response mode additionally requires detailed permission. No Idempotency-Key. identifier_expression requires scope assessment and matches the complete expression within each returned submission; account scope returns 400 invalid_request. At most 8 raw terms and 3 group levels. Mutually exclusive with identifier and email.
8
8
  class AssessmentSearchRequest
9
9
  extend T::Sig
10
10
  include Crystalline::MetadataFields
@@ -57,7 +57,7 @@ module NoResponse
57
57
  }
58
58
  }
59
59
  )
60
- # Opaque, expiring cursor bound to this environment, operation and every filter. Keep the filters unchanged.
60
+ # Opaque, expiring cursor bound to workspace, environment, operation and all filters, including expression scope, ordered structure and original term values. Keep grouping, operand order, matching modes and values unchanged; an omitted match is equivalent to exact. The page limit may change.
61
61
  field(
62
62
  :cursor,
63
63
  Crystalline::Nilable.new(::String),
@@ -187,6 +187,12 @@ module NoResponse
187
187
  Crystalline::Nilable.new(Models::Shared::IdentifierSearch),
188
188
  {'format_json': {'letter_case': ::NoResponse::Utils.field_name("identifier")}}
189
189
  )
190
+ # A bounded AND/OR expression over submitted identifiers. Required scope assessment means the entire expression must match one retained assessment. Scope account permits each term to match a different retained assessment of the same account and is accepted only by account search. Exactly one of term, and or or is allowed at every node. Groups contain 2 to 8 operands, with at most 3 nested group levels and 8 raw term occurrences over the entire expression. A root term is allowed. Duplicate terms with the same kind, match rule, namespace and normalized comparison are idempotent, but count toward the raw limit. Match rules default to exact and preserve the existing identifier contract. Only retained submitted identifiers can satisfy a term. Unknown fields, unsupported scopes and malformed or oversized expressions return 400 invalid_request.
191
+ field(
192
+ :identifier_expression,
193
+ Crystalline::Nilable.new(Models::Shared::IdentifierExpression),
194
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("identifier_expression")}}
195
+ )
190
196
 
191
197
  field(
192
198
  :limit,
@@ -218,6 +224,7 @@ module NoResponse
218
224
  list_match: T.nilable(Models::Shared::ListMatch),
219
225
  changed: T.nilable(T::Boolean),
220
226
  identifier: T.nilable(Models::Shared::IdentifierSearch),
227
+ identifier_expression: T.nilable(Models::Shared::IdentifierExpression),
221
228
  limit: T.nilable(::Integer)
222
229
  )
223
230
  .void
@@ -245,6 +252,7 @@ module NoResponse
245
252
  list_match: nil,
246
253
  changed: nil,
247
254
  identifier: nil,
255
+ identifier_expression: nil,
248
256
  limit: 20
249
257
  )
250
258
  @from = from
@@ -269,6 +277,7 @@ module NoResponse
269
277
  @list_match = list_match
270
278
  @changed = changed
271
279
  @identifier = identifier
280
+ @identifier_expression = identifier_expression
272
281
  @limit = limit
273
282
  end
274
283
 
@@ -297,6 +306,7 @@ module NoResponse
297
306
  return false unless @list_match == other.list_match
298
307
  return false unless @changed == other.changed
299
308
  return false unless @identifier == other.identifier
309
+ return false unless @identifier_expression == other.identifier_expression
300
310
  return false unless @limit == other.limit
301
311
  true
302
312
  end
@@ -138,6 +138,12 @@ class NoResponse::Models::Shared::AssessmentSearchRequest
138
138
  def identifier=(str_)
139
139
  end
140
140
 
141
+ def identifier_expression
142
+ end
143
+
144
+ def identifier_expression=(str_)
145
+ end
146
+
141
147
  def limit
142
148
  end
143
149
 
@@ -0,0 +1,47 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # A bounded AND/OR expression over submitted identifiers. Required scope assessment means the entire expression must match one retained assessment. Scope account permits each term to match a different retained assessment of the same account and is accepted only by account search. Exactly one of term, and or or is allowed at every node. Groups contain 2 to 8 operands, with at most 3 nested group levels and 8 raw term occurrences over the entire expression. A root term is allowed. Duplicate terms with the same kind, match rule, namespace and normalized comparison are idempotent, but count toward the raw limit. Match rules default to exact and preserve the existing identifier contract. Only retained submitted identifiers can satisfy a term. Unknown fields, unsupported scopes and malformed or oversized expressions return 400 invalid_request.
8
+ class IdentifierExpression
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # assessment requires one submission to satisfy the complete expression. account permits witnesses across retained submissions of one account and is supported only by POST /v1/accounts/search. No default: select scope explicitly.
13
+ field(
14
+ :scope,
15
+ Models::Shared::ScopeEnum,
16
+ {
17
+ 'format_json': {
18
+ 'letter_case': ::NoResponse::Utils.field_name("scope"),
19
+ required: true,
20
+ 'decoder': ::NoResponse::Utils.enum_from_string(Models::Shared::ScopeEnum, false)
21
+ }
22
+ }
23
+ )
24
+
25
+ field(
26
+ :expression,
27
+ Models::Shared::IdentifierExpressionNode,
28
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("expression"), required: true}}
29
+ )
30
+
31
+ sig { params(scope: Models::Shared::ScopeEnum, expression: Models::Shared::IdentifierExpressionNode).void }
32
+ def initialize(scope:, expression:)
33
+ @scope = scope
34
+ @expression = expression
35
+ end
36
+
37
+ sig { params(other: T.untyped).returns(T::Boolean) }
38
+ def ==(other)
39
+ return false unless other.is_a?(self.class)
40
+ return false unless @scope == other.scope
41
+ return false unless @expression == other.expression
42
+ true
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,20 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::IdentifierExpression
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::IdentifierExpression
9
+ def scope
10
+ end
11
+
12
+ def scope=(str_)
13
+ end
14
+
15
+ def expression
16
+ end
17
+
18
+ def expression=(str_)
19
+ end
20
+ end
@@ -0,0 +1,33 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+
8
+ class IdentifierExpressionLeaf
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # One customer-submitted identifier. Defaults to exact comparison of the original submitted value. canonical uses the supported identifier normalisation without an ownership claim: email preserves local-part case, NFC-normalises it and lowercases the domain without removing dots or tags; phone uses international E.164 without extensions or an inferred region; username uses NFC and Unicode case folding within the customer namespace. mailbox is email-only and explicitly selects existing list rules: case-insensitive, remove +tag, and ignore local-part dots at gmail.com and googlemail.com; googlemail.com maps to gmail.com. Username requires namespace customer. Email and phone forbid namespace. Source-discovered identifiers and platform handles are not searched. Unsupported kinds, namespaces, modes and invalid values return 400. Search equality does not establish verified ownership or merge accounts.
13
+ field(
14
+ :term,
15
+ Models::Shared::IdentifierSearch,
16
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("term"), required: true}}
17
+ )
18
+
19
+ sig { params(term: Models::Shared::IdentifierSearch).void }
20
+ def initialize(term:)
21
+ @term = term
22
+ end
23
+
24
+ sig { params(other: T.untyped).returns(T::Boolean) }
25
+ def ==(other)
26
+ return false unless other.is_a?(self.class)
27
+ return false unless @term == other.term
28
+ true
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,14 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::IdentifierExpressionLeaf
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::IdentifierExpressionLeaf
9
+ def term
10
+ end
11
+
12
+ def term=(str_)
13
+ end
14
+ end
@@ -0,0 +1,56 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+
8
+ class IdentifierExpressionNode
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # One customer-submitted identifier. Defaults to exact comparison of the original submitted value. canonical uses the supported identifier normalisation without an ownership claim: email preserves local-part case, NFC-normalises it and lowercases the domain without removing dots or tags; phone uses international E.164 without extensions or an inferred region; username uses NFC and Unicode case folding within the customer namespace. mailbox is email-only and explicitly selects existing list rules: case-insensitive, remove +tag, and ignore local-part dots at gmail.com and googlemail.com; googlemail.com maps to gmail.com. Username requires namespace customer. Email and phone forbid namespace. Source-discovered identifiers and platform handles are not searched. Unsupported kinds, namespaces, modes and invalid values return 400. Search equality does not establish verified ownership or merge accounts.
13
+ field(
14
+ :term,
15
+ Crystalline::Nilable.new(Models::Shared::IdentifierSearch),
16
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("term")}}
17
+ )
18
+
19
+ field(
20
+ :and_,
21
+ Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::IdentifierExpressionNodeLevelTwo)),
22
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("and")}}
23
+ )
24
+
25
+ field(
26
+ :or_,
27
+ Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::IdentifierExpressionNodeLevelTwo)),
28
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("or")}}
29
+ )
30
+
31
+ sig {
32
+ params(
33
+ term: T.nilable(Models::Shared::IdentifierSearch),
34
+ and_: T.nilable(T::Array[Models::Shared::IdentifierExpressionNodeLevelTwo]),
35
+ or_: T.nilable(T::Array[Models::Shared::IdentifierExpressionNodeLevelTwo])
36
+ )
37
+ .void
38
+ }
39
+ def initialize(term: nil, and_: nil, or_: nil)
40
+ @term = term
41
+ @and_ = and_
42
+ @or_ = or_
43
+ end
44
+
45
+ sig { params(other: T.untyped).returns(T::Boolean) }
46
+ def ==(other)
47
+ return false unless other.is_a?(self.class)
48
+ return false unless @term == other.term
49
+ return false unless @and_ == other.and_
50
+ return false unless @or_ == other.or_
51
+ true
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,26 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::IdentifierExpressionNode
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::IdentifierExpressionNode
9
+ def term
10
+ end
11
+
12
+ def term=(str_)
13
+ end
14
+
15
+ def and_
16
+ end
17
+
18
+ def and_=(str_)
19
+ end
20
+
21
+ def or_
22
+ end
23
+
24
+ def or_=(str_)
25
+ end
26
+ end
@@ -0,0 +1,56 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+
8
+ class IdentifierExpressionNodeLevelOne
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # One customer-submitted identifier. Defaults to exact comparison of the original submitted value. canonical uses the supported identifier normalisation without an ownership claim: email preserves local-part case, NFC-normalises it and lowercases the domain without removing dots or tags; phone uses international E.164 without extensions or an inferred region; username uses NFC and Unicode case folding within the customer namespace. mailbox is email-only and explicitly selects existing list rules: case-insensitive, remove +tag, and ignore local-part dots at gmail.com and googlemail.com; googlemail.com maps to gmail.com. Username requires namespace customer. Email and phone forbid namespace. Source-discovered identifiers and platform handles are not searched. Unsupported kinds, namespaces, modes and invalid values return 400. Search equality does not establish verified ownership or merge accounts.
13
+ field(
14
+ :term,
15
+ Crystalline::Nilable.new(Models::Shared::IdentifierSearch),
16
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("term")}}
17
+ )
18
+
19
+ field(
20
+ :and_,
21
+ Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::IdentifierExpressionLeaf)),
22
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("and")}}
23
+ )
24
+
25
+ field(
26
+ :or_,
27
+ Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::IdentifierExpressionLeaf)),
28
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("or")}}
29
+ )
30
+
31
+ sig {
32
+ params(
33
+ term: T.nilable(Models::Shared::IdentifierSearch),
34
+ and_: T.nilable(T::Array[Models::Shared::IdentifierExpressionLeaf]),
35
+ or_: T.nilable(T::Array[Models::Shared::IdentifierExpressionLeaf])
36
+ )
37
+ .void
38
+ }
39
+ def initialize(term: nil, and_: nil, or_: nil)
40
+ @term = term
41
+ @and_ = and_
42
+ @or_ = or_
43
+ end
44
+
45
+ sig { params(other: T.untyped).returns(T::Boolean) }
46
+ def ==(other)
47
+ return false unless other.is_a?(self.class)
48
+ return false unless @term == other.term
49
+ return false unless @and_ == other.and_
50
+ return false unless @or_ == other.or_
51
+ true
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,26 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::IdentifierExpressionNodeLevelOne
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::IdentifierExpressionNodeLevelOne
9
+ def term
10
+ end
11
+
12
+ def term=(str_)
13
+ end
14
+
15
+ def and_
16
+ end
17
+
18
+ def and_=(str_)
19
+ end
20
+
21
+ def or_
22
+ end
23
+
24
+ def or_=(str_)
25
+ end
26
+ end
@@ -0,0 +1,56 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+
8
+ class IdentifierExpressionNodeLevelTwo
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # One customer-submitted identifier. Defaults to exact comparison of the original submitted value. canonical uses the supported identifier normalisation without an ownership claim: email preserves local-part case, NFC-normalises it and lowercases the domain without removing dots or tags; phone uses international E.164 without extensions or an inferred region; username uses NFC and Unicode case folding within the customer namespace. mailbox is email-only and explicitly selects existing list rules: case-insensitive, remove +tag, and ignore local-part dots at gmail.com and googlemail.com; googlemail.com maps to gmail.com. Username requires namespace customer. Email and phone forbid namespace. Source-discovered identifiers and platform handles are not searched. Unsupported kinds, namespaces, modes and invalid values return 400. Search equality does not establish verified ownership or merge accounts.
13
+ field(
14
+ :term,
15
+ Crystalline::Nilable.new(Models::Shared::IdentifierSearch),
16
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("term")}}
17
+ )
18
+
19
+ field(
20
+ :and_,
21
+ Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::IdentifierExpressionNodeLevelOne)),
22
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("and")}}
23
+ )
24
+
25
+ field(
26
+ :or_,
27
+ Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::IdentifierExpressionNodeLevelOne)),
28
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("or")}}
29
+ )
30
+
31
+ sig {
32
+ params(
33
+ term: T.nilable(Models::Shared::IdentifierSearch),
34
+ and_: T.nilable(T::Array[Models::Shared::IdentifierExpressionNodeLevelOne]),
35
+ or_: T.nilable(T::Array[Models::Shared::IdentifierExpressionNodeLevelOne])
36
+ )
37
+ .void
38
+ }
39
+ def initialize(term: nil, and_: nil, or_: nil)
40
+ @term = term
41
+ @and_ = and_
42
+ @or_ = or_
43
+ end
44
+
45
+ sig { params(other: T.untyped).returns(T::Boolean) }
46
+ def ==(other)
47
+ return false unless other.is_a?(self.class)
48
+ return false unless @term == other.term
49
+ return false unless @and_ == other.and_
50
+ return false unless @or_ == other.or_
51
+ true
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,26 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::IdentifierExpressionNodeLevelTwo
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::IdentifierExpressionNodeLevelTwo
9
+ def term
10
+ end
11
+
12
+ def term=(str_)
13
+ end
14
+
15
+ def and_
16
+ end
17
+
18
+ def and_=(str_)
19
+ end
20
+
21
+ def or_
22
+ end
23
+
24
+ def or_=(str_)
25
+ end
26
+ end
@@ -0,0 +1,114 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # One satisfied unique term in an identifier expression. term_index is the zero-based depth-first raw leaf position of its first occurrence. Duplicate normalized terms produce one witness. All satisfied unique terms are returned, ordered by term_index, including satisfied terms in an OR branch that was not needed. value preserves the original submitted value in assessment_id. In assessment scope all witnesses belong to the same matching assessment; account search chooses the newest such assessment. In account scope each term uses its newest retained matching assessment, so witnesses may have different assessment IDs. This evidence does not assert ownership or equality between accounts.
8
+ class IdentifierTermMatch
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ field(
13
+ :kind,
14
+ Models::Shared::IdentifierSearchKind,
15
+ {
16
+ 'format_json': {
17
+ 'letter_case': ::NoResponse::Utils.field_name("kind"),
18
+ required: true,
19
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::IdentifierSearchKind, false)
20
+ }
21
+ }
22
+ )
23
+
24
+ field(
25
+ :value,
26
+ ::String,
27
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("value"), required: true}}
28
+ )
29
+ # exact compares the original submitted value; canonical uses identifier-specific normalisation; mailbox explicitly selects the email alias rules used by lists.
30
+ field(
31
+ :match_basis,
32
+ Models::Shared::Match,
33
+ {
34
+ 'format_json': {
35
+ 'letter_case': ::NoResponse::Utils.field_name("match_basis"),
36
+ required: true,
37
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::Match, false)
38
+ }
39
+ }
40
+ )
41
+ # Customer-submitted input. It does not mean the customer or NoResponse verified ownership.
42
+ field(
43
+ :provenance,
44
+ Models::Shared::Provenance,
45
+ {
46
+ 'format_json': {
47
+ 'letter_case': ::NoResponse::Utils.field_name("provenance"),
48
+ required: true,
49
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::Provenance, false)
50
+ }
51
+ }
52
+ )
53
+ # Opaque, server-assigned assessment id: 'asm_' and a 26-character Crockford base32 ULID. Unique within the workspace; another workspace's assessment id answers 404.
54
+ field(
55
+ :assessment_id,
56
+ ::String,
57
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("assessment_id"), required: true}}
58
+ )
59
+ # Zero-based depth-first position of the first occurrence of this normalized term in the submitted expression.
60
+ field(
61
+ :term_index,
62
+ ::Integer,
63
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("term_index"), required: true}}
64
+ )
65
+ # Required for username: the username submitted by this customer in this workspace/environment. It does not name or join a source platform. Omit for email and phone.
66
+ field(
67
+ :namespace,
68
+ Crystalline::Nilable.new(Models::Shared::Namespace),
69
+ {
70
+ 'format_json': {
71
+ 'letter_case': ::NoResponse::Utils.field_name("namespace"),
72
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::Namespace, true)
73
+ }
74
+ }
75
+ )
76
+
77
+ sig {
78
+ params(
79
+ kind: Models::Shared::IdentifierSearchKind,
80
+ value: ::String,
81
+ match_basis: Models::Shared::Match,
82
+ provenance: Models::Shared::Provenance,
83
+ assessment_id: ::String,
84
+ term_index: ::Integer,
85
+ namespace: T.nilable(Models::Shared::Namespace)
86
+ )
87
+ .void
88
+ }
89
+ def initialize(kind:, value:, match_basis:, provenance:, assessment_id:, term_index:, namespace: nil)
90
+ @kind = kind
91
+ @value = value
92
+ @match_basis = match_basis
93
+ @provenance = provenance
94
+ @assessment_id = assessment_id
95
+ @term_index = term_index
96
+ @namespace = namespace
97
+ end
98
+
99
+ sig { params(other: T.untyped).returns(T::Boolean) }
100
+ def ==(other)
101
+ return false unless other.is_a?(self.class)
102
+ return false unless @kind == other.kind
103
+ return false unless @value == other.value
104
+ return false unless @match_basis == other.match_basis
105
+ return false unless @provenance == other.provenance
106
+ return false unless @assessment_id == other.assessment_id
107
+ return false unless @term_index == other.term_index
108
+ return false unless @namespace == other.namespace
109
+ true
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,50 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::IdentifierTermMatch
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::IdentifierTermMatch
9
+ def kind
10
+ end
11
+
12
+ def kind=(str_)
13
+ end
14
+
15
+ def value
16
+ end
17
+
18
+ def value=(str_)
19
+ end
20
+
21
+ def match_basis
22
+ end
23
+
24
+ def match_basis=(str_)
25
+ end
26
+
27
+ def provenance
28
+ end
29
+
30
+ def provenance=(str_)
31
+ end
32
+
33
+ def assessment_id
34
+ end
35
+
36
+ def assessment_id=(str_)
37
+ end
38
+
39
+ def term_index
40
+ end
41
+
42
+ def term_index=(str_)
43
+ end
44
+
45
+ def namespace
46
+ end
47
+
48
+ def namespace=(str_)
49
+ end
50
+ end
@@ -10,6 +10,9 @@ module NoResponse
10
10
  enums do
11
11
  WORKSPACE_FORBIDDEN = new("workspace_forbidden")
12
12
  ROLE_FORBIDDEN = new("role_forbidden")
13
+ EMAIL_UNVERIFIED = new("email_unverified")
14
+ ONBOARDING_IN_REVIEW = new("onboarding_in_review")
15
+ ONBOARDING_REFUSED = new("onboarding_refused")
13
16
  end
14
17
 
15
18
  open!
@@ -0,0 +1,16 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # ScopeEnum - assessment requires one submission to satisfy the complete expression. account permits witnesses across retained submissions of one account and is supported only by POST /v1/accounts/search. No default: select scope explicitly.
8
+ class ScopeEnum < T::Enum
9
+ enums do
10
+ ASSESSMENT = new("assessment")
11
+ ACCOUNT = new("account")
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::ScopeEnum
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::ScopeEnum
9
+ end
@@ -152,10 +152,16 @@ module NoResponse
152
152
  autoload :From, "no_response/models/shared/from.rb"
153
153
  autoload :HookPoint, "no_response/models/shared/hookpoint.rb"
154
154
  autoload :Identifier, "no_response/models/shared/identifier.rb"
155
+ autoload :IdentifierExpression, "no_response/models/shared/identifierexpression.rb"
156
+ autoload :IdentifierExpressionLeaf, "no_response/models/shared/identifierexpressionleaf.rb"
157
+ autoload :IdentifierExpressionNode, "no_response/models/shared/identifierexpressionnode.rb"
158
+ autoload :IdentifierExpressionNodeLevelOne, "no_response/models/shared/identifierexpressionnodelevelone.rb"
159
+ autoload :IdentifierExpressionNodeLevelTwo, "no_response/models/shared/identifierexpressionnodeleveltwo.rb"
155
160
  autoload :IdentifierKind, "no_response/models/shared/identifierkind.rb"
156
161
  autoload :IdentifierMatch, "no_response/models/shared/identifiermatch.rb"
157
162
  autoload :IdentifierSearch, "no_response/models/shared/identifiersearch.rb"
158
163
  autoload :IdentifierSearchKind, "no_response/models/shared/identifiersearchkind.rb"
164
+ autoload :IdentifierTermMatch, "no_response/models/shared/identifiertermmatch.rb"
159
165
  autoload :Impact, "no_response/models/shared/impact.rb"
160
166
  autoload :IncompleteReason, "no_response/models/shared/incompletereason.rb"
161
167
  autoload :IncompleteSource, "no_response/models/shared/incompletesource.rb"
@@ -308,6 +314,7 @@ module NoResponse
308
314
  autoload :RiskSummaryPhone, "no_response/models/shared/risksummaryphone.rb"
309
315
  autoload :RiskSummaryUsername, "no_response/models/shared/risksummaryusername.rb"
310
316
  autoload :Role, "no_response/models/shared/role.rb"
317
+ autoload :ScopeEnum, "no_response/models/shared/scope_enum.rb"
311
318
  autoload :Security, "no_response/models/shared/security.rb"
312
319
  autoload :SentIdentifiers, "no_response/models/shared/sentidentifiers.rb"
313
320
  autoload :Settings, "no_response/models/shared/settings.rb"
@@ -95,9 +95,9 @@ module NoResponse
95
95
 
96
96
  @language = "ruby"
97
97
  @openapi_doc_version = "1"
98
- @sdk_version = "9.4.4"
98
+ @sdk_version = "9.5.1"
99
99
  @gen_version = "internal"
100
- @user_agent = "noresponse-sdk/ruby 9.4.4 internal 1 noresponse"
100
+ @user_agent = "noresponse-sdk/ruby 9.5.1 internal 1 noresponse"
101
101
  end
102
102
 
103
103
  sig { returns([String, T::Hash[Symbol, String]]) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: noresponse
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.4.4
4
+ version: 9.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - NoResponse
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-10-29 00:00:00.000000000 Z
11
+ date: 2026-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -969,6 +969,16 @@ files:
969
969
  - lib/no_response/models/shared/hookpoint.rbi
970
970
  - lib/no_response/models/shared/identifier.rb
971
971
  - lib/no_response/models/shared/identifier.rbi
972
+ - lib/no_response/models/shared/identifierexpression.rb
973
+ - lib/no_response/models/shared/identifierexpression.rbi
974
+ - lib/no_response/models/shared/identifierexpressionleaf.rb
975
+ - lib/no_response/models/shared/identifierexpressionleaf.rbi
976
+ - lib/no_response/models/shared/identifierexpressionnode.rb
977
+ - lib/no_response/models/shared/identifierexpressionnode.rbi
978
+ - lib/no_response/models/shared/identifierexpressionnodelevelone.rb
979
+ - lib/no_response/models/shared/identifierexpressionnodelevelone.rbi
980
+ - lib/no_response/models/shared/identifierexpressionnodeleveltwo.rb
981
+ - lib/no_response/models/shared/identifierexpressionnodeleveltwo.rbi
972
982
  - lib/no_response/models/shared/identifierkind.rb
973
983
  - lib/no_response/models/shared/identifierkind.rbi
974
984
  - lib/no_response/models/shared/identifiermatch.rb
@@ -977,6 +987,8 @@ files:
977
987
  - lib/no_response/models/shared/identifiersearch.rbi
978
988
  - lib/no_response/models/shared/identifiersearchkind.rb
979
989
  - lib/no_response/models/shared/identifiersearchkind.rbi
990
+ - lib/no_response/models/shared/identifiertermmatch.rb
991
+ - lib/no_response/models/shared/identifiertermmatch.rbi
980
992
  - lib/no_response/models/shared/impact.rb
981
993
  - lib/no_response/models/shared/impact.rbi
982
994
  - lib/no_response/models/shared/incompletereason.rb
@@ -1283,6 +1295,8 @@ files:
1283
1295
  - lib/no_response/models/shared/risksummaryusername.rbi
1284
1296
  - lib/no_response/models/shared/role.rb
1285
1297
  - lib/no_response/models/shared/role.rbi
1298
+ - lib/no_response/models/shared/scope_enum.rb
1299
+ - lib/no_response/models/shared/scope_enum.rbi
1286
1300
  - lib/no_response/models/shared/security.rb
1287
1301
  - lib/no_response/models/shared/security.rbi
1288
1302
  - lib/no_response/models/shared/sentidentifiers.rb