noresponse 10.0.11 → 10.0.12

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 (25) hide show
  1. checksums.yaml +4 -4
  2. data/lib/no_response/models/shared/attendeedecided.rb +89 -0
  3. data/lib/no_response/models/shared/attendeedecided.rbi +44 -0
  4. data/lib/no_response/models/shared/attendeedecidedevent.rb +70 -0
  5. data/lib/no_response/models/shared/attendeedecidedevent.rbi +38 -0
  6. data/lib/no_response/models/shared/attendeeflagged.rb +95 -0
  7. data/lib/no_response/models/shared/attendeeflagged.rbi +44 -0
  8. data/lib/no_response/models/shared/attendeeflaggedevent.rb +70 -0
  9. data/lib/no_response/models/shared/attendeeflaggedevent.rbi +38 -0
  10. data/lib/no_response/models/shared/attendeeflaggedmatchstate.rb +19 -0
  11. data/lib/no_response/models/shared/attendeeflaggedmatchstate.rbi +9 -0
  12. data/lib/no_response/models/shared/screeningcompleted.rb +146 -0
  13. data/lib/no_response/models/shared/screeningcompleted.rbi +74 -0
  14. data/lib/no_response/models/shared/screeningcompletedbyband.rb +52 -0
  15. data/lib/no_response/models/shared/screeningcompletedbyband.rbi +38 -0
  16. data/lib/no_response/models/shared/screeningcompletedevent.rb +70 -0
  17. data/lib/no_response/models/shared/screeningcompletedevent.rbi +38 -0
  18. data/lib/no_response/models/shared/screeningcompletedstatus.rb +17 -0
  19. data/lib/no_response/models/shared/screeningcompletedstatus.rbi +9 -0
  20. data/lib/no_response/models/shared/webhookdeliveryattempt.rb +1 -1
  21. data/lib/no_response/models/shared/webhookreplay.rb +1 -1
  22. data/lib/no_response/models/shared.rb +9 -0
  23. data/lib/no_response/sdkconfiguration.rb +2 -2
  24. data/lib/no_response/webhook_verification.rb +8 -2
  25. metadata +19 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 11deaafb30241b9fc0e9d1d7d44fbedba4fc85260486e5a10a4fdc62be3c34b3
4
- data.tar.gz: 84f28e10935cb2c180b8faa6bee41b8d7c9779bf941217a27866ee3f9ea1ca30
3
+ metadata.gz: 5d85291717a92183c2302b31d3d0f62582b5561a73c71ad96653471708f6f320
4
+ data.tar.gz: 21707ffd2be377765fbb485bb748edfd1f4aade4891ca596926088ccc0f7acc9
5
5
  SHA512:
