noresponse 9.2.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/lib/no_response/assessments.rb +1 -1
- data/lib/no_response/models/shared/aggregatebucket.rb +1 -0
- data/lib/no_response/models/shared/assessmentaggregate.rb +11 -1
- data/lib/no_response/models/shared/assessmentaggregate.rbi +6 -0
- data/lib/no_response/models/shared/assessmentaggregaterequest.rb +12 -2
- data/lib/no_response/models/shared/assessmentaggregaterequest.rbi +6 -0
- data/lib/no_response/models/shared/bucket.rb +1 -1
- data/lib/no_response/models/shared/riskdetails.rb +1 -1
- data/lib/no_response/models/shared/riskdetailsbreachname.rb +26 -2
- data/lib/no_response/models/shared/riskdetailsbreachname.rbi +12 -0
- data/lib/no_response/sdkconfiguration.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2a7a4007667832081cb401d07ff168481e8b0cdc4d9a04f5f0073e0b90091055
|
|
4
|
+
data.tar.gz: 395f33f137064474997f8ac4e317f8cc28eeb7985ba59cf4f9a131d6f5bb69d2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ff44abdfd0eb5e23ec94da15450a264b51ce6cb11a1bd0be5e66fa295fd43594a1d0e3daf2e270cd2bb55970f90bba44a4996d25acdef6b15fde303327412c90
|
|
7
|
+
data.tar.gz: 450e4088b4029c7f3d33a2be2c3d6e9e184bd540673f4d1d3f740ac59834b0ac77fa4c01a0dbec407b20518456c72bfcc07a1a1da8e3e1dd58c7caee25f00a5f
|
|
@@ -1548,7 +1548,7 @@ module NoResponse
|
|
|
1548
1548
|
}
|
|
1549
1549
|
def aggregate(request:, retries: nil, timeout_ms: nil, http_headers: nil)
|
|
1550
1550
|
# aggregate - Count assessments by time, decision and reason
|
|
1551
|
-
# Count this environment's assessments created in [from,to) by hour, day or week, grouped by up to two of decision, flow, recommendation, band, reason, lane, country, asn and list_match. Each assessment counts once, by its first answer; late results do not count it again and appear in late_flips. Optional metrics add a score histogram per flow, that histogram by the latest reported outcome, and late account decision changes. from and to start a bucket and cover at most 366 days (31 for hour buckets) inside the retention period. The filters are search's and describe the first answer: send them to search with revision first to list a cell's assessments. Counts hold no identifier, stay when an assessment or account is deleted, and report reasons by code and impact band. No Idempotency-Key.
|
|
1551
|
+
# Count this environment's assessments created in [from,to) by UTC hour, or by day or week from local midnight in time_zone (an IANA name, UTC by default; at most 92 days in a zone other than UTC), grouped by up to two of decision, flow, recommendation, band, reason, lane, country, asn and list_match. Each assessment counts once, by its first answer; late results do not count it again and appear in late_flips. Optional metrics add a score histogram per flow, that histogram by the latest reported outcome, and late account decision changes. from and to start a bucket and cover at most 366 days (31 for hour buckets) inside the retention period. The filters are search's and describe the first answer: send them to search with revision first to list a cell's assessments. Counts hold no identifier, stay when an assessment or account is deleted, and report reasons by code and impact band. No 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/aggregate"
|
|
@@ -9,6 +9,7 @@ module NoResponse
|
|
|
9
9
|
extend T::Sig
|
|
10
10
|
include Crystalline::MetadataFields
|
|
11
11
|
|
|
12
|
+
# The bucket's first instant, in UTC. A day or week bucket in a time zone starts at local midnight there, so in Asia/Tokyo a day starts at 15:00Z the day before.
|
|
12
13
|
field(
|
|
13
14
|
:start,
|
|
14
15
|
::String,
|
|
@@ -12,7 +12,7 @@ module NoResponse
|
|
|
12
12
|
field :from, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("from"), required: true}}
|
|
13
13
|
|
|
14
14
|
field :to, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("to"), required: true}}
|
|
15
|
-
# The period each count covers,
|
|
15
|
+
# The period each count covers: an hour, or a day or a week (from Monday) in time_zone. Hour buckets are whole UTC hours in any time zone.
|
|
16
16
|
field(
|
|
17
17
|
:bucket,
|
|
18
18
|
Models::Shared::Bucket,
|
|
@@ -36,6 +36,12 @@ module NoResponse
|
|
|
36
36
|
Crystalline::Array.new(Models::Shared::AssessmentAggregateMetric),
|
|
37
37
|
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("metrics"), required: true}}
|
|
38
38
|
)
|
|
39
|
+
# The time zone whose local midnight started each day and week bucket, as requested; UTC when the request named none.
|
|
40
|
+
field(
|
|
41
|
+
:time_zone,
|
|
42
|
+
::String,
|
|
43
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("time_zone"), required: true}}
|
|
44
|
+
)
|
|
39
45
|
# true when more groups had counts than limit allowed.
|
|
40
46
|
field(
|
|
41
47
|
:groups_truncated,
|
|
@@ -74,6 +80,7 @@ module NoResponse
|
|
|
74
80
|
bucket: Models::Shared::Bucket,
|
|
75
81
|
group_by: T::Array[Models::Shared::AggregateDimension],
|
|
76
82
|
metrics: T::Array[Models::Shared::AssessmentAggregateMetric],
|
|
83
|
+
time_zone: ::String,
|
|
77
84
|
groups_truncated: T::Boolean,
|
|
78
85
|
buckets: T::Array[Models::Shared::AggregateBucket],
|
|
79
86
|
schema_version: ::String,
|
|
@@ -88,6 +95,7 @@ module NoResponse
|
|
|
88
95
|
bucket:,
|
|
89
96
|
group_by:,
|
|
90
97
|
metrics:,
|
|
98
|
+
time_zone:,
|
|
91
99
|
groups_truncated:,
|
|
92
100
|
buckets:,
|
|
93
101
|
schema_version: "1",
|
|
@@ -99,6 +107,7 @@ module NoResponse
|
|
|
99
107
|
@bucket = bucket
|
|
100
108
|
@group_by = group_by
|
|
101
109
|
@metrics = metrics
|
|
110
|
+
@time_zone = time_zone
|
|
102
111
|
@groups_truncated = groups_truncated
|
|
103
112
|
@buckets = buckets
|
|
104
113
|
unless schema_version == "1"
|
|
@@ -118,6 +127,7 @@ module NoResponse
|
|
|
118
127
|
return false unless @bucket == other.bucket
|
|
119
128
|
return false unless @group_by == other.group_by
|
|
120
129
|
return false unless @metrics == other.metrics
|
|
130
|
+
return false unless @time_zone == other.time_zone
|
|
121
131
|
return false unless @groups_truncated == other.groups_truncated
|
|
122
132
|
return false unless @buckets == other.buckets
|
|
123
133
|
return false unless @schema_version == other.schema_version
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
module NoResponse
|
|
5
5
|
module Models
|
|
6
6
|
module Shared
|
|
7
|
-
# Count this environment's assessments created in [from,to) by bucket, from counts kept as each assessment is first answered, not by scanning assessments. Each assessment counts once, by its first answer (the answer served when it was first answered); later revisions and late results do not count it again, and late_flips counts its later account decision changes. from and to start a bucket (an hour, a
|
|
7
|
+
# Count this environment's assessments created in [from,to) by bucket, from counts kept as each assessment is first answered, not by scanning assessments. Each assessment counts once, by its first answer (the answer served when it was first answered); later revisions and late results do not count it again, and late_flips counts its later account decision changes. from and to start a bucket (an hour, or a day or a week from Monday that starts at midnight in time_zone, UTC by default), cover at most 366 days (31 for hour buckets, 92 for day and week buckets in a time_zone other than UTC) and from is inside the retention period. The filters are POST /v1/assessments/search's and describe the first answer, so a cell drills down to search with the same filters, revision first and the cell's bucket as from and to. Counts hold no identifier and stay when an assessment or account is deleted or erased; they expire with retention and go with the workspace. Reasons are counted by code and impact band, not by weight. No Idempotency-Key. Select retained_first_answers for exact facet filters and pairs over retained detail. This mode supports count, score_histogram and score_outcomes, and refuses late_flips. It has a 31-day and 100000-record work budget.
|
|
8
8
|
class AssessmentAggregateRequest
|
|
9
9
|
extend T::Sig
|
|
10
10
|
include Crystalline::MetadataFields
|
|
@@ -13,7 +13,7 @@ module NoResponse
|
|
|
13
13
|
field :from, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("from"), required: true}}
|
|
14
14
|
# The end, excluded: the start of the bucket after the last.
|
|
15
15
|
field :to, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("to"), required: true}}
|
|
16
|
-
# The period each count covers,
|
|
16
|
+
# The period each count covers: an hour, or a day or a week (from Monday) in time_zone. Hour buckets are whole UTC hours in any time zone.
|
|
17
17
|
field(
|
|
18
18
|
:bucket,
|
|
19
19
|
Models::Shared::Bucket,
|
|
@@ -182,6 +182,12 @@ module NoResponse
|
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
)
|
|
185
|
+
# The IANA time zone whose local midnight starts each day and week bucket, such as Europe/London or Asia/Kolkata; daylight saving changes make those days 23 or 25 hours long. A name the zone database does not know is refused (400 invalid_request naming time_zone). Day and week buckets in a zone other than UTC cover at most 92 days (400 invalid_request naming to); a year of them reads too many hourly counts to answer in time. Hour buckets stay whole UTC hours. Bucket starts, from and to stay instants. With the default population, a zone whose local midnight falls inside a UTC hour (a half-hour offset such as Asia/Kolkata) is refused for day and week buckets, as those counts are kept by the hour; retained_first_answers counts it.
|
|
186
|
+
field(
|
|
187
|
+
:time_zone,
|
|
188
|
+
Crystalline::Nilable.new(::String),
|
|
189
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("time_zone")}}
|
|
190
|
+
)
|
|
185
191
|
# The most groups answered: the largest over the whole range, then by value. groups_truncated says when there were more.
|
|
186
192
|
field(
|
|
187
193
|
:limit,
|
|
@@ -211,6 +217,7 @@ module NoResponse
|
|
|
211
217
|
score_min: T.nilable(::Integer),
|
|
212
218
|
score_max: T.nilable(::Integer),
|
|
213
219
|
list_match: T.nilable(Models::Shared::ListMatch),
|
|
220
|
+
time_zone: T.nilable(::String),
|
|
214
221
|
limit: T.nilable(::Integer)
|
|
215
222
|
)
|
|
216
223
|
.void
|
|
@@ -236,6 +243,7 @@ module NoResponse
|
|
|
236
243
|
score_min: nil,
|
|
237
244
|
score_max: nil,
|
|
238
245
|
list_match: nil,
|
|
246
|
+
time_zone: "UTC",
|
|
239
247
|
limit: 20
|
|
240
248
|
)
|
|
241
249
|
@from = from
|
|
@@ -258,6 +266,7 @@ module NoResponse
|
|
|
258
266
|
@score_min = score_min
|
|
259
267
|
@score_max = score_max
|
|
260
268
|
@list_match = list_match
|
|
269
|
+
@time_zone = time_zone
|
|
261
270
|
@limit = limit
|
|
262
271
|
end
|
|
263
272
|
|
|
@@ -284,6 +293,7 @@ module NoResponse
|
|
|
284
293
|
return false unless @score_min == other.score_min
|
|
285
294
|
return false unless @score_max == other.score_max
|
|
286
295
|
return false unless @list_match == other.list_match
|
|
296
|
+
return false unless @time_zone == other.time_zone
|
|
287
297
|
return false unless @limit == other.limit
|
|
288
298
|
true
|
|
289
299
|
end
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
module NoResponse
|
|
5
5
|
module Models
|
|
6
6
|
module Shared
|
|
7
|
-
# Bucket - The period each count covers,
|
|
7
|
+
# Bucket - The period each count covers: an hour, or a day or a week (from Monday) in time_zone. Hour buckets are whole UTC hours in any time zone.
|
|
8
8
|
class Bucket
|
|
9
9
|
include ::Crystalline::Enum
|
|
10
10
|
enums do
|
|
@@ -20,7 +20,7 @@ module NoResponse
|
|
|
20
20
|
Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::Breach)),
|
|
21
21
|
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("breaches")}}
|
|
22
22
|
)
|
|
23
|
-
# Names found next to the identifiers in breach records, merged, with the number of distinct tables each was seen in.
|
|
23
|
+
# Names found next to the identifiers in breach records, merged, with the number of distinct tables each was seen in and the sites of those tables.
|
|
24
24
|
field(
|
|
25
25
|
:breach_names,
|
|
26
26
|
Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::RiskDetailsBreachName)),
|
|
@@ -20,11 +20,33 @@ module NoResponse
|
|
|
20
20
|
::Integer,
|
|
21
21
|
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("seen_in"), required: true}}
|
|
22
22
|
)
|
|
23
|
+
# The domains of the breached sites whose tables hold the name, lower case, each once, newest breach first, at most 32: the domain values of breaches[]. Covers the email's and the username's tables together. Absent when none of the tables has a site.
|
|
24
|
+
field(
|
|
25
|
+
:sites,
|
|
26
|
+
Crystalline::Nilable.new(Crystalline::Array.new(::String)),
|
|
27
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("sites")}}
|
|
28
|
+
)
|
|
29
|
+
# How many of the tables that hold the name have no site, such as a credential list or a stealer log. Absent when none.
|
|
30
|
+
field(
|
|
31
|
+
:unsited,
|
|
32
|
+
Crystalline::Nilable.new(::Integer),
|
|
33
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("unsited")}}
|
|
34
|
+
)
|
|
23
35
|
|
|
24
|
-
sig {
|
|
25
|
-
|
|
36
|
+
sig {
|
|
37
|
+
params(
|
|
38
|
+
value: ::String,
|
|
39
|
+
seen_in: ::Integer,
|
|
40
|
+
sites: T.nilable(T::Array[::String]),
|
|
41
|
+
unsited: T.nilable(::Integer)
|
|
42
|
+
)
|
|
43
|
+
.void
|
|
44
|
+
}
|
|
45
|
+
def initialize(value:, seen_in:, sites: nil, unsited: nil)
|
|
26
46
|
@value = value
|
|
27
47
|
@seen_in = seen_in
|
|
48
|
+
@sites = sites
|
|
49
|
+
@unsited = unsited
|
|
28
50
|
end
|
|
29
51
|
|
|
30
52
|
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
@@ -32,6 +54,8 @@ module NoResponse
|
|
|
32
54
|
return false unless other.is_a?(self.class)
|
|
33
55
|
return false unless @value == other.value
|
|
34
56
|
return false unless @seen_in == other.seen_in
|
|
57
|
+
return false unless @sites == other.sites
|
|
58
|
+
return false unless @unsited == other.unsited
|
|
35
59
|
true
|
|
36
60
|
end
|
|
37
61
|
end
|
|
@@ -95,9 +95,9 @@ module NoResponse
|
|
|
95
95
|
|
|
96
96
|
@language = "ruby"
|
|
97
97
|
@openapi_doc_version = "1"
|
|
98
|
-
@sdk_version = "9.
|
|
98
|
+
@sdk_version = "9.4.0"
|
|
99
99
|
@gen_version = "internal"
|
|
100
|
-
@user_agent = "noresponse-sdk/ruby 9.
|
|
100
|
+
@user_agent = "noresponse-sdk/ruby 9.4.0 internal 1 noresponse"
|
|
101
101
|
end
|
|
102
102
|
|
|
103
103
|
sig { returns([String, T::Hash[Symbol, String]]) }
|