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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/lib/no_response/assessments.rb +293 -0
  3. data/lib/no_response/models/operations/aggregateassessments_response.rb +32 -0
  4. data/lib/no_response/models/operations/aggregateassessments_response.rbi +20 -0
  5. data/lib/no_response/models/operations.rb +1 -0
  6. data/lib/no_response/models/shared/aggregatebucket.rb +82 -0
  7. data/lib/no_response/models/shared/aggregatebucket.rbi +44 -0
  8. data/lib/no_response/models/shared/aggregatedimension.rb +26 -0
  9. data/lib/no_response/models/shared/aggregatedimension.rbi +9 -0
  10. data/lib/no_response/models/shared/aggregategroup.rb +179 -0
  11. data/lib/no_response/models/shared/aggregategroup.rbi +74 -0
  12. data/lib/no_response/models/shared/aggregatelateflip.rb +83 -0
  13. data/lib/no_response/models/shared/aggregatelateflip.rbi +32 -0
  14. data/lib/no_response/models/shared/aggregatescorecount.rb +63 -0
  15. data/lib/no_response/models/shared/aggregatescorecount.rbi +32 -0
  16. data/lib/no_response/models/shared/aggregatescoreoutcome.rb +86 -0
  17. data/lib/no_response/models/shared/aggregatescoreoutcome.rbi +38 -0
  18. data/lib/no_response/models/shared/answerrevision.rb +16 -0
  19. data/lib/no_response/models/shared/answerrevision.rbi +9 -0
  20. data/lib/no_response/models/shared/assessmentaggregate.rb +121 -0
  21. data/lib/no_response/models/shared/assessmentaggregate.rbi +62 -0
  22. data/lib/no_response/models/shared/assessmentaggregate_metric.rb +21 -0
  23. data/lib/no_response/models/shared/assessmentaggregate_metric.rbi +9 -0
  24. data/lib/no_response/models/shared/assessmentaggregaterequest.rb +163 -0
  25. data/lib/no_response/models/shared/assessmentaggregaterequest.rbi +74 -0
  26. data/lib/no_response/models/shared/assessmentaggregaterequest_metric.rb +18 -0
  27. data/lib/no_response/models/shared/assessmentaggregaterequest_metric.rbi +9 -0
  28. data/lib/no_response/models/shared/assessmentsearchrequest.rb +17 -2
  29. data/lib/no_response/models/shared/assessmentsearchrequest.rbi +6 -0
  30. data/lib/no_response/models/shared/bucket.rb +20 -0
  31. data/lib/no_response/models/shared/bucket.rbi +9 -0
  32. data/lib/no_response/models/shared/decision.rb +5 -2
  33. data/lib/no_response/models/shared/delay.rb +23 -0
  34. data/lib/no_response/models/shared/delay.rbi +9 -0
  35. data/lib/no_response/models/shared/listmatch.rb +19 -0
  36. data/lib/no_response/models/shared/listmatch.rbi +9 -0
  37. data/lib/no_response/models/shared.rb +14 -0
  38. data/lib/no_response/sdkconfiguration.rb +2 -2
  39. 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,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::AssessmentAggregateMetric
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::AssessmentAggregateMetric
9
+ 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
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::AssessmentAggregateRequestMetric
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::AssessmentAggregateRequestMetric
9
+ end
@@ -68,14 +68,25 @@ module NoResponse
68
68
  }
69
69
  }
70
70
  )
71
- # The decision of the assessment's latest stored revision: block when its stored risk.block is true, otherwise its recommendation. This is not the account's current decision or held-admission state. Combined with recommendation using AND.
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.enum_from_string(Models::Shared::Decision, true)
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
@@ -60,6 +60,12 @@ class NoResponse::Models::Shared::AssessmentSearchRequest
60
60
  def decision=(str_)
61
61
  end
62
62
 
63
+ def revision
64
+ end
65
+
66
+ def revision=(str_)
67
+ end
68
+
63
69
  def limit
64
70
  end
65
71
 
@@ -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
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::Bucket
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::Bucket
9
+ end
@@ -4,14 +4,17 @@
4
4
  module NoResponse
5
5
  module Models
6
6
  module Shared
7
- # Decision - The decision of the assessment's latest stored revision: block when its stored risk.block is true, otherwise its recommendation. This is not the account's current decision or held-admission state. Combined with recommendation using AND.
8
- class Decision < T::Enum
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,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::Delay
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::Delay
9
+ 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
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::ListMatch
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::ListMatch
9
+ end