6
- metadata.gz: 2eff2d401db21e107b427fed6d02671fe46ab5c92791bbc567bfaea1d918b8eb82150b5f977d2a458f633f0fe39e68cb8fec23ccb71e67f0c85bcc71525d3d45
7
- data.tar.gz: 06fe0c24ce4404c94393470d7f8d3a7ea18e7a7e5bb1191feb0e04c91ab4dd1b8204efb42126daab1f0cad9e0c30415350c31051f3e6049209a34fa337a807e1
6
+ metadata.gz: faaf0a015394cdd88127765ae24a0674c25196b492d0b45b9b161af3b970c84ebe96a78e03939e39f843ca56e3327da05f0b635dd7b37d2fe80c6dc90d88dd75
7
+ data.tar.gz: 926780bbb6c32c1fe083c8600d760c1e78c30f23e4bab8d5d5d694b0d95afb173f17082c8e3a8de294888462bd38468bbc38f90b098c3520513702d9ad60395e
@@ -0,0 +1,89 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # A reviewer recorded a decision on an attendee. The decision's note stays in the API. Sent once per recorded review; an attendee's latest review is its decision, so order by decided_at.
8
+ class AttendeeDecided
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # The attendee's event.
13
+ field(
14
+ :event_id,
15
+ ::String,
16
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("event_id"), required: true}}
17
+ )
18
+ # The attendee decided on.
19
+ field(
20
+ :attendee_id,
21
+ ::String,
22
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("attendee_id"), required: true}}
23
+ )
24
+ # The recorded review.
25
+ field(
26
+ :review_id,
27
+ ::String,
28
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("review_id"), required: true}}
29
+ )
30
+
31
+ field(
32
+ :decision,
33
+ Models::Shared::AttendeeDecision,
34
+ {
35
+ 'format_json': {
36
+ 'letter_case': ::NoResponse::Utils.field_name("decision"),
37
+ required: true,
38
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::AttendeeDecision, false)
39
+ }
40
+ }
41
+ )
42
+ # Who decided: the member's external user id, or the API key's label, as the attendee's decided_by.
43
+ field(
44
+ :decided_by,
45
+ ::String,
46
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("decided_by"), required: true}}
47
+ )
48
+ # When the decision was recorded; equal to the event's created_at.
49
+ field(
50
+ :decided_at,
51
+ ::String,
52
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("decided_at"), required: true}}
53
+ )
54
+
55
+ sig {
56
+ params(
57
+ event_id: ::String,
58
+ attendee_id: ::String,
59
+ review_id: ::String,
60
+ decision: Models::Shared::AttendeeDecision,
61
+ decided_by: ::String,
62
+ decided_at: ::String
63
+ )
64
+ .void
65
+ }
66
+ def initialize(event_id:, attendee_id:, review_id:, decision:, decided_by:, decided_at:)
67
+ @event_id = event_id
68
+ @attendee_id = attendee_id
69
+ @review_id = review_id
70
+ @decision = decision
71
+ @decided_by = decided_by
72
+ @decided_at = decided_at
73
+ end
74
+
75
+ sig { params(other: T.untyped).returns(T::Boolean) }
76
+ def ==(other)
77
+ return false unless other.is_a?(self.class)
78
+ return false unless @event_id == other.event_id
79
+ return false unless @attendee_id == other.attendee_id
80
+ return false unless @review_id == other.review_id
81
+ return false unless @decision == other.decision
82
+ return false unless @decided_by == other.decided_by
83
+ return false unless @decided_at == other.decided_at
84
+ true
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,44 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::AttendeeDecided
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::AttendeeDecided
9
+ def event_id
10
+ end
11
+
12
+ def event_id=(str_)
13
+ end
14
+
15
+ def attendee_id
16
+ end
17
+
18
+ def attendee_id=(str_)
19
+ end
20
+
21
+ def review_id
22
+ end
23
+
24
+ def review_id=(str_)
25
+ end
26
+
27
+ def decision
28
+ end
29
+
30
+ def decision=(str_)
31
+ end
32
+
33
+ def decided_by
34
+ end
35
+
36
+ def decided_by=(str_)
37
+ end
38
+
39
+ def decided_at
40
+ end
41
+
42
+ def decided_at=(str_)
43
+ end
44
+ end
@@ -0,0 +1,70 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # The attendee.decided event.
8
+ class AttendeeDecidedEvent
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # The event id, equal to the NR-Webhook-Id header and across redeliveries and every endpoint the event fans out to.
13
+ field :id, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("id"), required: true}}
14
+ # When the event was created. Equal across redeliveries; the signing timestamp header is per delivery.
15
+ field(
16
+ :created_at,
17
+ ::String,
18
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("created_at"), required: true}}
19
+ )
20
+ # A reviewer recorded a decision on an attendee. The decision's note stays in the API. Sent once per recorded review; an attendee's latest review is its decision, so order by decided_at.
21
+ field(
22
+ :data,
23
+ Models::Shared::AttendeeDecided,
24
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("data"), required: true}}
25
+ )
26
+ # Always attendee.decided.
27
+ field :type, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("type"), required: true}}
28
+ # Present, and true, only on an event sent by POST /v1/webhooks/{endpoint_id}/test: its data is a fixed example assessment, not one of the workspace's, so a receiver acknowledges it and applies nothing. Real events have no test member.
29
+ field(
30
+ :test,
31
+ Crystalline::Nilable.new(Crystalline::Boolean.new),
32
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("test")}}
33
+ )
34
+
35
+ sig {
36
+ params(
37
+ id: ::String,
38
+ created_at: ::String,
39
+ data: Models::Shared::AttendeeDecided,
40
+ type: ::String,
41
+ test: T.nilable(T::Boolean)
42
+ )
43
+ .void
44
+ }
45
+ def initialize(id:, created_at:, data:, type: "attendee.decided", test: nil)
46
+ @id = id
47
+ @created_at = created_at
48
+ @data = data
49
+ unless type == "attendee.decided"
50
+ raise ArgumentError, "Invalid value for type"
51
+ end
52
+
53
+ @type = "attendee.decided"
54
+ @test = test
55
+ end
56
+
57
+ sig { params(other: T.untyped).returns(T::Boolean) }
58
+ def ==(other)
59
+ return false unless other.is_a?(self.class)
60
+ return false unless @id == other.id
61
+ return false unless @created_at == other.created_at
62
+ return false unless @data == other.data
63
+ return false unless @type == other.type
64
+ return false unless @test == other.test
65
+ true
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,38 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::AttendeeDecidedEvent
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::AttendeeDecidedEvent
9
+ def id
10
+ end
11
+
12
+ def id=(str_)
13
+ end
14
+
15
+ def created_at
16
+ end
17
+
18
+ def created_at=(str_)
19
+ end
20
+
21
+ def data
22
+ end
23
+
24
+ def data=(str_)
25
+ end
26
+
27
+ def type
28
+ end
29
+
30
+ def type=(str_)
31
+ end
32
+
33
+ def test
34
+ end
35
+
36
+ def test=(str_)
37
+ end
38
+ end
@@ -0,0 +1,95 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # A screening recorded a finding on an attendee. It says which attendee and how severe, not what they posted, who they are or why: GET the attendee report for the findings. Sent once per screening that flags the attendee, so a re-screen of someone on watch announces them again.
8
+ class AttendeeFlagged
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # The attendee's event.
13
+ field(
14
+ :event_id,
15
+ ::String,
16
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("event_id"), required: true}}
17
+ )
18
+ # The flagged attendee.
19
+ field(
20
+ :attendee_id,
21
+ ::String,
22
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("attendee_id"), required: true}}
23
+ )
24
+ # The screening that flagged them.
25
+ field(
26
+ :screening_id,
27
+ ::String,
28
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("screening_id"), required: true}}
29
+ )
30
+
31
+ field(
32
+ :highest_band,
33
+ Models::Shared::HighestBand,
34
+ {
35
+ 'format_json': {
36
+ 'letter_case': ::NoResponse::Utils.field_name("highest_band"),
37
+ required: true,
38
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::HighestBand, false)
39
+ }
40
+ }
41
+ )
42
+ # How sure the screening is that the accounts it read are the attendee's. A finding on a possible match is at most moderate, on a probable match at most high.
43
+ field(
44
+ :match_state,
45
+ Models::Shared::AttendeeFlaggedMatchState,
46
+ {
47
+ 'format_json': {
48
+ 'letter_case': ::NoResponse::Utils.field_name("match_state"),
49
+ required: true,
50
+ 'decoder': ::NoResponse::Utils.enum_from_string(Models::Shared::AttendeeFlaggedMatchState, false)
51
+ }
52
+ }
53
+ )
54
+ # When the screening recorded the finding; equal to the event's created_at.
55
+ field(
56
+ :flagged_at,
57
+ ::String,
58
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("flagged_at"), required: true}}
59
+ )
60
+
61
+ sig {
62
+ params(
63
+ event_id: ::String,
64
+ attendee_id: ::String,
65
+ screening_id: ::String,
66
+ highest_band: Models::Shared::HighestBand,
67
+ match_state: Models::Shared::AttendeeFlaggedMatchState,
68
+ flagged_at: ::String
69
+ )
70
+ .void
71
+ }
72
+ def initialize(event_id:, attendee_id:, screening_id:, highest_band:, match_state:, flagged_at:)
73
+ @event_id = event_id
74
+ @attendee_id = attendee_id
75
+ @screening_id = screening_id
76
+ @highest_band = highest_band
77
+ @match_state = match_state
78
+ @flagged_at = flagged_at
79
+ end
80
+
81
+ sig { params(other: T.untyped).returns(T::Boolean) }
82
+ def ==(other)
83
+ return false unless other.is_a?(self.class)
84
+ return false unless @event_id == other.event_id
85
+ return false unless @attendee_id == other.attendee_id
86
+ return false unless @screening_id == other.screening_id
87
+ return false unless @highest_band == other.highest_band
88
+ return false unless @match_state == other.match_state
89
+ return false unless @flagged_at == other.flagged_at
90
+ true
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,44 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::AttendeeFlagged
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::AttendeeFlagged
9
+ def event_id
10
+ end
11
+
12
+ def event_id=(str_)
13
+ end
14
+
15
+ def attendee_id
16
+ end
17
+
18
+ def attendee_id=(str_)
19
+ end
20
+
21
+ def screening_id
22
+ end
23
+
24
+ def screening_id=(str_)
25
+ end
26
+
27
+ def highest_band
28
+ end
29
+
30
+ def highest_band=(str_)
31
+ end
32
+
33
+ def match_state
34
+ end
35
+
36
+ def match_state=(str_)
37
+ end
38
+
39
+ def flagged_at
40
+ end
41
+
42
+ def flagged_at=(str_)
43
+ end
44
+ end
@@ -0,0 +1,70 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # The attendee.flagged event.
8
+ class AttendeeFlaggedEvent
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # The event id, equal to the NR-Webhook-Id header and across redeliveries and every endpoint the event fans out to.
13
+ field :id, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("id"), required: true}}
14
+ # When the event was created. Equal across redeliveries; the signing timestamp header is per delivery.
15
+ field(
16
+ :created_at,
17
+ ::String,
18
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("created_at"), required: true}}
19
+ )
20
+ # A screening recorded a finding on an attendee. It says which attendee and how severe, not what they posted, who they are or why: GET the attendee report for the findings. Sent once per screening that flags the attendee, so a re-screen of someone on watch announces them again.
21
+ field(
22
+ :data,
23
+ Models::Shared::AttendeeFlagged,
24
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("data"), required: true}}
25
+ )
26
+ # Always attendee.flagged.
27
+ field :type, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("type"), required: true}}
28
+ # Present, and true, only on an event sent by POST /v1/webhooks/{endpoint_id}/test: its data is a fixed example assessment, not one of the workspace's, so a receiver acknowledges it and applies nothing. Real events have no test member.
29
+ field(
30
+ :test,
31
+ Crystalline::Nilable.new(Crystalline::Boolean.new),
32
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("test")}}
33
+ )
34
+
35
+ sig {
36
+ params(
37
+ id: ::String,
38
+ created_at: ::String,
39
+ data: Models::Shared::AttendeeFlagged,
40
+ type: ::String,
41
+ test: T.nilable(T::Boolean)
42
+ )
43
+ .void
44
+ }
45
+ def initialize(id:, created_at:, data:, type: "attendee.flagged", test: nil)
46
+ @id = id
47
+ @created_at = created_at
48
+ @data = data
49
+ unless type == "attendee.flagged"
50
+ raise ArgumentError, "Invalid value for type"
51
+ end
52
+
53
+ @type = "attendee.flagged"
54
+ @test = test
55
+ end
56
+
57
+ sig { params(other: T.untyped).returns(T::Boolean) }
58
+ def ==(other)
59
+ return false unless other.is_a?(self.class)
60
+ return false unless @id == other.id
61
+ return false unless @created_at == other.created_at
62
+ return false unless @data == other.data
63
+ return false unless @type == other.type
64
+ return false unless @test == other.test
65
+ true
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,38 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::AttendeeFlaggedEvent
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::AttendeeFlaggedEvent
9
+ def id
10
+ end
11
+
12
+ def id=(str_)
13
+ end
14
+
15
+ def created_at
16
+ end
17
+
18
+ def created_at=(str_)
19
+ end
20
+
21
+ def data
22
+ end
23
+
24
+ def data=(str_)
25
+ end
26
+
27
+ def type
28
+ end
29
+
30
+ def type=(str_)
31
+ end
32
+
33
+ def test
34
+ end
35
+
36
+ def test=(str_)
37
+ end
38
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # AttendeeFlaggedMatchState - How sure the screening is that the accounts it read are the attendee's. A finding on a possible match is at most moderate, on a probable match at most high.
8
+ class AttendeeFlaggedMatchState < T::Enum
9
+ enums do
10
+ CONFIRMED = new("confirmed")
11
+ PROBABLE = new("probable")
12
+ POSSIBLE = new("possible")
13
+ NONE_FOUND = new("none_found")
14
+ INACCESSIBLE = new("inaccessible")
15
+ end
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::AttendeeFlaggedMatchState
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::AttendeeFlaggedMatchState
9
+ end
@@ -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
@@ -0,0 +1,38 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::ScreeningCompletedByBand
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::ScreeningCompletedByBand
9
+ def critical
10
+ end
11
+
12
+ def critical=(str_)
13
+ end
14
+
15
+ def high
16
+ end
17
+
18
+ def high=(str_)
19
+ end
20
+
21
+ def moderate
22
+ end
23
+
24
+ def moderate=(str_)
25
+ end
26
+
27
+ def low
28
+ end
29
+
30
+ def low=(str_)
31
+ end
32
+
33
+ def info
34
+ end
35
+
36
+ def info=(str_)
37
+ end
38
+ end
@@ -0,0 +1,70 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # The screening.completed event.
8
+ class ScreeningCompletedEvent
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # The event id, equal to the NR-Webhook-Id header and across redeliveries and every endpoint the event fans out to.
13
+ field :id, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("id"), required: true}}
14
+ # When the event was created. Equal across redeliveries; the signing timestamp header is per delivery.
15
+ field(
16
+ :created_at,
17
+ ::String,
18
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("created_at"), required: true}}
19
+ )
20
+ # 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.
21
+ field(
22
+ :data,
23
+ Models::Shared::ScreeningCompleted,
24
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("data"), required: true}}
25
+ )
26
+ # Always screening.completed.
27
+ field :type, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("type"), required: true}}
28
+ # Present, and true, only on an event sent by POST /v1/webhooks/{endpoint_id}/test: its data is a fixed example assessment, not one of the workspace's, so a receiver acknowledges it and applies nothing. Real events have no test member.
29
+ field(
30
+ :test,
31
+ Crystalline::Nilable.new(Crystalline::Boolean.new),
32
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("test")}}
33
+ )
34
+
35
+ sig {
36
+ params(
37
+ id: ::String,
38
+ created_at: ::String,
39
+ data: Models::Shared::ScreeningCompleted,
40
+ type: ::String,
41
+ test: T.nilable(T::Boolean)
42
+ )
43
+ .void
44
+ }
45
+ def initialize(id:, created_at:, data:, type: "screening.completed", test: nil)
46
+ @id = id
47
+ @created_at = created_at
48
+ @data = data
49
+ unless type == "screening.completed"
50
+ raise ArgumentError, "Invalid value for type"
51
+ end
52
+
53
+ @type = "screening.completed"
54
+ @test = test
55
+ end
56
+
57
+ sig { params(other: T.untyped).returns(T::Boolean) }
58
+ def ==(other)
59
+ return false unless other.is_a?(self.class)
60
+ return false unless @id == other.id
61
+ return false unless @created_at == other.created_at
62
+ return false unless @data == other.data
63
+ return false unless @type == other.type
64
+ return false unless @test == other.test
65
+ true
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,38 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::ScreeningCompletedEvent
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::ScreeningCompletedEvent
9
+ def id
10
+ end
11
+
12
+ def id=(str_)
13
+ end
14
+
15
+ def created_at
16
+ end
17
+
18
+ def created_at=(str_)
19
+ end
20
+
21
+ def data
22
+ end
23
+
24
+ def data=(str_)
25
+ end
26
+
27
+ def type
28
+ end
29
+
30
+ def type=(str_)
31
+ end
32
+
33
+ def test
34
+ end
35
+
36
+ def test=(str_)
37
+ end
38
+ end
@@ -0,0 +1,17 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # ScreeningCompletedStatus - completed reached every attendee; partial left some not fully covered (partial_coverage); failed covered nobody.
8
+ class ScreeningCompletedStatus < T::Enum
9
+ enums do
10
+ COMPLETED = new("completed")
11
+ PARTIAL = new("partial")
12
+ FAILED = new("failed")
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::ScreeningCompletedStatus
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::ScreeningCompletedStatus
9
+ end
@@ -15,7 +15,7 @@ module NoResponse
15
15
  ::String,
