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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/lib/no_response/events.rb +1 -1
  3. data/lib/no_response/models/shared/access.rb +20 -0
  4. data/lib/no_response/models/shared/{profile.rbi → access.rbi} +2 -2
  5. data/lib/no_response/models/shared/attendee.rb +13 -3
  6. data/lib/no_response/models/shared/attendee.rbi +6 -0
  7. data/lib/no_response/models/shared/attendeedecided.rb +89 -0
  8. data/lib/no_response/models/shared/attendeedecided.rbi +44 -0
  9. data/lib/no_response/models/shared/attendeedecidedevent.rb +70 -0
  10. data/lib/no_response/models/shared/attendeedecidedevent.rbi +38 -0
  11. data/lib/no_response/models/shared/attendeeflagged.rb +95 -0
  12. data/lib/no_response/models/shared/attendeeflagged.rbi +44 -0
  13. data/lib/no_response/models/shared/attendeeflaggedevent.rb +70 -0
  14. data/lib/no_response/models/shared/attendeeflaggedevent.rbi +38 -0
  15. data/lib/no_response/models/shared/attendeeflaggedmatchstate.rb +19 -0
  16. data/lib/no_response/models/shared/attendeeflaggedmatchstate.rbi +9 -0
  17. data/lib/no_response/models/shared/attendeereport.rb +25 -7
  18. data/lib/no_response/models/shared/attendeereport.rbi +12 -0
  19. data/lib/no_response/models/shared/findingband.rb +22 -0
  20. data/lib/no_response/models/shared/{attendee_coverage.rbi → findingband.rbi} +2 -2
  21. data/lib/no_response/models/shared/findingcategory.rb +27 -0
  22. data/lib/no_response/models/shared/{screening_platform.rbi → findingcategory.rbi} +2 -2
  23. data/lib/no_response/models/shared/handle.rb +1 -0
  24. data/lib/no_response/models/shared/handleplatform.rb +2 -1
  25. data/lib/no_response/models/shared/mediatype.rb +19 -0
  26. data/lib/no_response/models/shared/{finding.rbi → mediatype.rbi} +2 -2
  27. data/lib/no_response/models/shared/profilematchstate.rb +20 -0
  28. data/lib/no_response/models/shared/profilematchstate.rbi +9 -0
  29. data/lib/no_response/models/shared/screening.rb +23 -3
  30. data/lib/no_response/models/shared/screening.rbi +12 -0
  31. data/lib/no_response/models/shared/screeningcompleted.rb +146 -0
  32. data/lib/no_response/models/shared/screeningcompleted.rbi +74 -0
  33. data/lib/no_response/models/shared/screeningcompletedbyband.rb +52 -0
  34. data/lib/no_response/models/shared/screeningcompletedbyband.rbi +38 -0
  35. data/lib/no_response/models/shared/screeningcompletedevent.rb +70 -0
  36. data/lib/no_response/models/shared/screeningcompletedevent.rbi +38 -0
  37. data/lib/no_response/models/shared/screeningcompletedstatus.rb +17 -0
  38. data/lib/no_response/models/shared/screeningcompletedstatus.rbi +9 -0
  39. data/lib/no_response/models/shared/screeningcoverage.rb +82 -0
  40. data/lib/no_response/models/shared/screeningcoverage.rbi +44 -0
  41. data/lib/no_response/models/shared/screeningfinding.rb +152 -0
  42. data/lib/no_response/models/shared/screeningfinding.rbi +74 -0
  43. data/lib/no_response/models/shared/screeningmatch.rb +50 -0
  44. data/lib/no_response/models/shared/screeningmatch.rbi +20 -0
  45. data/lib/no_response/models/shared/screeningmatchevidence.rb +57 -0
  46. data/lib/no_response/models/shared/screeningmatchevidence.rbi +26 -0
  47. data/lib/no_response/models/shared/screeningmatchevidencekind.rb +25 -0
  48. data/lib/no_response/models/shared/screeningmatchevidencekind.rbi +9 -0
  49. data/lib/no_response/models/shared/screeningmedia.rb +141 -0
  50. data/lib/no_response/models/shared/screeningmedia.rbi +74 -0
  51. data/lib/no_response/models/shared/screeningplatformcoverage.rb +80 -0
  52. data/lib/no_response/models/shared/screeningplatformcoverage.rbi +32 -0
  53. data/lib/no_response/models/shared/screeningplatformcoveragestatus.rb +22 -0
  54. data/lib/no_response/models/shared/screeningplatformcoveragestatus.rbi +9 -0
  55. data/lib/no_response/models/shared/screeningpost.rb +111 -0
  56. data/lib/no_response/models/shared/screeningpost.rbi +62 -0
  57. data/lib/no_response/models/shared/screeningprofile.rb +193 -0
  58. data/lib/no_response/models/shared/screeningprofile.rbi +104 -0
  59. data/lib/no_response/models/shared/screeningrequest.rb +2 -5
  60. data/lib/no_response/models/shared/screeningspend.rb +41 -0
  61. data/lib/no_response/models/shared/screeningspend.rbi +20 -0
  62. data/lib/no_response/models/shared/screeningspendline.rb +57 -0
  63. data/lib/no_response/models/shared/screeningspendline.rbi +26 -0
  64. data/lib/no_response/models/shared/screeningspendlinerole.rb +20 -0
  65. data/lib/no_response/models/shared/screeningspendlinerole.rbi +9 -0
  66. data/lib/no_response/models/shared/screeningstatus.rb +1 -1
  67. data/lib/no_response/models/shared/webhookdeliveryattempt.rb +1 -1
  68. data/lib/no_response/models/shared/webhookreplay.rb +1 -1
  69. data/lib/no_response/models/shared.rb +27 -5
  70. data/lib/no_response/sdkconfiguration.rb +2 -2
  71. data/lib/no_response/webhook_verification.rb +8 -2
  72. metadata +56 -12
  73. data/lib/no_response/models/shared/attendee_coverage.rb +0 -23
  74. data/lib/no_response/models/shared/finding.rb +0 -23
  75. data/lib/no_response/models/shared/profile.rb +0 -23
  76. data/lib/no_response/models/shared/screening_platform.rb +0 -27
  77. data/lib/no_response/models/shared/screeningrequest_platform.rb +0 -24
  78. 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::Profile),
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, with its evidence.
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::Finding),
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::Profile],
41
- findings: T::Array[Models::Shared::Finding],
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
@@ -24,6 +24,18 @@ class NoResponse::Models::Shared::AttendeeReport
24
24
  def findings=(str_)
