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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/lib/no_response/events.rb +1 -1
  3. data/lib/no_response/models/shared/attendeedecided.rb +89 -0
  4. data/lib/no_response/models/shared/attendeedecided.rbi +44 -0
  5. data/lib/no_response/models/shared/attendeedecidedevent.rb +70 -0
  6. data/lib/no_response/models/shared/attendeedecidedevent.rbi +38 -0
  7. data/lib/no_response/models/shared/attendeeflagged.rb +95 -0
  8. data/lib/no_response/models/shared/attendeeflagged.rbi +44 -0
  9. data/lib/no_response/models/shared/attendeeflaggedevent.rb +70 -0
  10. data/lib/no_response/models/shared/attendeeflaggedevent.rbi +38 -0
  11. data/lib/no_response/models/shared/attendeeflaggedmatchstate.rb +19 -0
  12. data/lib/no_response/models/shared/attendeeflaggedmatchstate.rbi +9 -0
  13. data/lib/no_response/models/shared/conflicterrorcode.rb +1 -0
  14. data/lib/no_response/models/shared/metric.rb +2 -1
  15. data/lib/no_response/models/shared/policyhistoryitem.rb +1 -1
  16. data/lib/no_response/models/shared/screening.rb +20 -0
  17. data/lib/no_response/models/shared/screening.rbi +12 -0
  18. data/lib/no_response/models/shared/screeningcompleted.rb +146 -0
  19. data/lib/no_response/models/shared/screeningcompleted.rbi +74 -0
  20. data/lib/no_response/models/shared/screeningcompletedbyband.rb +52 -0
  21. data/lib/no_response/models/shared/screeningcompletedbyband.rbi +38 -0
  22. data/lib/no_response/models/shared/screeningcompletedevent.rb +70 -0
  23. data/lib/no_response/models/shared/screeningcompletedevent.rbi +38 -0
  24. data/lib/no_response/models/shared/screeningcompletedstatus.rb +17 -0
  25. data/lib/no_response/models/shared/screeningcompletedstatus.rbi +9 -0
  26. data/lib/no_response/models/shared/settings.rb +13 -3
  27. data/lib/no_response/models/shared/settings.rbi +6 -0
  28. data/lib/no_response/models/shared/settingsrequest.rb +12 -2
  29. data/lib/no_response/models/shared/settingsrequest.rbi +6 -0
  30. data/lib/no_response/models/shared/usage.rb +1 -1
  31. data/lib/no_response/models/shared/usagecount.rb +1 -1
  32. data/lib/no_response/models/shared/webhookdeliveryattempt.rb +1 -1
  33. data/lib/no_response/models/shared/webhookreplay.rb +1 -1
  34. data/lib/no_response/models/shared.rb +9 -0
  35. data/lib/no_response/sdkconfiguration.rb +2 -2
  36. data/lib/no_response/settings.rb +2 -2
  37. data/lib/no_response/usage.rb +1 -1
  38. data/lib/no_response/webhook_verification.rb +8 -2
  39. metadata +19 -1
@@ -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
@@ -4,7 +4,7 @@
4
4
  module NoResponse
5
5
  module Models
6
6
  module Shared
7
- # 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, and the sources it refuses. 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.
7
+ # 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.
8
8
  class Settings
9
9
  extend T::Sig
10
10
  include Crystalline::MetadataFields
@@ -63,6 +63,12 @@ module NoResponse
63
63
  Crystalline::Nilable.new(::String),
64
64
  {'format_json': {'letter_case': ::NoResponse::Utils.field_name("updated_at")}}
65
65
  )
66
+ # The most the environment's screenings may spend in one UTC day, in minor units of USD (cents), 0 to 100000000; null is no cap. Default 50000. A screening whose estimated_spend exceeds the cap less the day's recorded spend and what open screenings may still spend answers 409 screening_cap_exceeded.
67
+ field(
68
+ :screening_daily_cap,
69
+ Crystalline::Nilable.new(::Integer),
70
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("screening_daily_cap"), required: true}}
71
+ )
66
72
 
67
73
  sig {
68
74
  params(
@@ -73,7 +79,8 @@ module NoResponse
73
79
  flows: Models::Shared::SettingsFlows,
74
80
  refused_sources: T::Array[Models::Shared::SourceId],
75
81
  updated_by: T.nilable(::String),
76
- updated_at: T.nilable(::String)
82
+ updated_at: T.nilable(::String),
83
+ screening_daily_cap: T.nilable(::Integer)
77
84
  )
78
85
  .void
79
86
  }
@@ -85,7 +92,8 @@ module NoResponse
85
92
  flows:,
86
93
  refused_sources:,
87
94
  updated_by: nil,
88
- updated_at: nil
95
+ updated_at: nil,
96
+ screening_daily_cap: nil
89
97
  )
90
98
  @workspace_id = workspace_id
91
99
  @environment = environment
@@ -95,6 +103,7 @@ module NoResponse
95
103
  @refused_sources = refused_sources
96
104
  @updated_by = updated_by
97
105
  @updated_at = updated_at
