noresponse 10.0.11 → 10.0.13
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/events.rb +1 -1
- data/lib/no_response/models/shared/access.rb +20 -0
- data/lib/no_response/models/shared/{profile.rbi → access.rbi} +2 -2
- data/lib/no_response/models/shared/attendee.rb +13 -3
- data/lib/no_response/models/shared/attendee.rbi +6 -0
- data/lib/no_response/models/shared/attendeedecided.rb +89 -0
- data/lib/no_response/models/shared/attendeedecided.rbi +44 -0
- data/lib/no_response/models/shared/attendeedecidedevent.rb +70 -0
- data/lib/no_response/models/shared/attendeedecidedevent.rbi +38 -0
- data/lib/no_response/models/shared/attendeeflagged.rb +95 -0
- data/lib/no_response/models/shared/attendeeflagged.rbi +44 -0
- data/lib/no_response/models/shared/attendeeflaggedevent.rb +70 -0
- data/lib/no_response/models/shared/attendeeflaggedevent.rbi +38 -0
- data/lib/no_response/models/shared/attendeeflaggedmatchstate.rb +19 -0
- data/lib/no_response/models/shared/attendeeflaggedmatchstate.rbi +9 -0
- data/lib/no_response/models/shared/attendeereport.rb +25 -7
- data/lib/no_response/models/shared/attendeereport.rbi +12 -0
- data/lib/no_response/models/shared/findingband.rb +22 -0
- data/lib/no_response/models/shared/{attendee_coverage.rbi → findingband.rbi} +2 -2
- data/lib/no_response/models/shared/findingcategory.rb +27 -0
- data/lib/no_response/models/shared/{screening_platform.rbi → findingcategory.rbi} +2 -2
- data/lib/no_response/models/shared/handle.rb +1 -0
- data/lib/no_response/models/shared/handleplatform.rb +2 -1
- data/lib/no_response/models/shared/mediatype.rb +19 -0
- data/lib/no_response/models/shared/{finding.rbi → mediatype.rbi} +2 -2
- data/lib/no_response/models/shared/profilematchstate.rb +20 -0
- data/lib/no_response/models/shared/profilematchstate.rbi +9 -0
- data/lib/no_response/models/shared/screening.rb +23 -3
- data/lib/no_response/models/shared/screening.rbi +12 -0
- data/lib/no_response/models/shared/screeningcompleted.rb +146 -0
- data/lib/no_response/models/shared/screeningcompleted.rbi +74 -0
- data/lib/no_response/models/shared/screeningcompletedbyband.rb +52 -0
- data/lib/no_response/models/shared/screeningcompletedbyband.rbi +38 -0
- data/lib/no_response/models/shared/screeningcompletedevent.rb +70 -0
- data/lib/no_response/models/shared/screeningcompletedevent.rbi +38 -0
- data/lib/no_response/models/shared/screeningcompletedstatus.rb +17 -0
- data/lib/no_response/models/shared/screeningcompletedstatus.rbi +9 -0
- data/lib/no_response/models/shared/screeningcoverage.rb +82 -0
- data/lib/no_response/models/shared/screeningcoverage.rbi +44 -0
- data/lib/no_response/models/shared/screeningfinding.rb +152 -0
- data/lib/no_response/models/shared/screeningfinding.rbi +74 -0
- data/lib/no_response/models/shared/screeningmatch.rb +50 -0
- data/lib/no_response/models/shared/screeningmatch.rbi +20 -0
- data/lib/no_response/models/shared/screeningmatchevidence.rb +57 -0
- data/lib/no_response/models/shared/screeningmatchevidence.rbi +26 -0
- data/lib/no_response/models/shared/screeningmatchevidencekind.rb +25 -0
- data/lib/no_response/models/shared/screeningmatchevidencekind.rbi +9 -0
- data/lib/no_response/models/shared/screeningmedia.rb +141 -0
- data/lib/no_response/models/shared/screeningmedia.rbi +74 -0
- data/lib/no_response/models/shared/screeningplatformcoverage.rb +80 -0
- data/lib/no_response/models/shared/screeningplatformcoverage.rbi +32 -0
- data/lib/no_response/models/shared/screeningplatformcoveragestatus.rb +22 -0
- data/lib/no_response/models/shared/screeningplatformcoveragestatus.rbi +9 -0
- data/lib/no_response/models/shared/screeningpost.rb +111 -0
- data/lib/no_response/models/shared/screeningpost.rbi +62 -0
- data/lib/no_response/models/shared/screeningprofile.rb +193 -0
- data/lib/no_response/models/shared/screeningprofile.rbi +104 -0
- data/lib/no_response/models/shared/screeningrequest.rb +2 -5
- data/lib/no_response/models/shared/screeningspend.rb +41 -0
- data/lib/no_response/models/shared/screeningspend.rbi +20 -0
- data/lib/no_response/models/shared/screeningspendline.rb +57 -0
- data/lib/no_response/models/shared/screeningspendline.rbi +26 -0
- data/lib/no_response/models/shared/screeningspendlinerole.rb +20 -0
- data/lib/no_response/models/shared/screeningspendlinerole.rbi +9 -0
- data/lib/no_response/models/shared/screeningstatus.rb +1 -1
- data/lib/no_response/models/shared/webhookdeliveryattempt.rb +1 -1
- data/lib/no_response/models/shared/webhookreplay.rb +1 -1
- data/lib/no_response/models/shared.rb +27 -5
- data/lib/no_response/sdkconfiguration.rb +2 -2
- data/lib/no_response/webhook_verification.rb +8 -2
- metadata +56 -12
- data/lib/no_response/models/shared/attendee_coverage.rb +0 -23
- data/lib/no_response/models/shared/finding.rb +0 -23
- data/lib/no_response/models/shared/profile.rb +0 -23
- data/lib/no_response/models/shared/screening_platform.rb +0 -27
- data/lib/no_response/models/shared/screeningrequest_platform.rb +0 -24
- data/lib/no_response/models/shared/screeningrequest_platform.rbi +0 -9
|
@@ -15,18 +15,30 @@ module NoResponse
|
|
|
15
15
|
Models::Shared::Attendee,
|
|
16
16
|
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("attendee"), required: true}}
|
|
17
17
|
)
|
|
18
|
-
# The accounts the screening matched, with how each was matched.
|
|
18
|
+
# The accounts the latest screening matched, with how each was matched.
|
|
19
19
|
field(
|
|
20
20
|
:profiles,
|
|
21
|
-
Crystalline::Array.new(Models::Shared::
|
|
21
|
+
Crystalline::Array.new(Models::Shared::ScreeningProfile),
|
|
22
22
|
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("profiles"), required: true}}
|
|
23
23
|
)
|
|
24
|
-
# What the screening flagged,
|
|
24
|
+
# What the latest screening flagged, most severe first, each citing its evidence.
|
|
25
25
|
field(
|
|
26
26
|
:findings,
|
|
27
|
-
Crystalline::Array.new(Models::Shared::
|
|
27
|
+
Crystalline::Array.new(Models::Shared::ScreeningFinding),
|
|
28
28
|
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("findings"), required: true}}
|
|
29
29
|
)
|
|
30
|
+
# The posts the findings cite.
|
|
31
|
+
field(
|
|
32
|
+
:posts,
|
|
33
|
+
Crystalline::Array.new(Models::Shared::ScreeningPost),
|
|
34
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("posts"), required: true}}
|
|
35
|
+
)
|
|
36
|
+
# The images and videos the findings cite.
|
|
37
|
+
field(
|
|
38
|
+
:media,
|
|
39
|
+
Crystalline::Array.new(Models::Shared::ScreeningMedia),
|
|
40
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("media"), required: true}}
|
|
41
|
+
)
|
|
30
42
|
# Every recorded decision, oldest first.
|
|
31
43
|
field(
|
|
32
44
|
:reviews,
|
|
@@ -37,16 +49,20 @@ module NoResponse
|
|
|
37
49
|
sig {
|
|
38
50
|
params(
|
|
39
51
|
attendee: Models::Shared::Attendee,
|
|
40
|
-
profiles: T::Array[Models::Shared::
|
|
41
|
-
findings: T::Array[Models::Shared::
|
|
52
|
+
profiles: T::Array[Models::Shared::ScreeningProfile],
|
|
53
|
+
findings: T::Array[Models::Shared::ScreeningFinding],
|
|
54
|
+
posts: T::Array[Models::Shared::ScreeningPost],
|
|
55
|
+
media: T::Array[Models::Shared::ScreeningMedia],
|
|
42
56
|
reviews: T::Array[Models::Shared::AttendeeReview]
|
|
43
57
|
)
|
|
44
58
|
.void
|
|
45
59
|
}
|
|
46
|
-
def initialize(attendee:, profiles:, findings:, reviews:)
|
|
60
|
+
def initialize(attendee:, profiles:, findings:, posts:, media:, reviews:)
|
|
47
61
|
@attendee = attendee
|
|
48
62
|
@profiles = profiles
|
|
49
63
|
@findings = findings
|
|
64
|
+
@posts = posts
|
|
65
|
+
@media = media
|
|
50
66
|
@reviews = reviews
|
|
51
67
|
end
|
|
52
68
|
|
|
@@ -56,6 +72,8 @@ module NoResponse
|
|
|
56
72
|
return false unless @attendee == other.attendee
|
|
57
73
|
return false unless @profiles == other.profiles
|
|
58
74
|
return false unless @findings == other.findings
|
|
75
|
+
return false unless @posts == other.posts
|
|
76
|
+
return false unless @media == other.media
|
|
59
77
|
return false unless @reviews == other.reviews
|
|
60
78
|
true
|
|
61
79
|
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
# FindingBand - How severe a finding is, most severe first.
|
|
8
|
+
class FindingBand
|
|
9
|
+
include ::Crystalline::Enum
|
|
10
|
+
enums do
|
|
11
|
+
CRITICAL = new("critical")
|
|
12
|
+
HIGH = new("high")
|
|
13
|
+
MODERATE = new("moderate")
|
|
14
|
+
LOW = new("low")
|
|
15
|
+
INFO = new("info")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
open!
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# typed: true
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
|
-
class NoResponse::Models::Shared::
|
|
4
|
+
class NoResponse::Models::Shared::FindingBand
|
|
5
5
|
extend ::Crystalline::MetadataFields::ClassMethods
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
class NoResponse::Models::Shared::
|
|
8
|
+
class NoResponse::Models::Shared::FindingBand
|
|
9
9
|
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
# FindingCategory - What a finding is about: a direct threat to the principal or the event, intent to harm without a named target, fixation on the principal, a grievance against the host, research into the venue, route or security, weapons tied to any of these, disruption or protest planning toward this event, violent extremist content or identification, prior harassment or stalking of staff or principals, or posting the principal's addresses or movements.
|
|
8
|
+
class FindingCategory
|
|
9
|
+
include ::Crystalline::Enum
|
|
10
|
+
enums do
|
|
11
|
+
DIRECT_THREAT = new("direct_threat")
|
|
12
|
+
HARM_INTENT = new("harm_intent")
|
|
13
|
+
FIXATION = new("fixation")
|
|
14
|
+
GRIEVANCE = new("grievance")
|
|
15
|
+
SECURITY_RESEARCH = new("security_research")
|
|
16
|
+
WEAPONS = new("weapons")
|
|
17
|
+
DISRUPTION = new("disruption")
|
|
18
|
+
VIOLENT_EXTREMISM = new("violent_extremism")
|
|
19
|
+
HARASSMENT = new("harassment")
|
|
20
|
+
MOVEMENT_EXPOSURE = new("movement_exposure")
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
open!
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# typed: true
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
|
-
class NoResponse::Models::Shared::
|
|
4
|
+
class NoResponse::Models::Shared::FindingCategory
|
|
5
5
|
extend ::Crystalline::MetadataFields::ClassMethods
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
class NoResponse::Models::Shared::
|
|
8
|
+
class NoResponse::Models::Shared::FindingCategory
|
|
9
9
|
end
|
|
@@ -9,6 +9,7 @@ module NoResponse
|
|
|
9
9
|
extend T::Sig
|
|
10
10
|
include Crystalline::MetadataFields
|
|
11
11
|
|
|
12
|
+
# A platform a screening can cover. synthetic is the deterministic connector's own platform, for exercising the product end to end with no network.
|
|
12
13
|
field(
|
|
13
14
|
:platform,
|
|
14
15
|
Models::Shared::HandlePlatform,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
module NoResponse
|
|
5
5
|
module Models
|
|
6
6
|
module Shared
|
|
7
|
-
|
|
7
|
+
# HandlePlatform - A platform a screening can cover. synthetic is the deterministic connector's own platform, for exercising the product end to end with no network.
|
|
8
8
|
class HandlePlatform
|
|
9
9
|
include ::Crystalline::Enum
|
|
10
10
|
enums do
|
|
@@ -18,6 +18,7 @@ module NoResponse
|
|
|
18
18
|
REDDIT = new("reddit")
|
|
19
19
|
TELEGRAM = new("telegram")
|
|
20
20
|
LINKEDIN = new("linkedin")
|
|
21
|
+
SYNTHETIC = new("synthetic")
|
|
21
22
|
end
|
|
22
23
|
|
|
23
24
|
open!
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
|
|
8
|
+
class MediaType
|
|
9
|
+
include ::Crystalline::Enum
|
|
10
|
+
enums do
|
|
11
|
+
IMAGE = new("image")
|
|
12
|
+
VIDEO = new("video")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
open!
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# typed: true
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
|
-
class NoResponse::Models::Shared::
|
|
4
|
+
class NoResponse::Models::Shared::MediaType
|
|
5
5
|
extend ::Crystalline::MetadataFields::ClassMethods
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
class NoResponse::Models::Shared::
|
|
8
|
+
class NoResponse::Models::Shared::MediaType
|
|
9
9
|
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
# ProfileMatchState - How sure the screening is that a profile is the attendee's, from its evidence: confirmed is two or more hard identifiers (email, phone, a supplied handle, or a fact an existing source returned), probable is one identifier beyond the name, possible is the name alone.
|
|
8
|
+
class ProfileMatchState
|
|
9
|
+
include ::Crystalline::Enum
|
|
10
|
+
enums do
|
|
11
|
+
CONFIRMED = new("confirmed")
|
|
12
|
+
PROBABLE = new("probable")
|
|
13
|
+
POSSIBLE = new("possible")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
open!
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -28,7 +28,7 @@ module NoResponse
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
)
|
|
31
|
-
# partial finished with some attendees not covered; attendees_failed
|
|
31
|
+
# partial finished with some attendees or platforms not covered; attendees_failed and attendees_partial count them.
|
|
32
32
|
field(
|
|
33
33
|
:status,
|
|
34
34
|
Models::Shared::ScreeningStatus,
|
|
@@ -55,7 +55,7 @@ module NoResponse
|
|
|
55
55
|
|
|
56
56
|
field(
|
|
57
57
|
:platforms,
|
|
58
|
-
Crystalline::Array.new(Models::Shared::
|
|
58
|
+
Crystalline::Array.new(Models::Shared::HandlePlatform),
|
|
59
59
|
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("platforms"), required: true}}
|
|
60
60
|
)
|
|
61
61
|
|
|
@@ -100,6 +100,12 @@ module NoResponse
|
|
|
100
100
|
::Integer,
|
|
101
101
|
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("attendees_failed"), required: true}}
|
|
102
102
|
)
|
|
103
|
+
# Attendees screened with some requested platform not covered; their coverage names which.
|
|
104
|
+
field(
|
|
105
|
+
:attendees_partial,
|
|
106
|
+
::Integer,
|
|
107
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("attendees_partial"), required: true}}
|
|
108
|
+
)
|
|
103
109
|
# What the screening was estimated to cost when it started, in minor units of USD (cents): its attendees at its depth and platforms. Until the screening finishes, what it has not yet spent counts against the environment's screening_daily_cap.
|
|
104
110
|
field(
|
|
105
111
|
:estimated_spend,
|
|
@@ -112,6 +118,12 @@ module NoResponse
|
|
|
112
118
|
::Integer,
|
|
113
119
|
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("spent"), required: true}}
|
|
114
120
|
)
|
|
121
|
+
# What screening cost, in US cents, in total and per implementation.
|
|
122
|
+
field(
|
|
123
|
+
:spend,
|
|
124
|
+
Models::Shared::ScreeningSpend,
|
|
125
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("spend"), required: true}}
|
|
126
|
+
)
|
|
115
127
|
|
|
116
128
|
field(
|
|
117
129
|
:started_at,
|
|
@@ -138,7 +150,7 @@ module NoResponse
|
|
|
138
150
|
environment: Models::Shared::AuditSettingsEnvironment,
|
|
139
151
|
status: Models::Shared::ScreeningStatus,
|
|
140
152
|
depth: Models::Shared::ScreeningDepth,
|
|
141
|
-
platforms: T::Array[Models::Shared::
|
|
153
|
+
platforms: T::Array[Models::Shared::HandlePlatform],
|
|
142
154
|
requested_by: ::String,
|
|
143
155
|
created_at: ::String,
|
|
144
156
|
expires_at: ::String,
|
|
@@ -146,8 +158,10 @@ module NoResponse
|
|
|
146
158
|
attendees_done: ::Integer,
|
|
147
159
|
attendees_flagged: ::Integer,
|
|
148
160
|
attendees_failed: ::Integer,
|
|
161
|
+
attendees_partial: ::Integer,
|
|
149
162
|
estimated_spend: ::Integer,
|
|
150
163
|
spent: ::Integer,
|
|
164
|
+
spend: Models::Shared::ScreeningSpend,
|
|
151
165
|
started_at: T.nilable(::String),
|
|
152
166
|
finished_at: T.nilable(::String),
|
|
153
167
|
error_code: T.nilable(::String)
|
|
@@ -168,8 +182,10 @@ module NoResponse
|
|
|
168
182
|
attendees_done:,
|
|
169
183
|
attendees_flagged:,
|
|
170
184
|
attendees_failed:,
|
|
185
|
+
attendees_partial:,
|
|
171
186
|
estimated_spend:,
|
|
172
187
|
spent:,
|
|
188
|
+
spend:,
|
|
173
189
|
started_at: nil,
|
|
174
190
|
finished_at: nil,
|
|
175
191
|
error_code: nil
|
|
@@ -187,8 +203,10 @@ module NoResponse
|
|
|
187
203
|
@attendees_done = attendees_done
|
|
188
204
|
@attendees_flagged = attendees_flagged
|
|
189
205
|
@attendees_failed = attendees_failed
|
|
206
|
+
@attendees_partial = attendees_partial
|
|
190
207
|
@estimated_spend = estimated_spend
|
|
191
208
|
@spent = spent
|
|
209
|
+
@spend = spend
|
|
192
210
|
@started_at = started_at
|
|
193
211
|
@finished_at = finished_at
|
|
194
212
|
@error_code = error_code
|
|
@@ -210,8 +228,10 @@ module NoResponse
|
|
|
210
228
|
return false unless @attendees_done == other.attendees_done
|
|
211
229
|
return false unless @attendees_flagged == other.attendees_flagged
|
|
212
230
|
return false unless @attendees_failed == other.attendees_failed
|
|
231
|
+
return false unless @attendees_partial == other.attendees_partial
|
|
213
232
|
return false unless @estimated_spend == other.estimated_spend
|
|
214
233
|
return false unless @spent == other.spent
|
|
234
|
+
return false unless @spend == other.spend
|
|
215
235
|
return false unless @started_at == other.started_at
|
|
216
236
|
return false unless @finished_at == other.finished_at
|
|
217
237
|
return false unless @error_code == other.error_code
|
|
@@ -84,6 +84,12 @@ class NoResponse::Models::Shared::Screening
|
|
|
84
84
|
def attendees_failed=(str_)
|
|
85
85
|
end
|
|
86
86
|
|
|
87
|
+
def attendees_partial
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def attendees_partial=(str_)
|
|
91
|
+
end
|
|
92
|
+
|
|
87
93
|
def estimated_spend
|
|
88
94
|
end
|
|
89
95
|
|
|
@@ -96,6 +102,12 @@ class NoResponse::Models::Shared::Screening
|
|
|
96
102
|
def spent=(str_)
|
|
97
103
|
end
|
|
98
104
|
|
|
105
|
+
def spend
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def spend=(str_)
|
|
109
|
+
end
|
|
110
|
+
|
|
99
111
|
def started_at
|
|
100
112
|
end
|
|
101
113
|
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
# A screening of an event finished. It counts only the attendees this screening set out to reach, not who they are: read the roster with GET /v1/workspaces/{workspace_id}/events/{environment}/{event_id}/attendees, filtered by band, to act on them. attendees_screened + partial_coverage = attendees_total, attendees_flagged is the sum of by_band, and no_footprint counts screened attendees with no flag whose accounts were not found. A cancelled screening sends no event.
|
|
8
|
+
class ScreeningCompleted
|
|
9
|
+
extend T::Sig
|
|
10
|
+
include Crystalline::MetadataFields
|
|
11
|
+
|
|
12
|
+
# The screening that finished.
|
|
13
|
+
field(
|
|
14
|
+
:screening_id,
|
|
15
|
+
::String,
|
|
16
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("screening_id"), required: true}}
|
|
17
|
+
)
|
|
18
|
+
# The event it screened.
|
|
19
|
+
field(
|
|
20
|
+
:event_id,
|
|
21
|
+
::String,
|
|
22
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("event_id"), required: true}}
|
|
23
|
+
)
|
|
24
|
+
# completed reached every attendee; partial left some not fully covered (partial_coverage); failed covered nobody.
|
|
25
|
+
field(
|
|
26
|
+
:status,
|
|
27
|
+
Models::Shared::ScreeningCompletedStatus,
|
|
28
|
+
{
|
|
29
|
+
'format_json': {
|
|
30
|
+
'letter_case': ::NoResponse::Utils.field_name("status"),
|
|
31
|
+
required: true,
|
|
32
|
+
'decoder': ::NoResponse::Utils.enum_from_string(Models::Shared::ScreeningCompletedStatus, false)
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
# Every attendee the screening set out to reach: those no screening had reached and those on watch or escalated.
|
|
37
|
+
field(
|
|
38
|
+
:attendees_total,
|
|
39
|
+
::Integer,
|
|
40
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("attendees_total"), required: true}}
|
|
41
|
+
)
|
|
42
|
+
# Attendees the screening covered, flagged or not.
|
|
43
|
+
field(
|
|
44
|
+
:attendees_screened,
|
|
45
|
+
::Integer,
|
|
46
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("attendees_screened"), required: true}}
|
|
47
|
+
)
|
|
48
|
+
# Screened attendees with a finding: the sum of by_band.
|
|
49
|
+
field(
|
|
50
|
+
:attendees_flagged,
|
|
51
|
+
::Integer,
|
|
52
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("attendees_flagged"), required: true}}
|
|
53
|
+
)
|
|
54
|
+
# Screened attendees by the band of their most severe finding.
|
|
55
|
+
field(
|
|
56
|
+
:by_band,
|
|
57
|
+
Models::Shared::ScreeningCompletedByBand,
|
|
58
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("by_band"), required: true}}
|
|
59
|
+
)
|
|
60
|
+
# Screened attendees with no finding whose accounts were not found (match_state none_found). A clean result for someone with no visible accounts is not the same as a clean result for someone whose accounts were read.
|
|
61
|
+
field(
|
|
62
|
+
:no_footprint,
|
|
63
|
+
::Integer,
|
|
64
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("no_footprint"), required: true}}
|
|
65
|
+
)
|
|
66
|
+
# Attendees the screening did not fully cover. Read each one's coverage on its attendee.
|
|
67
|
+
field(
|
|
68
|
+
:partial_coverage,
|
|
69
|
+
::Integer,
|
|
70
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("partial_coverage"), required: true}}
|
|
71
|
+
)
|
|
72
|
+
# When the screening finished; equal to the event's created_at.
|
|
73
|
+
field(
|
|
74
|
+
:finished_at,
|
|
75
|
+
::String,
|
|
76
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("finished_at"), required: true}}
|
|
77
|
+
)
|
|
78
|
+
# Why a partial or failed screening stopped before reaching everyone, as the screening resource says: expired, worker_attempts_exhausted, attempts_exhausted or screening_unavailable.
|
|
79
|
+
field(
|
|
80
|
+
:error_code,
|
|
81
|
+
Crystalline::Nilable.new(::String),
|
|
82
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("error_code")}}
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
sig {
|
|
86
|
+
params(
|
|
87
|
+
screening_id: ::String,
|
|
88
|
+
event_id: ::String,
|
|
89
|
+
status: Models::Shared::ScreeningCompletedStatus,
|
|
90
|
+
attendees_total: ::Integer,
|
|
91
|
+
attendees_screened: ::Integer,
|
|
92
|
+
attendees_flagged: ::Integer,
|
|
93
|
+
by_band: Models::Shared::ScreeningCompletedByBand,
|
|
94
|
+
no_footprint: ::Integer,
|
|
95
|
+
partial_coverage: ::Integer,
|
|
96
|
+
finished_at: ::String,
|
|
97
|
+
error_code: T.nilable(::String)
|
|
98
|
+
)
|
|
99
|
+
.void
|
|
100
|
+
}
|
|
101
|
+
def initialize(
|
|
102
|
+
screening_id:,
|
|
103
|
+
event_id:,
|
|
104
|
+
status:,
|
|
105
|
+
attendees_total:,
|
|
106
|
+
attendees_screened:,
|
|
107
|
+
attendees_flagged:,
|
|
108
|
+
by_band:,
|
|
109
|
+
no_footprint:,
|
|
110
|
+
partial_coverage:,
|
|
111
|
+
finished_at:,
|
|
112
|
+
error_code: nil
|
|
113
|
+
)
|
|
114
|
+
@screening_id = screening_id
|
|
115
|
+
@event_id = event_id
|
|
116
|
+
@status = status
|
|
117
|
+
@attendees_total = attendees_total
|
|
118
|
+
@attendees_screened = attendees_screened
|
|
119
|
+
@attendees_flagged = attendees_flagged
|
|
120
|
+
@by_band = by_band
|
|
121
|
+
@no_footprint = no_footprint
|
|
122
|
+
@partial_coverage = partial_coverage
|
|
123
|
+
@finished_at = finished_at
|
|
124
|
+
@error_code = error_code
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
128
|
+
def ==(other)
|
|
129
|
+
return false unless other.is_a?(self.class)
|
|
130
|
+
return false unless @screening_id == other.screening_id
|
|
131
|
+
return false unless @event_id == other.event_id
|
|
132
|
+
return false unless @status == other.status
|
|
133
|
+
return false unless @attendees_total == other.attendees_total
|
|
134
|
+
return false unless @attendees_screened == other.attendees_screened
|
|
135
|
+
return false unless @attendees_flagged == other.attendees_flagged
|
|
136
|
+
return false unless @by_band == other.by_band
|
|
137
|
+
return false unless @no_footprint == other.no_footprint
|
|
138
|
+
return false unless @partial_coverage == other.partial_coverage
|
|
139
|
+
return false unless @finished_at == other.finished_at
|
|
140
|
+
return false unless @error_code == other.error_code
|
|
141
|
+
true
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
class NoResponse::Models::Shared::ScreeningCompleted
|
|
5
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class NoResponse::Models::Shared::ScreeningCompleted
|
|
9
|
+
def screening_id
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def screening_id=(str_)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def event_id
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def event_id=(str_)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def status
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def status=(str_)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def attendees_total
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def attendees_total=(str_)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def attendees_screened
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def attendees_screened=(str_)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def attendees_flagged
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def attendees_flagged=(str_)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def by_band
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def by_band=(str_)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def no_footprint
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def no_footprint=(str_)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def partial_coverage
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def partial_coverage=(str_)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def finished_at
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def finished_at=(str_)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def error_code
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def error_code=(str_)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
# Screened attendees by the band of their most severe finding.
|
|
8
|
+
class ScreeningCompletedByBand
|
|
9
|
+
extend T::Sig
|
|
10
|
+
include Crystalline::MetadataFields
|
|
11
|
+
|
|
12
|
+
field(
|
|
13
|
+
:critical,
|
|
14
|
+
::Integer,
|
|
15
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("critical"), required: true}}
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
field :high, ::Integer, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("high"), required: true}}
|
|
19
|
+
|
|
20
|
+
field(
|
|
21
|
+
:moderate,
|
|
22
|
+
::Integer,
|
|
23
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("moderate"), required: true}}
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
field :low, ::Integer, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("low"), required: true}}
|
|
27
|
+
|
|
28
|
+
field :info, ::Integer, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("info"), required: true}}
|
|
29
|
+
|
|
30
|
+
sig { params(critical: ::Integer, high: ::Integer, moderate: ::Integer, low: ::Integer, info: ::Integer).void }
|
|
31
|
+
def initialize(critical:, high:, moderate:, low:, info:)
|
|
32
|
+
@critical = critical
|
|
33
|
+
@high = high
|
|
34
|
+
@moderate = moderate
|
|
35
|
+
@low = low
|
|
36
|
+
@info = info
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
40
|
+
def ==(other)
|
|
41
|
+
return false unless other.is_a?(self.class)
|
|
42
|
+
return false unless @critical == other.critical
|
|
43
|
+
return false unless @high == other.high
|
|
44
|
+
return false unless @moderate == other.moderate
|
|
45
|
+
return false unless @low == other.low
|
|
46
|
+
return false unless @info == other.info
|
|
47
|
+
true
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|