16
16
  {'format_json': {'letter_case': ::NoResponse::Utils.field_name("event_id"), required: true}}
17
17
  )
18
- # The event's type, as its body's type: assessment.updated, endpoint.verification, account.deleted, workspace.deleted, webhook_endpoint.disabled, account.risk_changed, audit.event, or a type added later.
18
+ # The event's type, as its body's type: assessment.updated, endpoint.verification, account.deleted, workspace.deleted, webhook_endpoint.disabled, account.risk_changed, audit.event, screening.completed, attendee.flagged, attendee.decided, or a type added later.
19
19
  field(
20
20
  :event_type,
21
21
  ::String,
@@ -21,7 +21,7 @@ module NoResponse
21
21
  ::String,
22
22
  {'format_json': {'letter_case': ::NoResponse::Utils.field_name("event_id"), required: true}}
23
23
  )
24
- # The event's type, as its body's type: assessment.updated, endpoint.verification, account.deleted, workspace.deleted, webhook_endpoint.disabled, account.risk_changed, audit.event, or a type added later.
24
+ # The event's type, as its body's type: assessment.updated, endpoint.verification, account.deleted, workspace.deleted, webhook_endpoint.disabled, account.risk_changed, audit.event, screening.completed, attendee.flagged, attendee.decided, or a type added later.
25
25
  field(
26
26
  :event_type,
27
27
  ::String,
@@ -75,7 +75,12 @@ module NoResponse
75
75
  autoload :AttendeeBatchItem, "no_response/models/shared/attendeebatchitem.rb"
76
76
  autoload :AttendeeBatchItemOutcome, "no_response/models/shared/attendeebatchitemoutcome.rb"
77
77
  autoload :AttendeeBatchRequest, "no_response/models/shared/attendeebatchrequest.rb"
78
+ autoload :AttendeeDecided, "no_response/models/shared/attendeedecided.rb"
79
+ autoload :AttendeeDecidedEvent, "no_response/models/shared/attendeedecidedevent.rb"
78
80
  autoload :AttendeeDecision, "no_response/models/shared/attendeedecision.rb"
81
+ autoload :AttendeeFlagged, "no_response/models/shared/attendeeflagged.rb"
82
+ autoload :AttendeeFlaggedEvent, "no_response/models/shared/attendeeflaggedevent.rb"
83
+ autoload :AttendeeFlaggedMatchState, "no_response/models/shared/attendeeflaggedmatchstate.rb"
79
84
  autoload :AttendeeIdentity, "no_response/models/shared/attendeeidentity.rb"
80
85
  autoload :AttendeeList, "no_response/models/shared/attendeelist.rb"
81
86
  autoload :AttendeeReport, "no_response/models/shared/attendeereport.rb"
@@ -348,6 +353,10 @@ module NoResponse
348
353
  autoload :ScopeEnum, "no_response/models/shared/scope_enum.rb"
349
354
  autoload :Screening, "no_response/models/shared/screening.rb"
350
355
  autoload :ScreeningCancelRequest, "no_response/models/shared/screeningcancelrequest.rb"
356
+ autoload :ScreeningCompleted, "no_response/models/shared/screeningcompleted.rb"
357
+ autoload :ScreeningCompletedByBand, "no_response/models/shared/screeningcompletedbyband.rb"
358
+ autoload :ScreeningCompletedEvent, "no_response/models/shared/screeningcompletedevent.rb"
359
+ autoload :ScreeningCompletedStatus, "no_response/models/shared/screeningcompletedstatus.rb"
351
360
  autoload :ScreeningDepth, "no_response/models/shared/screeningdepth.rb"
352
361
  autoload :ScreeningList, "no_response/models/shared/screeninglist.rb"
353
362
  autoload :ScreeningRequest, "no_response/models/shared/screeningrequest.rb"
@@ -95,9 +95,9 @@ module NoResponse
95
95
 
96
96
  @language = "ruby"
97
97
  @openapi_doc_version = "1"
98
- @sdk_version = "10.0.11"
98
+ @sdk_version = "10.0.12"
99
99
  @gen_version = "internal"
100
- @user_agent = "noresponse-sdk/ruby 10.0.11 internal 1 noresponse"
100
+ @user_agent = "noresponse-sdk/ruby 10.0.12 internal 1 noresponse"
101
101
  end
102
102
 
103
103
  sig { returns([String, T::Hash[Symbol, String]]) }
@@ -45,7 +45,10 @@ module NoResponse
45
45
  "workspace.deleted" => Models::Shared::WorkspaceDeletedEvent,
46
46
  "webhook_endpoint.disabled" => Models::Shared::WebhookEndpointDisabledEvent,
47
47
  "account.risk_changed" => Models::Shared::AccountRiskChangedEvent,
48
- "audit.event" => Models::Shared::AuditEventEvent
48
+ "audit.event" => Models::Shared::AuditEventEvent,
49
+ "screening.completed" => Models::Shared::ScreeningCompletedEvent,
50
+ "attendee.flagged" => Models::Shared::AttendeeFlaggedEvent,
51
+ "attendee.decided" => Models::Shared::AttendeeDecidedEvent
49
52
  }