106
+ @screening_daily_cap = screening_daily_cap
98
107
  end
99
108
 
100
109
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -108,6 +117,7 @@ module NoResponse
108
117
  return false unless @refused_sources == other.refused_sources
109
118
  return false unless @updated_by == other.updated_by
110
119
  return false unless @updated_at == other.updated_at
120
+ return false unless @screening_daily_cap == other.screening_daily_cap
111
121
  true
112
122
  end
113
123
  end
@@ -53,4 +53,10 @@ class NoResponse::Models::Shared::Settings
53
53
 
54
54
  def updated_at=(str_)
55
55
  end
56
+
57
+ def screening_daily_cap
58
+ end
59
+
60
+ def screening_daily_cap=(str_)
61
+ end
56
62
  end
@@ -38,6 +38,12 @@ module NoResponse
38
38
  Crystalline::Nilable.new(::String),
39
39
  {'format_json': {'letter_case': ::NoResponse::Utils.field_name("change_reason")}}
40
40
  )
41
+ # Replaces the daily screening cap, in minor units of USD; null removes the cap. Needs settings.write only, like retention_days.
42
+ field(
43
+ :screening_daily_cap,
44
+ Crystalline::Nilable.new(::Integer),
45
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("screening_daily_cap")}}
46
+ )
41
47
 
42
48
  sig {
43
49
  params(
@@ -45,7 +51,8 @@ module NoResponse
45
51
  refused_sources: T.nilable(T::Array[Models::Shared::SourceId]),
46
52
  flows: T.nilable(Models::Shared::SettingsRequestFlows),
47
53
  expected_policy_version: T.nilable(::Integer),
48
- change_reason: T.nilable(::String)
54
+ change_reason: T.nilable(::String),
55
+ screening_daily_cap: T.nilable(::Integer)
49
56
  )
50
57
  .void
51
58
  }
@@ -54,13 +61,15 @@ module NoResponse
54
61
  refused_sources: nil,
55
62
  flows: nil,
56
63
  expected_policy_version: nil,
57
- change_reason: nil
64
+ change_reason: nil,
65
+ screening_daily_cap: nil
58
66
  )
59
67
  @retention_days = retention_days
60
68
  @refused_sources = refused_sources
61
69
  @flows = flows
62
70
  @expected_policy_version = expected_policy_version
63
71
  @change_reason = change_reason
72
+ @screening_daily_cap = screening_daily_cap
64
73
  end
65
74
 
66
75
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -71,6 +80,7 @@ module NoResponse
71
80
  return false unless @flows == other.flows
72
81
  return false unless @expected_policy_version == other.expected_policy_version
73
82
  return false unless @change_reason == other.change_reason
83
+ return false unless @screening_daily_cap == other.screening_daily_cap
74
84
  true
75
85
  end
76
86
  end
@@ -35,4 +35,10 @@ class NoResponse::Models::Shared::SettingsRequest
35
35
 
36
36
  def change_reason=(str_)
37
37
  end
38
+
39
+ def screening_daily_cap
40
+ end
41
+
42
+ def screening_daily_cap=(str_)
43
+ end
38
44
  end
@@ -4,7 +4,7 @@
4
4
  module NoResponse
5
5
  module Models
6
6
  module Shared
7
- # Body of the 200 answer to GET /v1/workspaces/{workspace_id}/usage: what the workspace's environments were metered for on each UTC day from from through to. Each billable unit is counted once, where it becomes final: an assessment when it is admitted (by flow and depth), a webhook delivery once per event per endpoint (retries and replays add nothing), and a key-usage event once when the ingest accepts it. A count does not change when the assessment, account or workspace is later deleted. A day, environment or metric with nothing counted has no item. No prices or billing. console_lookups is the one limit: the live environment's daily cap on console lookups, as spent today.
7
+ # Body of the 200 answer to GET /v1/workspaces/{workspace_id}/usage: what the workspace's environments were metered for on each UTC day from from through to. Each billable unit is counted once, where it becomes final: an assessment when it is admitted (by flow and depth), a webhook delivery once per event per endpoint (retries and replays add nothing), a key-usage event once when the ingest accepts it, and a screened attendee once per screening when its result is recorded. A count does not change when the assessment, account or workspace is later deleted. A day, environment or metric with nothing counted has no item. No prices or billing; screening spend is in each screening's spent. console_lookups is the one limit: the live environment's daily cap on console lookups, as spent today.
8
8
  class Usage
9
9
  extend T::Sig
10
10
  include Crystalline::MetadataFields
@@ -22,7 +22,7 @@ module NoResponse
22
22
  )
23
23
 
24
24
  field :day, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("day"), required: true}}
25
- # assessments: assessments admitted. webhook_deliveries: events sent to endpoints, one per event per endpoint. key_usage_events: key-usage events accepted.
25
+ # 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.
26
26
  field(
27
27
  :metric,
28
28
  Models::Shared::Metric,
@@ -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.10"
98
+ @sdk_version = "10.0.12"
99
99
  @gen_version = "internal"
100
- @user_agent = "noresponse-sdk/ruby 10.0.10 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]]) }