noresponse 8.2.1 → 8.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 +293 -0
- data/lib/no_response/models/operations/aggregateassessments_response.rb +32 -0
- data/lib/no_response/models/operations/aggregateassessments_response.rbi +20 -0
- data/lib/no_response/models/operations.rb +1 -0
- data/lib/no_response/models/shared/aggregatebucket.rb +82 -0
- data/lib/no_response/models/shared/aggregatebucket.rbi +44 -0
- data/lib/no_response/models/shared/aggregatedimension.rb +26 -0
- data/lib/no_response/models/shared/aggregatedimension.rbi +9 -0
- data/lib/no_response/models/shared/aggregategroup.rb +179 -0
- data/lib/no_response/models/shared/aggregategroup.rbi +74 -0
- data/lib/no_response/models/shared/aggregatelateflip.rb +83 -0
- data/lib/no_response/models/shared/aggregatelateflip.rbi +32 -0
- data/lib/no_response/models/shared/aggregatescorecount.rb +63 -0
- data/lib/no_response/models/shared/aggregatescorecount.rbi +32 -0
- data/lib/no_response/models/shared/aggregatescoreoutcome.rb +86 -0
- data/lib/no_response/models/shared/aggregatescoreoutcome.rbi +38 -0
- data/lib/no_response/models/shared/answerrevision.rb +16 -0
- data/lib/no_response/models/shared/answerrevision.rbi +9 -0
- data/lib/no_response/models/shared/assessmentaggregate.rb +121 -0
- data/lib/no_response/models/shared/assessmentaggregate.rbi +62 -0
- data/lib/no_response/models/shared/assessmentaggregate_metric.rb +21 -0
- data/lib/no_response/models/shared/assessmentaggregate_metric.rbi +9 -0
- data/lib/no_response/models/shared/assessmentaggregaterequest.rb +163 -0
- data/lib/no_response/models/shared/assessmentaggregaterequest.rbi +74 -0
- data/lib/no_response/models/shared/assessmentaggregaterequest_metric.rb +18 -0
- data/lib/no_response/models/shared/assessmentaggregaterequest_metric.rbi +9 -0
- data/lib/no_response/models/shared/assessmentsearchrequest.rb +17 -2
- data/lib/no_response/models/shared/assessmentsearchrequest.rbi +6 -0
- data/lib/no_response/models/shared/bucket.rb +20 -0
- data/lib/no_response/models/shared/bucket.rbi +9 -0
- data/lib/no_response/models/shared/decision.rb +5 -2
- data/lib/no_response/models/shared/delay.rb +23 -0
- data/lib/no_response/models/shared/delay.rbi +9 -0
- data/lib/no_response/models/shared/listmatch.rb +19 -0
- data/lib/no_response/models/shared/listmatch.rbi +9 -0
- data/lib/no_response/models/shared.rb +14 -0
- data/lib/no_response/sdkconfiguration.rb +2 -2
- metadata +31 -1
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
# Body of the 200 answer to POST /v1/assessments/aggregate: one entry per bucket of [from,to), empty buckets included. Counts are of first answers and stay when an assessment or account is deleted or erased; search returns only assessments still retained.
|
|
8
|
+
class AssessmentAggregate
|
|
9
|
+
extend T::Sig
|
|
10
|
+
include Crystalline::MetadataFields
|
|
11
|
+
|
|
12
|
+
field :from, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("from"), required: true}}
|
|
13
|
+
|
|
14
|
+
field :to, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("to"), required: true}}
|
|
15
|
+
# The period each count covers, in UTC; a week starts on Monday.
|
|
16
|
+
field(
|
|
17
|
+
:bucket,
|
|
18
|
+
Models::Shared::Bucket,
|
|
19
|
+
{
|
|
20
|
+
'format_json': {
|
|
21
|
+
'letter_case': ::NoResponse::Utils.field_name("bucket"),
|
|
22
|
+
required: true,
|
|
23
|
+
'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::Bucket, false)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
field(
|
|
29
|
+
:group_by,
|
|
30
|
+
Crystalline::Array.new(Models::Shared::AggregateDimension),
|
|
31
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("group_by"), required: true}}
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
field(
|
|
35
|
+
:metrics,
|
|
36
|
+
Crystalline::Array.new(Models::Shared::AssessmentAggregateMetric),
|
|
37
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("metrics"), required: true}}
|
|
38
|
+
)
|
|
39
|
+
# true when more groups had counts than limit allowed.
|
|
40
|
+
field(
|
|
41
|
+
:groups_truncated,
|
|
42
|
+
Crystalline::Boolean.new,
|
|
43
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("groups_truncated"), required: true}}
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
field(
|
|
47
|
+
:buckets,
|
|
48
|
+
Crystalline::Array.new(Models::Shared::AggregateBucket),
|
|
49
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("buckets"), required: true}}
|
|
50
|
+
)
|
|
51
|
+
# Version of the body shape.
|
|
52
|
+
field(
|
|
53
|
+
:schema_version,
|
|
54
|
+
::String,
|
|
55
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("schema_version"), required: true}}
|
|
56
|
+
)
|
|
57
|
+
# The calling workspace's configured retention period in days. Default 365 (12 months), which is also the maximum: a workspace may only shorten it, to at least 1 day. Each record expires from its own created_at; see assessment expires_at.
|
|
58
|
+
field(
|
|
59
|
+
:retention_days,
|
|
60
|
+
Crystalline::Nilable.new(::Integer),
|
|
61
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("retention_days")}}
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
sig {
|
|
65
|
+
params(
|
|
66
|
+
from: ::String,
|
|
67
|
+
to: ::String,
|
|
68
|
+
bucket: Models::Shared::Bucket,
|
|
69
|
+
group_by: T::Array[Models::Shared::AggregateDimension],
|
|
70
|
+
metrics: T::Array[Models::Shared::AssessmentAggregateMetric],
|
|
71
|
+
groups_truncated: T::Boolean,
|
|
72
|
+
buckets: T::Array[Models::Shared::AggregateBucket],
|
|
73
|
+
schema_version: ::String,
|
|
74
|
+
retention_days: T.nilable(::Integer)
|
|
75
|
+
)
|
|
76
|
+
.void
|
|
77
|
+
}
|
|
78
|
+
def initialize(
|
|
79
|
+
from:,
|
|
80
|
+
to:,
|
|
81
|
+
bucket:,
|
|
82
|
+
group_by:,
|
|
83
|
+
metrics:,
|
|
84
|
+
groups_truncated:,
|
|
85
|
+
buckets:,
|
|
86
|
+
schema_version: "1",
|
|
87
|
+
retention_days: 365
|
|
88
|
+
)
|
|
89
|
+
@from = from
|
|
90
|
+
@to = to
|
|
91
|
+
@bucket = bucket
|
|
92
|
+
@group_by = group_by
|
|
93
|
+
@metrics = metrics
|
|
94
|
+
@groups_truncated = groups_truncated
|
|
95
|
+
@buckets = buckets
|
|
96
|
+
unless schema_version == "1"
|
|
97
|
+
raise ArgumentError, "Invalid value for schema_version"
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
@schema_version = "1"
|
|
101
|
+
@retention_days = retention_days
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
105
|
+
def ==(other)
|
|
106
|
+
return false unless other.is_a?(self.class)
|
|
107
|
+
return false unless @from == other.from
|
|
108
|
+
return false unless @to == other.to
|
|
109
|
+
return false unless @bucket == other.bucket
|
|
110
|
+
return false unless @group_by == other.group_by
|
|
111
|
+
return false unless @metrics == other.metrics
|
|
112
|
+
return false unless @groups_truncated == other.groups_truncated
|
|
113
|
+
return false unless @buckets == other.buckets
|
|
114
|
+
return false unless @schema_version == other.schema_version
|
|
115
|
+
return false unless @retention_days == other.retention_days
|
|
116
|
+
true
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
class NoResponse::Models::Shared::AssessmentAggregate
|
|
5
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class NoResponse::Models::Shared::AssessmentAggregate
|
|
9
|
+
def from
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def from=(str_)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def to
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def to=(str_)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def bucket
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def bucket=(str_)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def group_by
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def group_by=(str_)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def metrics
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def metrics=(str_)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def groups_truncated
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def groups_truncated=(str_)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def buckets
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def buckets=(str_)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def schema_version
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def schema_version=(str_)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def retention_days
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def retention_days=(str_)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
|
|
8
|
+
class AssessmentAggregateMetric
|
|
9
|
+
include ::Crystalline::Enum
|
|
10
|
+
enums do
|
|
11
|
+
COUNT = new("count")
|
|
12
|
+
SCORE_HISTOGRAM = new("score_histogram")
|
|
13
|
+
SCORE_OUTCOMES = new("score_outcomes")
|
|
14
|
+
LATE_FLIPS = new("late_flips")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
open!
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
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 UTC day, or a week from Monday 00:00 UTC), cover at most 366 days (31 for hour buckets) 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.
|
|
8
|
+
class AssessmentAggregateRequest
|
|
9
|
+
extend T::Sig
|
|
10
|
+
include Crystalline::MetadataFields
|
|
11
|
+
|
|
12
|
+
# The first bucket's start.
|
|
13
|
+
field :from, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("from"), required: true}}
|
|
14
|
+
# The end, excluded: the start of the bucket after the last.
|
|
15
|
+
field :to, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("to"), required: true}}
|
|
16
|
+
# The period each count covers, in UTC; a week starts on Monday.
|
|
17
|
+
field(
|
|
18
|
+
:bucket,
|
|
19
|
+
Models::Shared::Bucket,
|
|
20
|
+
{
|
|
21
|
+
'format_json': {
|
|
22
|
+
'letter_case': ::NoResponse::Utils.field_name("bucket"),
|
|
23
|
+
required: true,
|
|
24
|
+
'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::Bucket, false)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
)
|
|
28
|
+
# At most two dimensions to count by, of which at most one is reason, lane, country or asn. An assessment counts once in each of its reasons and incomplete lanes, so those groups can add up to more than the bucket's count.
|
|
29
|
+
field(
|
|
30
|
+
:group_by,
|
|
31
|
+
Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::AggregateDimension)),
|
|
32
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("group_by")}}
|
|
33
|
+
)
|
|
34
|
+
# count: each bucket's count and groups. score_histogram: first answers by flow and 5-point score bucket. score_outcomes: the histogram's first answers that have a reported outcome, by flow, 5-point score bucket and the latest outcome reported for the assessment (POST /v1/assessments/{assessment_id}/outcomes); the rest of a bin has none reported. late_flips: changes of an assessment's account decision for its flow after its first answer, by from, to and delay.
|
|
35
|
+
field(
|
|
36
|
+
:metrics,
|
|
37
|
+
Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::AssessmentAggregateRequestMetric)),
|
|
38
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("metrics")}}
|
|
39
|
+
)
|
|
40
|
+
# The event an assessment is made for: account_creation (a user creates an account), login (a user returns to an existing account) or purchase (a payment or a credit grant). The account's risk is reported with the decision for this flow.
|
|
41
|
+
field(
|
|
42
|
+
:flow,
|
|
43
|
+
Crystalline::Nilable.new(Models::Shared::Flow),
|
|
44
|
+
{
|
|
45
|
+
'format_json': {
|
|
46
|
+
'letter_case': ::NoResponse::Utils.field_name("flow"),
|
|
47
|
+
'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::Flow, true)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
)
|
|
51
|
+
# complete: final; nothing is still running. A lane that failed or missed its 10 s deadline stays listed in incomplete_sources, and confidence is lower. partial: a recommendation exists and at least one lane is still running or did not settle (see incomplete_sources). pending: nothing usable before the deadline; no recommendation yet, poll or wait for the webhook.
|
|
52
|
+
field(
|
|
53
|
+
:status,
|
|
54
|
+
Crystalline::Nilable.new(Models::Shared::Status),
|
|
55
|
+
{
|
|
56
|
+
'format_json': {
|
|
57
|
+
'letter_case': ::NoResponse::Utils.field_name("status"),
|
|
58
|
+
'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::Status, true)
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
)
|
|
62
|
+
# The recommended action: allow, step_up or review. Your application applies it.
|
|
63
|
+
field(
|
|
64
|
+
:recommendation,
|
|
65
|
+
Crystalline::Nilable.new(Models::Shared::Recommendation),
|
|
66
|
+
{
|
|
67
|
+
'format_json': {
|
|
68
|
+
'letter_case': ::NoResponse::Utils.field_name("recommendation"),
|
|
69
|
+
'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::Recommendation, true)
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
)
|
|
73
|
+
# An assessment's own decision: block when its stored risk.block is true, otherwise its recommendation. It is not the account's decision or held-admission state.
|
|
74
|
+
field(
|
|
75
|
+
:decision,
|
|
76
|
+
Crystalline::Nilable.new(Models::Shared::Decision),
|
|
77
|
+
{
|
|
78
|
+
'format_json': {
|
|
79
|
+
'letter_case': ::NoResponse::Utils.field_name("decision"),
|
|
80
|
+
'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::Decision, true)
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
)
|
|
84
|
+
# Which answer of each assessment the filters describe: latest, the latest stored revision, or first, the first answer, as served when the assessment was first answered (POST /v1/assessments/aggregate counts first answers). A cell of an aggregate drills down to POST /v1/assessments/search with the same filters, revision first and the cell's bucket as from and to.
|
|
85
|
+
field(
|
|
86
|
+
:revision,
|
|
87
|
+
Crystalline::Nilable.new(Models::Shared::AnswerRevision),
|
|
88
|
+
{
|
|
89
|
+
'format_json': {
|
|
90
|
+
'letter_case': ::NoResponse::Utils.field_name("revision"),
|
|
91
|
+
'decoder': ::NoResponse::Utils.enum_from_string(Models::Shared::AnswerRevision, true)
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
)
|
|
95
|
+
# The most groups answered: the largest over the whole range, then by value. groups_truncated says when there were more.
|
|
96
|
+
field(
|
|
97
|
+
:limit,
|
|
98
|
+
Crystalline::Nilable.new(::Integer),
|
|
99
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("limit")}}
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
sig {
|
|
103
|
+
params(
|
|
104
|
+
from: ::String,
|
|
105
|
+
to: ::String,
|
|
106
|
+
bucket: Models::Shared::Bucket,
|
|
107
|
+
group_by: T.nilable(T::Array[Models::Shared::AggregateDimension]),
|
|
108
|
+
metrics: T.nilable(T::Array[Models::Shared::AssessmentAggregateRequestMetric]),
|
|
109
|
+
flow: T.nilable(Models::Shared::Flow),
|
|
110
|
+
status: T.nilable(Models::Shared::Status),
|
|
111
|
+
recommendation: T.nilable(Models::Shared::Recommendation),
|
|
112
|
+
decision: T.nilable(Models::Shared::Decision),
|
|
113
|
+
revision: T.nilable(Models::Shared::AnswerRevision),
|
|
114
|
+
limit: T.nilable(::Integer)
|
|
115
|
+
)
|
|
116
|
+
.void
|
|
117
|
+
}
|
|
118
|
+
def initialize(
|
|
119
|
+
from:,
|
|
120
|
+
to:,
|
|
121
|
+
bucket:,
|
|
122
|
+
group_by: nil,
|
|
123
|
+
metrics: nil,
|
|
124
|
+
flow: nil,
|
|
125
|
+
status: nil,
|
|
126
|
+
recommendation: nil,
|
|
127
|
+
decision: nil,
|
|
128
|
+
revision: nil,
|
|
129
|
+
limit: 20
|
|
130
|
+
)
|
|
131
|
+
@from = from
|
|
132
|
+
@to = to
|
|
133
|
+
@bucket = bucket
|
|
134
|
+
@group_by = group_by
|
|
135
|
+
@metrics = metrics
|
|
136
|
+
@flow = flow
|
|
137
|
+
@status = status
|
|
138
|
+
@recommendation = recommendation
|
|
139
|
+
@decision = decision
|
|
140
|
+
@revision = revision
|
|
141
|
+
@limit = limit
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
145
|
+
def ==(other)
|
|
146
|
+
return false unless other.is_a?(self.class)
|
|
147
|
+
return false unless @from == other.from
|
|
148
|
+
return false unless @to == other.to
|
|
149
|
+
return false unless @bucket == other.bucket
|
|
150
|
+
return false unless @group_by == other.group_by
|
|
151
|
+
return false unless @metrics == other.metrics
|
|
152
|
+
return false unless @flow == other.flow
|
|
153
|
+
return false unless @status == other.status
|
|
154
|
+
return false unless @recommendation == other.recommendation
|
|
155
|
+
return false unless @decision == other.decision
|
|
156
|
+
return false unless @revision == other.revision
|
|
157
|
+
return false unless @limit == other.limit
|
|
158
|
+
true
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
class NoResponse::Models::Shared::AssessmentAggregateRequest
|
|
5
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class NoResponse::Models::Shared::AssessmentAggregateRequest
|
|
9
|
+
def from
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def from=(str_)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def to
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def to=(str_)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def bucket
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def bucket=(str_)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def group_by
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def group_by=(str_)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def metrics
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def metrics=(str_)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def flow
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def flow=(str_)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def status
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def status=(str_)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def recommendation
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def recommendation=(str_)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def decision
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def decision=(str_)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def revision
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def revision=(str_)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def limit
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def limit=(str_)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
|
|
8
|
+
class AssessmentAggregateRequestMetric < T::Enum
|
|
9
|
+
enums do
|
|
10
|
+
COUNT = new("count")
|
|
11
|
+
SCORE_HISTOGRAM = new("score_histogram")
|
|
12
|
+
SCORE_OUTCOMES = new("score_outcomes")
|
|
13
|
+
LATE_FLIPS = new("late_flips")
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -68,14 +68,25 @@ module NoResponse
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
)
|
|
71
|
-
#
|
|
71
|
+
# An assessment's own decision: block when its stored risk.block is true, otherwise its recommendation. It is not the account's decision or held-admission state.
|
|
72
72
|
field(
|
|
73
73
|
:decision,
|
|
74
74
|
Crystalline::Nilable.new(Models::Shared::Decision),
|
|
75
75
|
{
|
|
76
76
|
'format_json': {
|
|
77
77
|
'letter_case': ::NoResponse::Utils.field_name("decision"),
|
|
78
|
-
'decoder': ::NoResponse::Utils.
|
|
78
|
+
'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::Decision, true)
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
)
|
|
82
|
+
# Which answer of each assessment the filters describe: latest, the latest stored revision, or first, the first answer, as served when the assessment was first answered (POST /v1/assessments/aggregate counts first answers). A cell of an aggregate drills down to POST /v1/assessments/search with the same filters, revision first and the cell's bucket as from and to.
|
|
83
|
+
field(
|
|
84
|
+
:revision,
|
|
85
|
+
Crystalline::Nilable.new(Models::Shared::AnswerRevision),
|
|
86
|
+
{
|
|
87
|
+
'format_json': {
|
|
88
|
+
'letter_case': ::NoResponse::Utils.field_name("revision"),
|
|
89
|
+
'decoder': ::NoResponse::Utils.enum_from_string(Models::Shared::AnswerRevision, true)
|
|
79
90
|
}
|
|
80
91
|
}
|
|
81
92
|
)
|
|
@@ -97,6 +108,7 @@ module NoResponse
|
|
|
97
108
|
cursor: T.nilable(::String),
|
|
98
109
|
response_mode: T.nilable(Models::Shared::ResponseMode),
|
|
99
110
|
decision: T.nilable(Models::Shared::Decision),
|
|
111
|
+
revision: T.nilable(Models::Shared::AnswerRevision),
|
|
100
112
|
limit: T.nilable(::Integer)
|
|
101
113
|
)
|
|
102
114
|
.void
|
|
@@ -111,6 +123,7 @@ module NoResponse
|
|
|
111
123
|
cursor: nil,
|
|
112
124
|
response_mode: nil,
|
|
113
125
|
decision: nil,
|
|
126
|
+
revision: nil,
|
|
114
127
|
limit: 20
|
|
115
128
|
)
|
|
116
129
|
@from = from
|
|
@@ -122,6 +135,7 @@ module NoResponse
|
|
|
122
135
|
@cursor = cursor
|
|
123
136
|
@response_mode = response_mode
|
|
124
137
|
@decision = decision
|
|
138
|
+
@revision = revision
|
|
125
139
|
@limit = limit
|
|
126
140
|
end
|
|
127
141
|
|
|
@@ -137,6 +151,7 @@ module NoResponse
|
|
|
137
151
|
return false unless @cursor == other.cursor
|
|
138
152
|
return false unless @response_mode == other.response_mode
|
|
139
153
|
return false unless @decision == other.decision
|
|
154
|
+
return false unless @revision == other.revision
|
|
140
155
|
return false unless @limit == other.limit
|
|
141
156
|
true
|
|
142
157
|
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
# Bucket - The period each count covers, in UTC; a week starts on Monday.
|
|
8
|
+
class Bucket
|
|
9
|
+
include ::Crystalline::Enum
|
|
10
|
+
enums do
|
|
11
|
+
HOUR = new("hour")
|
|
12
|
+
DAY = new("day")
|
|
13
|
+
WEEK = new("week")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
open!
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -4,14 +4,17 @@
|
|
|
4
4
|
module NoResponse
|
|
5
5
|
module Models
|
|
6
6
|
module Shared
|
|
7
|
-
# Decision -
|
|
8
|
-
class Decision
|
|
7
|
+
# Decision - An assessment's own decision: block when its stored risk.block is true, otherwise its recommendation. It is not the account's decision or held-admission state.
|
|
8
|
+
class Decision
|
|
9
|
+
include ::Crystalline::Enum
|
|
9
10
|
enums do
|
|
10
11
|
ALLOW = new("allow")
|
|
11
12
|
STEP_UP = new("step_up")
|
|
12
13
|
REVIEW = new("review")
|
|
13
14
|
BLOCK = new("block")
|
|
14
15
|
end
|
|
16
|
+
|
|
17
|
+
open!
|
|
15
18
|
end
|
|
16
19
|
end
|
|
17
20
|
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
# Delay - How long after the assessment's creation the change was made.
|
|
8
|
+
class Delay
|
|
9
|
+
include ::Crystalline::Enum
|
|
10
|
+
enums do
|
|
11
|
+
UNDER_10S = new("under_10s")
|
|
12
|
+
UNDER_1M = new("under_1m")
|
|
13
|
+
UNDER_10M = new("under_10m")
|
|
14
|
+
UNDER_1H = new("under_1h")
|
|
15
|
+
UNDER_1D = new("under_1d")
|
|
16
|
+
OVER_1D = new("over_1d")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
open!
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
# ListMatch - The action of the list entry that decided the account.
|
|
8
|
+
class ListMatch
|
|
9
|
+
include ::Crystalline::Enum
|
|
10
|
+
enums do
|
|
11
|
+
BLOCK = new("block")
|
|
12
|
+
ALLOW = new("allow")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
open!
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|