50
53
  )
51
54
  private_constant :EVENT_TYPE
@@ -76,7 +79,10 @@ module NoResponse
76
79
  Models::Shared::WorkspaceDeletedEvent,
77
80
  Models::Shared::WebhookEndpointDisabledEvent,
78
81
  Models::Shared::AccountRiskChangedEvent,
79
- Models::Shared::AuditEventEvent
82
+ Models::Shared::AuditEventEvent,
83
+ Models::Shared::ScreeningCompletedEvent,
84
+ Models::Shared::AttendeeFlaggedEvent,
85
+ Models::Shared::AttendeeDecidedEvent
80
86
  )
81
87
  )
82
88
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: noresponse
3
3
  version: !ruby/object:Gem::Version
4
- version: 10.0.11
4
+ version: 10.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - NoResponse
@@ -872,8 +872,18 @@ files:
872
872
  - lib/no_response/models/shared/attendeebatchitemoutcome.rbi
873
873
  - lib/no_response/models/shared/attendeebatchrequest.rb
874
874
  - lib/no_response/models/shared/attendeebatchrequest.rbi
875
+ - lib/no_response/models/shared/attendeedecided.rb
876
+ - lib/no_response/models/shared/attendeedecided.rbi
877
+ - lib/no_response/models/shared/attendeedecidedevent.rb
878
+ - lib/no_response/models/shared/attendeedecidedevent.rbi
875
879
  - lib/no_response/models/shared/attendeedecision.rb
