noresponse 10.0.10 → 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.
- checksums.yaml +4 -4
- data/lib/no_response/events.rb +1 -1
- 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/conflicterrorcode.rb +1 -0
- data/lib/no_response/models/shared/metric.rb +2 -1
- data/lib/no_response/models/shared/policyhistoryitem.rb +1 -1
- data/lib/no_response/models/shared/screening.rb +20 -0
- 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/settings.rb +13 -3
- data/lib/no_response/models/shared/settings.rbi +6 -0
- data/lib/no_response/models/shared/settingsrequest.rb +12 -2
- data/lib/no_response/models/shared/settingsrequest.rbi +6 -0
- data/lib/no_response/models/shared/usage.rb +1 -1
- data/lib/no_response/models/shared/usagecount.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 +9 -0
- data/lib/no_response/sdkconfiguration.rb +2 -2
- data/lib/no_response/settings.rb +2 -2
- data/lib/no_response/usage.rb +1 -1
- data/lib/no_response/webhook_verification.rb +8 -2
- metadata +19 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5d85291717a92183c2302b31d3d0f62582b5561a73c71ad96653471708f6f320
|
|
4
|
+
data.tar.gz: 21707ffd2be377765fbb485bb748edfd1f4aade4891ca596926088ccc0f7acc9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: faaf0a015394cdd88127765ae24a0674c25196b492d0b45b9b161af3b970c84ebe96a78e03939e39f843ca56e3327da05f0b635dd7b37d2fe80c6dc90d88dd75
|
|
7
|
+
data.tar.gz: 926780bbb6c32c1fe083c8600d760c1e78c30f23e4bab8d5d5d694b0d95afb173f17082c8e3a8de294888462bd38468bbc38f90b098c3520513702d9ad60395e
|
data/lib/no_response/events.rb
CHANGED
|
@@ -3029,7 +3029,7 @@ module NoResponse
|
|
|
3029
3029
|
http_headers: nil
|
|
3030
3030
|
)
|
|
3031
3031
|
# start_screening - Start a screening.
|
|
3032
|
-
# Start a screening of new attendees and everyone on watch or escalated, with an Idempotency-Key. It finishes completed, partial or failed minutes to hours later; poll it. The test environment screens with stand-ins that find no accounts.
|
|
3032
|
+
# Start a screening of new attendees and everyone on watch or escalated, with an Idempotency-Key. It finishes completed, partial or failed minutes to hours later; poll it. The answer carries estimated_spend; a screening whose estimate exceeds what the daily screening cap has left answers 409 screening_cap_exceeded. The test environment screens with stand-ins that find no accounts.
|
|
3033
3033
|
request = Models::Operations::StartScreeningRequest.new(
|
|
3034
3034
|
workspace_id: workspace_id,
|
|
3035
3035
|
environment: environment,
|
|
@@ -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
|
|
@@ -36,6 +36,7 @@ module NoResponse
|
|
|
36
36
|
AGGREGATE_ERASED_DATA = new("aggregate_erased_data")
|
|
37
37
|
EVENT_CONFLICT = new("event_conflict")
|
|
38
38
|
EVENT_LIMIT_REACHED = new("event_limit_reached")
|
|
39
|
+
SCREENING_CAP_EXCEEDED = new("screening_cap_exceeded")
|
|
39
40
|
SCREENING_UNAVAILABLE = new("screening_unavailable")
|
|
40
41
|
end
|
|
41
42
|
|
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
module NoResponse
|
|
5
5
|
module Models
|
|
6
6
|
module Shared
|
|
7
|
-
# Metric - assessments: assessments admitted. webhook_deliveries: events sent to endpoints, one per event per endpoint. key_usage_events: key-usage events accepted.
|
|
7
|
+
# Metric - assessments: assessments admitted. webhook_deliveries: events sent to endpoints, one per event per endpoint. key_usage_events: key-usage events accepted. screenings: attendees a screening recorded a final result for, one per attendee per screening; a failed attendee counts nothing.
|
|
8
8
|
class Metric
|
|
9
9
|
include ::Crystalline::Enum
|
|
10
10
|
enums do
|
|
11
11
|
ASSESSMENTS = new("assessments")
|
|
12
12
|
WEBHOOK_DELIVERIES = new("webhook_deliveries")
|
|
13
13
|
KEY_USAGE_EVENTS = new("key_usage_events")
|
|
14
|
+
SCREENINGS = new("screenings")
|
|
14
15
|
end
|
|
15
16
|
|
|
16
17
|
open!
|
|
@@ -9,7 +9,7 @@ module NoResponse
|
|
|
9
9
|
extend T::Sig
|
|
10
10
|
include Crystalline::MetadataFields
|
|
11
11
|
|
|
12
|
-
# One environment's settings: how long its assessments are kept, and for each flow the risk thresholds that decide it and the depth a request that names none is served at,
|
|
12
|
+
# One environment's settings: how long its assessments are kept, and for each flow the risk thresholds that decide it and the depth a request that names none is served at, the sources it refuses, and the daily cap on screening spend. Live and test each have their own. A flow without thresholds of its own uses account_creation's (inherits_account_creation). Every change is recorded in the audit log as settings.updated, with who made it.
|
|
13
13
|
field(
|
|
14
14
|
:settings,
|
|
15
15
|
Models::Shared::Settings,
|
|
@@ -100,6 +100,18 @@ module NoResponse
|
|
|
100
100
|
::Integer,
|
|
101
101
|
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("attendees_failed"), required: true}}
|
|
102
102
|
)
|
|
103
|
+
# 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
|
+
field(
|
|
105
|
+
:estimated_spend,
|
|
106
|
+
::Integer,
|
|
107
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("estimated_spend"), required: true}}
|
|
108
|
+
)
|
|
109
|
+
# What the attendees it has screened recorded, in minor units of USD. Each counts toward the UTC day it was recorded on; a failed attendee records nothing.
|
|
110
|
+
field(
|
|
111
|
+
:spent,
|
|
112
|
+
::Integer,
|
|
113
|
+
{'format_json': {'letter_case': ::NoResponse::Utils.field_name("spent"), required: true}}
|
|
114
|
+
)
|
|
103
115
|
|
|
104
116
|
field(
|
|
105
117
|
:started_at,
|
|
@@ -134,6 +146,8 @@ module NoResponse
|
|
|
134
146
|
attendees_done: ::Integer,
|
|
135
147
|
attendees_flagged: ::Integer,
|
|
136
148
|
attendees_failed: ::Integer,
|
|
149
|
+
estimated_spend: ::Integer,
|
|
150
|
+
spent: ::Integer,
|
|
137
151
|
started_at: T.nilable(::String),
|
|
138
152
|
finished_at: T.nilable(::String),
|
|
139
153
|
error_code: T.nilable(::String)
|
|
@@ -154,6 +168,8 @@ module NoResponse
|
|
|
154
168
|
attendees_done:,
|
|
155
169
|
attendees_flagged:,
|
|
156
170
|
attendees_failed:,
|
|
171
|
+
estimated_spend:,
|
|
172
|
+
spent:,
|
|
157
173
|
started_at: nil,
|
|
158
174
|
finished_at: nil,
|
|
159
175
|
error_code: nil
|
|
@@ -171,6 +187,8 @@ module NoResponse
|
|
|
171
187
|
@attendees_done = attendees_done
|
|
172
188
|
@attendees_flagged = attendees_flagged
|
|
173
189
|
@attendees_failed = attendees_failed
|
|
190
|
+
@estimated_spend = estimated_spend
|
|
191
|
+
@spent = spent
|
|
174
192
|
@started_at = started_at
|
|
175
193
|
@finished_at = finished_at
|
|
176
194
|
@error_code = error_code
|
|
@@ -192,6 +210,8 @@ module NoResponse
|
|
|
192
210
|
return false unless @attendees_done == other.attendees_done
|
|
193
211
|
return false unless @attendees_flagged == other.attendees_flagged
|
|
194
212
|
return false unless @attendees_failed == other.attendees_failed
|
|
213
|
+
return false unless @estimated_spend == other.estimated_spend
|
|
214
|
+
return false unless @spent == other.spent
|
|
195
215
|
return false unless @started_at == other.started_at
|
|
196
216
|
return false unless @finished_at == other.finished_at
|
|
197
217
|
return false unless @error_code == other.error_code
|
|
@@ -84,6 +84,18 @@ class NoResponse::Models::Shared::Screening
|
|
|
84
84
|
def attendees_failed=(str_)
|
|
85
85
|
end
|
|
86
86
|
|
|
87
|
+
def estimated_spend
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def estimated_spend=(str_)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def spent
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def spent=(str_)
|
|
97
|
+
end
|
|
98
|
+
|
|
87
99
|
def started_at
|
|
88
100
|
end
|
|
89
101
|
|