25
25
  end
26
26
 
27
+ def posts
28
+ end
29
+
30
+ def posts=(str_)
31
+ end
32
+
33
+ def media
34
+ end
35
+
36
+ def media=(str_)
37
+ end
38
+
27
39
  def reviews
28
40
  end
29
41
 
@@ -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::AttendeeCoverage
4
+ class NoResponse::Models::Shared::FindingBand
5
5
  extend ::Crystalline::MetadataFields::ClassMethods
6
6
  end
7
7
 
8
- class NoResponse::Models::Shared::AttendeeCoverage
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::ScreeningPlatform
4
+ class NoResponse::Models::Shared::FindingCategory
5
5
  extend ::Crystalline::MetadataFields::ClassMethods
6
6
  end
7
7
 
8
- class NoResponse::Models::Shared::ScreeningPlatform
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::Finding
4
+ class NoResponse::Models::Shared::MediaType
5
5
  extend ::Crystalline::MetadataFields::ClassMethods
6
6
  end
7
7
 
8
- class NoResponse::Models::Shared::Finding
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
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::ProfileMatchState
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::ProfileMatchState
9
+ end
@@ -28,7 +28,7 @@ module NoResponse
28
28
  }
29
29
  }
30
30
  )
31
- # partial finished with some attendees not covered; attendees_failed counts them.
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::ScreeningPlatform),
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::ScreeningPlatform],
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