876
880
  - lib/no_response/models/shared/attendeedecision.rbi
881
+ - lib/no_response/models/shared/attendeeflagged.rb
882
+ - lib/no_response/models/shared/attendeeflagged.rbi
883
+ - lib/no_response/models/shared/attendeeflaggedevent.rb
884
+ - lib/no_response/models/shared/attendeeflaggedevent.rbi
885
+ - lib/no_response/models/shared/attendeeflaggedmatchstate.rb
886
+ - lib/no_response/models/shared/attendeeflaggedmatchstate.rbi
877
887
  - lib/no_response/models/shared/attendeeidentity.rb
878
888
  - lib/no_response/models/shared/attendeeidentity.rbi
879
889
  - lib/no_response/models/shared/attendeelist.rb
@@ -1434,6 +1444,14 @@ files:
1434
1444
  - lib/no_response/models/shared/screening_platform.rbi
1435
1445
  - lib/no_response/models/shared/screeningcancelrequest.rb
1436
1446
  - lib/no_response/models/shared/screeningcancelrequest.rbi
1447
+ - lib/no_response/models/shared/screeningcompleted.rb
1448
+ - lib/no_response/models/shared/screeningcompleted.rbi
1449
+ - lib/no_response/models/shared/screeningcompletedbyband.rb
1450
+ - lib/no_response/models/shared/screeningcompletedbyband.rbi
1451
+ - lib/no_response/models/shared/screeningcompletedevent.rb
1452
+ - lib/no_response/models/shared/screeningcompletedevent.rbi
1453
+ - lib/no_response/models/shared/screeningcompletedstatus.rb
1454
+ - lib/no_response/models/shared/screeningcompletedstatus.rbi
1437
1455
  - lib/no_response/models/shared/screeningdepth.rb
1438
1456
  - lib/no_response/models/shared/screeningdepth.rbi
1439
1457
  - lib/no_response/models/shared/screeninglist.rb