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
|
@@ -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,82 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
# The denominator of a screening: accounts found, how many could be read, items read and the period they span, so a clean result is distinct from a person nobody could see.
|
|
8
|
+
class ScreeningCoverage
|
|
9
|
+
extend T::Sig
|
|
10
|
+
include Crystalline::MetadataFields
|
|
11
|
+
|
|
12
|
+
field(
|
|
13
|
+
:accounts_found,
|
|
14
|
+
::Integer,
|
|
15
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("accounts_found"), required: true}}
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
field(
|
|
19
|
+
:accounts_accessible,
|
|
20
|
+
::Integer,
|
|
21
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("accounts_accessible"), required: true}}
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
field(
|
|
25
|
+
:items_read,
|
|
26
|
+
::Integer,
|
|
27
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("items_read"), required: true}}
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
field(
|
|
31
|
+
:platforms,
|
|
32
|
+
Crystalline::Array.new(Models::Shared::ScreeningPlatformCoverage),
|
|
33
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("platforms"), required: true}}
|
|
34
|
+
)
|
|
35
|
+
# The oldest item read on any platform.
|
|
36
|
+
field(
|
|
37
|
+
:period_from,
|
|
38
|
+
Crystalline::Nilable.new(::String),
|
|
39
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("period_from")}}
|
|
40
|
+
)
|
|
41
|
+
# The newest item read on any platform.
|
|
42
|
+
field(
|
|
43
|
+
:period_to,
|
|
44
|
+
Crystalline::Nilable.new(::String),
|
|
45
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("period_to")}}
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
sig {
|
|
49
|
+
params(
|
|
50
|
+
accounts_found: ::Integer,
|
|
51
|
+
accounts_accessible: ::Integer,
|
|
52
|
+
items_read: ::Integer,
|
|
53
|
+
platforms: T::Array[Models::Shared::ScreeningPlatformCoverage],
|
|
54
|
+
period_from: T.nilable(::String),
|
|
55
|
+
period_to: T.nilable(::String)
|
|
56
|
+
)
|
|
57
|
+
.void
|
|
58
|
+
}
|
|
59
|
+
def initialize(accounts_found:, accounts_accessible:, items_read:, platforms:, period_from: nil, period_to: nil)
|
|
60
|
+
@accounts_found = accounts_found
|
|
61
|
+
@accounts_accessible = accounts_accessible
|
|
62
|
+
@items_read = items_read
|
|
63
|
+
@platforms = platforms
|
|
64
|
+
@period_from = period_from
|
|
65
|
+
@period_to = period_to
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
69
|
+
def ==(other)
|
|
70
|
+
return false unless other.is_a?(self.class)
|
|
71
|
+
return false unless @accounts_found == other.accounts_found
|
|
72
|
+
return false unless @accounts_accessible == other.accounts_accessible
|
|
73
|
+
return false unless @items_read == other.items_read
|
|
74
|
+
return false unless @platforms == other.platforms
|
|
75
|
+
return false unless @period_from == other.period_from
|
|
76
|
+
return false unless @period_to == other.period_to
|
|
77
|
+
true
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
class NoResponse::Models::Shared::ScreeningCoverage
|
|
5
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class NoResponse::Models::Shared::ScreeningCoverage
|
|
9
|
+
def accounts_found
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def accounts_found=(str_)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def accounts_accessible
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def accounts_accessible=(str_)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def items_read
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def items_read=(str_)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def platforms
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def platforms=(str_)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def period_from
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def period_from=(str_)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def period_to
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def period_to=(str_)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
# Something the analyser flagged. band is capped by the strongest match among the profiles of its evidence: possible at most moderate, probable at most high. capped_from is the band the analyser gave when the cap lowered it.
|
|
8
|
+
class ScreeningFinding
|
|
9
|
+
extend T::Sig
|
|
10
|
+
include Crystalline::MetadataFields
|
|
11
|
+
|
|
12
|
+
field :id, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("id"), required: true}}
|
|
13
|
+
# 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.
|
|
14
|
+
field(
|
|
15
|
+
:category,
|
|
16
|
+
Models::Shared::FindingCategory,
|
|
17
|
+
{
|
|
18
|
+
'format_json': {
|
|
19
|
+
'letter_case': ::NoResponse::Utils.field_name("category"),
|
|
20
|
+
required: true,
|
|
21
|
+
'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::FindingCategory, false)
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
)
|
|
25
|
+
# How severe a finding is, most severe first.
|
|
26
|
+
field(
|
|
27
|
+
:band,
|
|
28
|
+
Models::Shared::FindingBand,
|
|
29
|
+
{
|
|
30
|
+
'format_json': {
|
|
31
|
+
'letter_case': ::NoResponse::Utils.field_name("band"),
|
|
32
|
+
required: true,
|
|
33
|
+
'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::FindingBand, false)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
field(
|
|
39
|
+
:confidence,
|
|
40
|
+
::Float,
|
|
41
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("confidence"), required: true}}
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
field(
|
|
45
|
+
:rationale,
|
|
46
|
+
::String,
|
|
47
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("rationale"), required: true}}
|
|
48
|
+
)
|
|
49
|
+
# The posts and media that support the finding.
|
|
50
|
+
field(
|
|
51
|
+
:evidence,
|
|
52
|
+
Crystalline::Array.new(::String),
|
|
53
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("evidence"), required: true}}
|
|
54
|
+
)
|
|
55
|
+
# The resolver, collector or analyser that produced a record, by its catalogue name.
|
|
56
|
+
field(
|
|
57
|
+
:analyser,
|
|
58
|
+
::String,
|
|
59
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("analyser"), required: true}}
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
field(
|
|
63
|
+
:model,
|
|
64
|
+
::String,
|
|
65
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("model"), required: true}}
|
|
66
|
+
)
|
|
67
|
+
# What the analysis cost, in US cents.
|
|
68
|
+
field(
|
|
69
|
+
:spend_minor,
|
|
70
|
+
::Integer,
|
|
71
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("spend_minor"), required: true}}
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
field(
|
|
75
|
+
:created_at,
|
|
76
|
+
::String,
|
|
77
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("created_at"), required: true}}
|
|
78
|
+
)
|
|
79
|
+
# How severe a finding is, most severe first.
|
|
80
|
+
field(
|
|
81
|
+
:capped_from,
|
|
82
|
+
Crystalline::Nilable.new(Models::Shared::FindingBand),
|
|
83
|
+
{
|
|
84
|
+
'format_json': {
|
|
85
|
+
'letter_case': ::NoResponse::Utils.field_name("capped_from"),
|
|
86
|
+
'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::FindingBand, true)
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
sig {
|
|
92
|
+
params(
|
|
93
|
+
id: ::String,
|
|
94
|
+
category: Models::Shared::FindingCategory,
|
|
95
|
+
band: Models::Shared::FindingBand,
|
|
96
|
+
confidence: ::Float,
|
|
97
|
+
rationale: ::String,
|
|
98
|
+
evidence: T::Array[::String],
|
|
99
|
+
analyser: ::String,
|
|
100
|
+
model: ::String,
|
|
101
|
+
spend_minor: ::Integer,
|
|
102
|
+
created_at: ::String,
|
|
103
|
+
capped_from: T.nilable(Models::Shared::FindingBand)
|
|
104
|
+
)
|
|
105
|
+
.void
|
|
106
|
+
}
|
|
107
|
+
def initialize(
|
|
108
|
+
id:,
|
|
109
|
+
category:,
|
|
110
|
+
band:,
|
|
111
|
+
confidence:,
|
|
112
|
+
rationale:,
|
|
113
|
+
evidence:,
|
|
114
|
+
analyser:,
|
|
115
|
+
model:,
|
|
116
|
+
spend_minor:,
|
|
117
|
+
created_at:,
|
|
118
|
+
capped_from: nil
|
|
119
|
+
)
|
|
120
|
+
@id = id
|
|
121
|
+
@category = category
|
|
122
|
+
@band = band
|
|
123
|
+
@confidence = confidence
|
|
124
|
+
@rationale = rationale
|
|
125
|
+
@evidence = evidence
|
|
126
|
+
@analyser = analyser
|
|
127
|
+
@model = model
|
|
128
|
+
@spend_minor = spend_minor
|
|
129
|
+
@created_at = created_at
|
|
130
|
+
@capped_from = capped_from
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
134
|
+
def ==(other)
|
|
135
|
+
return false unless other.is_a?(self.class)
|
|
136
|
+
return false unless @id == other.id
|
|
137
|
+
return false unless @category == other.category
|
|
138
|
+
return false unless @band == other.band
|
|
139
|
+
return false unless @confidence == other.confidence
|
|
140
|
+
return false unless @rationale == other.rationale
|
|
141
|
+
return false unless @evidence == other.evidence
|
|
142
|
+
return false unless @analyser == other.analyser
|
|
143
|
+
return false unless @model == other.model
|
|
144
|
+
return false unless @spend_minor == other.spend_minor
|
|
145
|
+
return false unless @created_at == other.created_at
|
|
146
|
+
return false unless @capped_from == other.capped_from
|
|
147
|
+
true
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
class NoResponse::Models::Shared::ScreeningFinding
|
|
5
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class NoResponse::Models::Shared::ScreeningFinding
|
|
9
|
+
def id
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def id=(str_)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def category
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def category=(str_)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def band
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def band=(str_)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def confidence
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def confidence=(str_)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def rationale
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def rationale=(str_)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def evidence
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def evidence=(str_)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def analyser
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def analyser=(str_)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def model
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def model=(str_)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def spend_minor
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def spend_minor=(str_)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def created_at
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def created_at=(str_)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def capped_from
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def capped_from=(str_)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
# How a profile was matched to the attendee: the state its evidence earns, and the evidence.
|
|
8
|
+
class ScreeningMatch
|
|
9
|
+
extend T::Sig
|
|
10
|
+
include Crystalline::MetadataFields
|
|
11
|
+
|
|
12
|
+
# 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.
|
|
13
|
+
field(
|
|
14
|
+
:state,
|
|
15
|
+
Models::Shared::ProfileMatchState,
|
|
16
|
+
{
|
|
17
|
+
'format_json': {
|
|
18
|
+
'letter_case': ::NoResponse::Utils.field_name("state"),
|
|
19
|
+
required: true,
|
|
20
|
+
'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::ProfileMatchState, false)
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
field(
|
|
26
|
+
:evidence,
|
|
27
|
+
Crystalline::Array.new(Models::Shared::ScreeningMatchEvidence),
|
|
28
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("evidence"), required: true}}
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
sig {
|
|
32
|
+
params(state: Models::Shared::ProfileMatchState, evidence: T::Array[Models::Shared::ScreeningMatchEvidence])
|
|
33
|
+
.void
|
|
34
|
+
}
|
|
35
|
+
def initialize(state:, evidence:)
|
|
36
|
+
@state = state
|
|
37
|
+
@evidence = evidence
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
41
|
+
def ==(other)
|
|
42
|
+
return false unless other.is_a?(self.class)
|
|
43
|
+
return false unless @state == other.state
|
|
44
|
+
return false unless @evidence == other.evidence
|
|
45
|
+
true
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
class NoResponse::Models::Shared::ScreeningMatch
|
|
5
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class NoResponse::Models::Shared::ScreeningMatch
|
|
9
|
+
def state
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def state=(str_)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def evidence
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def evidence=(str_)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module NoResponse
|
|
5
|
+
module Models
|
|
6
|
+
module Shared
|
|
7
|
+
# One identifier that ties a profile to the attendee.
|
|
8
|
+
class ScreeningMatchEvidence
|
|
9
|
+
extend T::Sig
|
|
10
|
+
include Crystalline::MetadataFields
|
|
11
|
+
|
|
12
|
+
# What matched. email, phone, supplied_handle and source_fact are hard identifiers; company, city and school are soft.
|
|
13
|
+
field(
|
|
14
|
+
:kind,
|
|
15
|
+
Models::Shared::ScreeningMatchEvidenceKind,
|
|
16
|
+
{
|
|
17
|
+
'format_json': {
|
|
18
|
+
'letter_case': ::NoResponse::Utils.field_name("kind"),
|
|
19
|
+
required: true,
|
|
20
|
+
'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::ScreeningMatchEvidenceKind, false)
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
)
|
|
24
|
+
# The resolver, collector or analyser that produced a record, by its catalogue name.
|
|
25
|
+
field(
|
|
26
|
+
:resolver,
|
|
27
|
+
::String,
|
|
28
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("resolver"), required: true}}
|
|
29
|
+
)
|
|
30
|
+
# Where the match was seen, such as the profile field that carried it.
|
|
31
|
+
field(
|
|
32
|
+
:detail,
|
|
33
|
+
Crystalline::Nilable.new(::String),
|
|
34
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("detail")}}
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
sig {
|
|
38
|
+
params(kind: Models::Shared::ScreeningMatchEvidenceKind, resolver: ::String, detail: T.nilable(::String)).void
|
|
39
|
+
}
|
|
40
|
+
def initialize(kind:, resolver:, detail: nil)
|
|
41
|
+
@kind = kind
|
|
42
|
+
@resolver = resolver
|
|
43
|
+
@detail = detail
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
47
|
+
def ==(other)
|
|
48
|
+
return false unless other.is_a?(self.class)
|
|
49
|
+
return false unless @kind == other.kind
|
|
50
|
+
return false unless @resolver == other.resolver
|
|
51
|
+
return false unless @detail == other.detail
|
|
52
|
+
true
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
class NoResponse::Models::Shared::ScreeningMatchEvidence
|
|
5
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class NoResponse::Models::Shared::ScreeningMatchEvidence
|
|
9
|
+
def kind
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def kind=(str_)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def resolver
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def resolver=(str_)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def detail
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def detail=(str_)
|
|
25
|
+
end
|
|
26
|
+
end
|