context.dev 1.36.0 → 2.0.0
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/CHANGELOG.md +24 -0
- data/README.md +16 -9
- data/lib/context_dev/client.rb +7 -0
- data/lib/context_dev/models/brand_retrieve_params.rb +1036 -174
- data/lib/context_dev/models/monitor_create_params.rb +361 -0
- data/lib/context_dev/models/monitor_create_response.rb +484 -0
- data/lib/context_dev/models/monitor_delete_params.rb +20 -0
- data/lib/context_dev/models/monitor_delete_response.rb +22 -0
- data/lib/context_dev/models/monitor_list_account_changes_params.rb +93 -0
- data/lib/context_dev/models/monitor_list_account_changes_response.rb +199 -0
- data/lib/context_dev/models/monitor_list_account_runs_params.rb +55 -0
- data/lib/context_dev/models/monitor_list_account_runs_response.rb +227 -0
- data/lib/context_dev/models/monitor_list_changes_params.rb +57 -0
- data/lib/context_dev/models/monitor_list_changes_response.rb +198 -0
- data/lib/context_dev/models/monitor_list_params.rb +161 -0
- data/lib/context_dev/models/monitor_list_response.rb +507 -0
- data/lib/context_dev/models/monitor_list_runs_params.rb +62 -0
- data/lib/context_dev/models/monitor_list_runs_response.rb +227 -0
- data/lib/context_dev/models/monitor_retrieve_change_params.rb +20 -0
- data/lib/context_dev/models/monitor_retrieve_change_response.rb +271 -0
- data/lib/context_dev/models/monitor_retrieve_params.rb +20 -0
- data/lib/context_dev/models/monitor_retrieve_response.rb +484 -0
- data/lib/context_dev/models/monitor_run_params.rb +20 -0
- data/lib/context_dev/models/monitor_run_response.rb +35 -0
- data/lib/context_dev/models/monitor_update_params.rb +368 -0
- data/lib/context_dev/models/monitor_update_response.rb +484 -0
- data/lib/context_dev/models/utility_prefetch_params.rb +70 -6
- data/lib/context_dev/models/utility_prefetch_response.rb +23 -1
- data/lib/context_dev/models/web_extract_response.rb +17 -1
- data/lib/context_dev/models/web_web_crawl_md_params.rb +11 -1
- data/lib/context_dev/models/web_web_scrape_html_params.rb +11 -1
- data/lib/context_dev/models/web_web_scrape_html_response.rb +10 -2
- data/lib/context_dev/models/web_web_scrape_images_params.rb +12 -1
- data/lib/context_dev/models/web_web_scrape_md_params.rb +11 -1
- data/lib/context_dev/models.rb +20 -12
- data/lib/context_dev/resources/ai.rb +0 -33
- data/lib/context_dev/resources/brand.rb +7 -204
- data/lib/context_dev/resources/monitors.rb +352 -0
- data/lib/context_dev/resources/utility.rb +9 -35
- data/lib/context_dev/resources/web.rb +14 -4
- data/lib/context_dev/version.rb +1 -1
- data/lib/context_dev.rb +23 -14
- data/rbi/context_dev/client.rbi +6 -0
- data/rbi/context_dev/models/brand_retrieve_params.rbi +3792 -679
- data/rbi/context_dev/models/monitor_create_params.rbi +640 -0
- data/rbi/context_dev/models/monitor_create_response.rbi +820 -0
- data/rbi/context_dev/models/monitor_delete_params.rbi +35 -0
- data/rbi/context_dev/models/monitor_delete_response.rbi +29 -0
- data/rbi/context_dev/models/monitor_list_account_changes_params.rbi +211 -0
- data/rbi/context_dev/models/monitor_list_account_changes_response.rbi +376 -0
- data/rbi/context_dev/models/monitor_list_account_runs_params.rbi +125 -0
- data/rbi/context_dev/models/monitor_list_account_runs_response.rbi +464 -0
- data/rbi/context_dev/models/monitor_list_changes_params.rbi +91 -0
- data/rbi/context_dev/models/monitor_list_changes_response.rbi +372 -0
- data/rbi/context_dev/models/monitor_list_params.rbi +332 -0
- data/rbi/context_dev/models/monitor_list_response.rbi +885 -0
- data/rbi/context_dev/models/monitor_list_runs_params.rbi +125 -0
- data/rbi/context_dev/models/monitor_list_runs_response.rbi +455 -0
- data/rbi/context_dev/models/monitor_retrieve_change_params.rbi +38 -0
- data/rbi/context_dev/models/monitor_retrieve_change_response.rbi +478 -0
- data/rbi/context_dev/models/monitor_retrieve_params.rbi +38 -0
- data/rbi/context_dev/models/monitor_retrieve_response.rbi +828 -0
- data/rbi/context_dev/models/monitor_run_params.rbi +35 -0
- data/rbi/context_dev/models/monitor_run_response.rbi +48 -0
- data/rbi/context_dev/models/monitor_update_params.rbi +680 -0
- data/rbi/context_dev/models/monitor_update_response.rbi +820 -0
- data/rbi/context_dev/models/utility_prefetch_params.rbi +129 -7
- data/rbi/context_dev/models/utility_prefetch_response.rbi +55 -3
- data/rbi/context_dev/models/web_extract_response.rbi +10 -0
- data/rbi/context_dev/models/web_web_crawl_md_params.rbi +15 -0
- data/rbi/context_dev/models/web_web_scrape_html_params.rbi +15 -0
- data/rbi/context_dev/models/web_web_scrape_html_response.rbi +29 -3
- data/rbi/context_dev/models/web_web_scrape_images_params.rbi +17 -0
- data/rbi/context_dev/models/web_web_scrape_md_params.rbi +15 -0
- data/rbi/context_dev/models.rbi +23 -15
- data/rbi/context_dev/resources/ai.rbi +0 -28
- data/rbi/context_dev/resources/brand.rbi +13 -228
- data/rbi/context_dev/resources/monitors.rbi +286 -0
- data/rbi/context_dev/resources/utility.rbi +14 -29
- data/rbi/context_dev/resources/web.rbi +21 -0
- data/sig/context_dev/client.rbs +2 -0
- data/sig/context_dev/models/brand_retrieve_params.rbs +1560 -281
- data/sig/context_dev/models/monitor_create_params.rbs +311 -0
- data/sig/context_dev/models/monitor_create_response.rbs +369 -0
- data/sig/context_dev/models/monitor_delete_params.rbs +23 -0
- data/sig/context_dev/models/monitor_delete_response.rbs +15 -0
- data/sig/context_dev/models/monitor_list_account_changes_params.rbs +104 -0
- data/sig/context_dev/models/monitor_list_account_changes_response.rbs +176 -0
- data/sig/context_dev/models/monitor_list_account_runs_params.rbs +58 -0
- data/sig/context_dev/models/monitor_list_account_runs_response.rbs +184 -0
- data/sig/context_dev/models/monitor_list_changes_params.rbs +61 -0
- data/sig/context_dev/models/monitor_list_changes_response.rbs +176 -0
- data/sig/context_dev/models/monitor_list_params.rbs +160 -0
- data/sig/context_dev/models/monitor_list_response.rbs +396 -0
- data/sig/context_dev/models/monitor_list_runs_params.rbs +63 -0
- data/sig/context_dev/models/monitor_list_runs_response.rbs +184 -0
- data/sig/context_dev/models/monitor_retrieve_change_params.rbs +23 -0
- data/sig/context_dev/models/monitor_retrieve_change_response.rbs +228 -0
- data/sig/context_dev/models/monitor_retrieve_params.rbs +23 -0
- data/sig/context_dev/models/monitor_retrieve_response.rbs +369 -0
- data/sig/context_dev/models/monitor_run_params.rbs +23 -0
- data/sig/context_dev/models/monitor_run_response.rbs +18 -0
- data/sig/context_dev/models/monitor_update_params.rbs +331 -0
- data/sig/context_dev/models/monitor_update_response.rbs +369 -0
- data/sig/context_dev/models/utility_prefetch_params.rbs +52 -4
- data/sig/context_dev/models/utility_prefetch_response.rbs +22 -3
- data/sig/context_dev/models/web_extract_response.rbs +5 -0
- data/sig/context_dev/models/web_web_crawl_md_params.rbs +7 -0
- data/sig/context_dev/models/web_web_scrape_html_params.rbs +7 -0
- data/sig/context_dev/models/web_web_scrape_html_response.rbs +8 -0
- data/sig/context_dev/models/web_web_scrape_images_params.rbs +7 -0
- data/sig/context_dev/models/web_web_scrape_md_params.rbs +7 -0
- data/sig/context_dev/models.rbs +20 -12
- data/sig/context_dev/resources/ai.rbs +0 -8
- data/sig/context_dev/resources/brand.rbs +1 -56
- data/sig/context_dev/resources/monitors.rbs +101 -0
- data/sig/context_dev/resources/utility.rbs +2 -7
- data/sig/context_dev/resources/web.rbs +4 -0
- metadata +71 -44
- data/lib/context_dev/models/ai_ai_query_params.rb +0 -235
- data/lib/context_dev/models/ai_ai_query_response.rb +0 -133
- data/lib/context_dev/models/brand_identify_from_transaction_params.rb +0 -474
- data/lib/context_dev/models/brand_identify_from_transaction_response.rb +0 -1074
- data/lib/context_dev/models/brand_retrieve_by_email_params.rb +0 -195
- data/lib/context_dev/models/brand_retrieve_by_email_response.rb +0 -1071
- data/lib/context_dev/models/brand_retrieve_by_isin_params.rb +0 -195
- data/lib/context_dev/models/brand_retrieve_by_isin_response.rb +0 -1070
- data/lib/context_dev/models/brand_retrieve_by_name_params.rb +0 -452
- data/lib/context_dev/models/brand_retrieve_by_name_response.rb +0 -1070
- data/lib/context_dev/models/brand_retrieve_by_ticker_params.rb +0 -283
- data/lib/context_dev/models/brand_retrieve_by_ticker_response.rb +0 -1072
- data/lib/context_dev/models/utility_prefetch_by_email_params.rb +0 -37
- data/lib/context_dev/models/utility_prefetch_by_email_response.rb +0 -68
- data/rbi/context_dev/models/ai_ai_query_params.rbi +0 -504
- data/rbi/context_dev/models/ai_ai_query_response.rbi +0 -267
- data/rbi/context_dev/models/brand_identify_from_transaction_params.rbi +0 -2020
- data/rbi/context_dev/models/brand_identify_from_transaction_response.rbi +0 -3515
- data/rbi/context_dev/models/brand_retrieve_by_email_params.rbi +0 -743
- data/rbi/context_dev/models/brand_retrieve_by_email_response.rbi +0 -3511
- data/rbi/context_dev/models/brand_retrieve_by_isin_params.rbi +0 -743
- data/rbi/context_dev/models/brand_retrieve_by_isin_response.rbi +0 -3510
- data/rbi/context_dev/models/brand_retrieve_by_name_params.rbi +0 -1982
- data/rbi/context_dev/models/brand_retrieve_by_name_response.rbi +0 -3510
- data/rbi/context_dev/models/brand_retrieve_by_ticker_params.rbi +0 -1153
- data/rbi/context_dev/models/brand_retrieve_by_ticker_response.rbi +0 -3512
- data/rbi/context_dev/models/utility_prefetch_by_email_params.rbi +0 -65
- data/rbi/context_dev/models/utility_prefetch_by_email_response.rbi +0 -132
- data/sig/context_dev/models/ai_ai_query_params.rbs +0 -218
- data/sig/context_dev/models/ai_ai_query_response.rbs +0 -121
- data/sig/context_dev/models/brand_identify_from_transaction_params.rbs +0 -822
- data/sig/context_dev/models/brand_identify_from_transaction_response.rbs +0 -1441
- data/sig/context_dev/models/brand_retrieve_by_email_params.rbs +0 -305
- data/sig/context_dev/models/brand_retrieve_by_email_response.rbs +0 -1441
- data/sig/context_dev/models/brand_retrieve_by_isin_params.rbs +0 -305
- data/sig/context_dev/models/brand_retrieve_by_isin_response.rbs +0 -1441
- data/sig/context_dev/models/brand_retrieve_by_name_params.rbs +0 -801
- data/sig/context_dev/models/brand_retrieve_by_name_response.rbs +0 -1441
- data/sig/context_dev/models/brand_retrieve_by_ticker_params.rbs +0 -467
- data/sig/context_dev/models/brand_retrieve_by_ticker_response.rbs +0 -1441
- data/sig/context_dev/models/utility_prefetch_by_email_params.rbs +0 -30
- data/sig/context_dev/models/utility_prefetch_by_email_response.rbs +0 -64
|
@@ -0,0 +1,820 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module ContextDev
|
|
4
|
+
module Models
|
|
5
|
+
class MonitorUpdateResponse < ContextDev::Internal::Type::BaseModel
|
|
6
|
+
OrHash =
|
|
7
|
+
T.type_alias do
|
|
8
|
+
T.any(
|
|
9
|
+
ContextDev::Models::MonitorUpdateResponse,
|
|
10
|
+
ContextDev::Internal::AnyHash
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
sig { returns(String) }
|
|
15
|
+
attr_accessor :id
|
|
16
|
+
|
|
17
|
+
# Discriminated union describing how changes are detected.
|
|
18
|
+
sig do
|
|
19
|
+
returns(
|
|
20
|
+
ContextDev::Models::MonitorUpdateResponse::ChangeDetection::Variants
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
attr_accessor :change_detection
|
|
24
|
+
|
|
25
|
+
sig { returns(Time) }
|
|
26
|
+
attr_accessor :created_at
|
|
27
|
+
|
|
28
|
+
# Top-level monitor category. Always `web` today; the concrete behavior is
|
|
29
|
+
# described by `target` and `change_detection`.
|
|
30
|
+
sig do
|
|
31
|
+
returns(ContextDev::Models::MonitorUpdateResponse::Mode::TaggedSymbol)
|
|
32
|
+
end
|
|
33
|
+
attr_accessor :mode
|
|
34
|
+
|
|
35
|
+
sig { returns(String) }
|
|
36
|
+
attr_accessor :name
|
|
37
|
+
|
|
38
|
+
# Run the monitor on a fixed interval defined by a frequency and a unit, e.g.
|
|
39
|
+
# every 6 hours or every 2 days. The total interval (frequency × unit) must be
|
|
40
|
+
# between 10 minutes and 1 year.
|
|
41
|
+
sig { returns(ContextDev::Models::MonitorUpdateResponse::Schedule) }
|
|
42
|
+
attr_reader :schedule
|
|
43
|
+
|
|
44
|
+
sig do
|
|
45
|
+
params(
|
|
46
|
+
schedule: ContextDev::Models::MonitorUpdateResponse::Schedule::OrHash
|
|
47
|
+
).void
|
|
48
|
+
end
|
|
49
|
+
attr_writer :schedule
|
|
50
|
+
|
|
51
|
+
# Monitor lifecycle status. `failed` means the most recent run failed (see the
|
|
52
|
+
# monitor's `last_error`); failed monitors keep running on schedule and flip back
|
|
53
|
+
# to `active` on the next successful run. Monitors are auto-`paused` after
|
|
54
|
+
# repeated consecutive failures or insufficient-credit skips; resume by PATCHing
|
|
55
|
+
# status to `active`.
|
|
56
|
+
sig do
|
|
57
|
+
returns(ContextDev::Models::MonitorUpdateResponse::Status::TaggedSymbol)
|
|
58
|
+
end
|
|
59
|
+
attr_accessor :status
|
|
60
|
+
|
|
61
|
+
# Discriminated union describing what the monitor watches.
|
|
62
|
+
sig do
|
|
63
|
+
returns(ContextDev::Models::MonitorUpdateResponse::Target::Variants)
|
|
64
|
+
end
|
|
65
|
+
attr_accessor :target
|
|
66
|
+
|
|
67
|
+
sig { returns(Time) }
|
|
68
|
+
attr_accessor :updated_at
|
|
69
|
+
|
|
70
|
+
sig { returns(T.nilable(Time)) }
|
|
71
|
+
attr_accessor :last_change_at
|
|
72
|
+
|
|
73
|
+
# Error from the most recent failed run; null when the last run succeeded.
|
|
74
|
+
sig do
|
|
75
|
+
returns(T.nilable(ContextDev::Models::MonitorUpdateResponse::LastError))
|
|
76
|
+
end
|
|
77
|
+
attr_reader :last_error
|
|
78
|
+
|
|
79
|
+
sig do
|
|
80
|
+
params(
|
|
81
|
+
last_error:
|
|
82
|
+
T.nilable(
|
|
83
|
+
ContextDev::Models::MonitorUpdateResponse::LastError::OrHash
|
|
84
|
+
)
|
|
85
|
+
).void
|
|
86
|
+
end
|
|
87
|
+
attr_writer :last_error
|
|
88
|
+
|
|
89
|
+
sig { returns(T.nilable(Time)) }
|
|
90
|
+
attr_accessor :last_run_at
|
|
91
|
+
|
|
92
|
+
# When the next scheduled run is due.
|
|
93
|
+
sig { returns(T.nilable(Time)) }
|
|
94
|
+
attr_accessor :next_run_at
|
|
95
|
+
|
|
96
|
+
# User-defined tags for grouping and filtering monitors and their changes.
|
|
97
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
98
|
+
attr_reader :tags
|
|
99
|
+
|
|
100
|
+
sig { params(tags: T::Array[String]).void }
|
|
101
|
+
attr_writer :tags
|
|
102
|
+
|
|
103
|
+
sig do
|
|
104
|
+
returns(T.nilable(ContextDev::Models::MonitorUpdateResponse::Webhook))
|
|
105
|
+
end
|
|
106
|
+
attr_reader :webhook
|
|
107
|
+
|
|
108
|
+
sig do
|
|
109
|
+
params(
|
|
110
|
+
webhook:
|
|
111
|
+
T.nilable(
|
|
112
|
+
ContextDev::Models::MonitorUpdateResponse::Webhook::OrHash
|
|
113
|
+
)
|
|
114
|
+
).void
|
|
115
|
+
end
|
|
116
|
+
attr_writer :webhook
|
|
117
|
+
|
|
118
|
+
# A web monitor. `mode` is the constant `web`; behavior is described by `target`
|
|
119
|
+
# (page/sitemap/extract) and `change_detection` (exact/semantic).
|
|
120
|
+
sig do
|
|
121
|
+
params(
|
|
122
|
+
id: String,
|
|
123
|
+
change_detection:
|
|
124
|
+
T.any(
|
|
125
|
+
ContextDev::Models::MonitorUpdateResponse::ChangeDetection::Exact::OrHash,
|
|
126
|
+
ContextDev::Models::MonitorUpdateResponse::ChangeDetection::Semantic::OrHash
|
|
127
|
+
),
|
|
128
|
+
created_at: Time,
|
|
129
|
+
mode: ContextDev::Models::MonitorUpdateResponse::Mode::OrSymbol,
|
|
130
|
+
name: String,
|
|
131
|
+
schedule: ContextDev::Models::MonitorUpdateResponse::Schedule::OrHash,
|
|
132
|
+
status: ContextDev::Models::MonitorUpdateResponse::Status::OrSymbol,
|
|
133
|
+
target:
|
|
134
|
+
T.any(
|
|
135
|
+
ContextDev::Models::MonitorUpdateResponse::Target::Page::OrHash,
|
|
136
|
+
ContextDev::Models::MonitorUpdateResponse::Target::Sitemap::OrHash,
|
|
137
|
+
ContextDev::Models::MonitorUpdateResponse::Target::Extract::OrHash
|
|
138
|
+
),
|
|
139
|
+
updated_at: Time,
|
|
140
|
+
last_change_at: T.nilable(Time),
|
|
141
|
+
last_error:
|
|
142
|
+
T.nilable(
|
|
143
|
+
ContextDev::Models::MonitorUpdateResponse::LastError::OrHash
|
|
144
|
+
),
|
|
145
|
+
last_run_at: T.nilable(Time),
|
|
146
|
+
next_run_at: T.nilable(Time),
|
|
147
|
+
tags: T::Array[String],
|
|
148
|
+
webhook:
|
|
149
|
+
T.nilable(
|
|
150
|
+
ContextDev::Models::MonitorUpdateResponse::Webhook::OrHash
|
|
151
|
+
)
|
|
152
|
+
).returns(T.attached_class)
|
|
153
|
+
end
|
|
154
|
+
def self.new(
|
|
155
|
+
id:,
|
|
156
|
+
# Discriminated union describing how changes are detected.
|
|
157
|
+
change_detection:,
|
|
158
|
+
created_at:,
|
|
159
|
+
# Top-level monitor category. Always `web` today; the concrete behavior is
|
|
160
|
+
# described by `target` and `change_detection`.
|
|
161
|
+
mode:,
|
|
162
|
+
name:,
|
|
163
|
+
# Run the monitor on a fixed interval defined by a frequency and a unit, e.g.
|
|
164
|
+
# every 6 hours or every 2 days. The total interval (frequency × unit) must be
|
|
165
|
+
# between 10 minutes and 1 year.
|
|
166
|
+
schedule:,
|
|
167
|
+
# Monitor lifecycle status. `failed` means the most recent run failed (see the
|
|
168
|
+
# monitor's `last_error`); failed monitors keep running on schedule and flip back
|
|
169
|
+
# to `active` on the next successful run. Monitors are auto-`paused` after
|
|
170
|
+
# repeated consecutive failures or insufficient-credit skips; resume by PATCHing
|
|
171
|
+
# status to `active`.
|
|
172
|
+
status:,
|
|
173
|
+
# Discriminated union describing what the monitor watches.
|
|
174
|
+
target:,
|
|
175
|
+
updated_at:,
|
|
176
|
+
last_change_at: nil,
|
|
177
|
+
# Error from the most recent failed run; null when the last run succeeded.
|
|
178
|
+
last_error: nil,
|
|
179
|
+
last_run_at: nil,
|
|
180
|
+
# When the next scheduled run is due.
|
|
181
|
+
next_run_at: nil,
|
|
182
|
+
# User-defined tags for grouping and filtering monitors and their changes.
|
|
183
|
+
tags: nil,
|
|
184
|
+
webhook: nil
|
|
185
|
+
)
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
sig do
|
|
189
|
+
override.returns(
|
|
190
|
+
{
|
|
191
|
+
id: String,
|
|
192
|
+
change_detection:
|
|
193
|
+
ContextDev::Models::MonitorUpdateResponse::ChangeDetection::Variants,
|
|
194
|
+
created_at: Time,
|
|
195
|
+
mode: ContextDev::Models::MonitorUpdateResponse::Mode::TaggedSymbol,
|
|
196
|
+
name: String,
|
|
197
|
+
schedule: ContextDev::Models::MonitorUpdateResponse::Schedule,
|
|
198
|
+
status:
|
|
199
|
+
ContextDev::Models::MonitorUpdateResponse::Status::TaggedSymbol,
|
|
200
|
+
target: ContextDev::Models::MonitorUpdateResponse::Target::Variants,
|
|
201
|
+
updated_at: Time,
|
|
202
|
+
last_change_at: T.nilable(Time),
|
|
203
|
+
last_error:
|
|
204
|
+
T.nilable(ContextDev::Models::MonitorUpdateResponse::LastError),
|
|
205
|
+
last_run_at: T.nilable(Time),
|
|
206
|
+
next_run_at: T.nilable(Time),
|
|
207
|
+
tags: T::Array[String],
|
|
208
|
+
webhook:
|
|
209
|
+
T.nilable(ContextDev::Models::MonitorUpdateResponse::Webhook)
|
|
210
|
+
}
|
|
211
|
+
)
|
|
212
|
+
end
|
|
213
|
+
def to_hash
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
# Discriminated union describing how changes are detected.
|
|
217
|
+
module ChangeDetection
|
|
218
|
+
extend ContextDev::Internal::Type::Union
|
|
219
|
+
|
|
220
|
+
Variants =
|
|
221
|
+
T.type_alias do
|
|
222
|
+
T.any(
|
|
223
|
+
ContextDev::Models::MonitorUpdateResponse::ChangeDetection::Exact,
|
|
224
|
+
ContextDev::Models::MonitorUpdateResponse::ChangeDetection::Semantic
|
|
225
|
+
)
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
class Exact < ContextDev::Internal::Type::BaseModel
|
|
229
|
+
OrHash =
|
|
230
|
+
T.type_alias do
|
|
231
|
+
T.any(
|
|
232
|
+
ContextDev::Models::MonitorUpdateResponse::ChangeDetection::Exact,
|
|
233
|
+
ContextDev::Internal::AnyHash
|
|
234
|
+
)
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
sig { returns(Symbol) }
|
|
238
|
+
attr_accessor :type
|
|
239
|
+
|
|
240
|
+
# Detect exact changes. For page targets, this means visible text diffs. For
|
|
241
|
+
# sitemap targets, this means URL additions and removals.
|
|
242
|
+
sig { params(type: Symbol).returns(T.attached_class) }
|
|
243
|
+
def self.new(type: :exact)
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
sig { override.returns({ type: Symbol }) }
|
|
247
|
+
def to_hash
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
class Semantic < ContextDev::Internal::Type::BaseModel
|
|
252
|
+
OrHash =
|
|
253
|
+
T.type_alias do
|
|
254
|
+
T.any(
|
|
255
|
+
ContextDev::Models::MonitorUpdateResponse::ChangeDetection::Semantic,
|
|
256
|
+
ContextDev::Internal::AnyHash
|
|
257
|
+
)
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
sig { returns(String) }
|
|
261
|
+
attr_accessor :query
|
|
262
|
+
|
|
263
|
+
sig { returns(Symbol) }
|
|
264
|
+
attr_accessor :type
|
|
265
|
+
|
|
266
|
+
sig { returns(T.nilable(Float)) }
|
|
267
|
+
attr_reader :confidence_threshold
|
|
268
|
+
|
|
269
|
+
sig { params(confidence_threshold: Float).void }
|
|
270
|
+
attr_writer :confidence_threshold
|
|
271
|
+
|
|
272
|
+
# Detect meaning-level changes that match a natural language query.
|
|
273
|
+
sig do
|
|
274
|
+
params(
|
|
275
|
+
query: String,
|
|
276
|
+
confidence_threshold: Float,
|
|
277
|
+
type: Symbol
|
|
278
|
+
).returns(T.attached_class)
|
|
279
|
+
end
|
|
280
|
+
def self.new(query:, confidence_threshold: nil, type: :semantic)
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
sig do
|
|
284
|
+
override.returns(
|
|
285
|
+
{ query: String, type: Symbol, confidence_threshold: Float }
|
|
286
|
+
)
|
|
287
|
+
end
|
|
288
|
+
def to_hash
|
|
289
|
+
end
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
sig do
|
|
293
|
+
override.returns(
|
|
294
|
+
T::Array[
|
|
295
|
+
ContextDev::Models::MonitorUpdateResponse::ChangeDetection::Variants
|
|
296
|
+
]
|
|
297
|
+
)
|
|
298
|
+
end
|
|
299
|
+
def self.variants
|
|
300
|
+
end
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
# Top-level monitor category. Always `web` today; the concrete behavior is
|
|
304
|
+
# described by `target` and `change_detection`.
|
|
305
|
+
module Mode
|
|
306
|
+
extend ContextDev::Internal::Type::Enum
|
|
307
|
+
|
|
308
|
+
TaggedSymbol =
|
|
309
|
+
T.type_alias do
|
|
310
|
+
T.all(Symbol, ContextDev::Models::MonitorUpdateResponse::Mode)
|
|
311
|
+
end
|
|
312
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
313
|
+
|
|
314
|
+
WEB =
|
|
315
|
+
T.let(
|
|
316
|
+
:web,
|
|
317
|
+
ContextDev::Models::MonitorUpdateResponse::Mode::TaggedSymbol
|
|
318
|
+
)
|
|
319
|
+
|
|
320
|
+
sig do
|
|
321
|
+
override.returns(
|
|
322
|
+
T::Array[
|
|
323
|
+
ContextDev::Models::MonitorUpdateResponse::Mode::TaggedSymbol
|
|
324
|
+
]
|
|
325
|
+
)
|
|
326
|
+
end
|
|
327
|
+
def self.values
|
|
328
|
+
end
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
class Schedule < ContextDev::Internal::Type::BaseModel
|
|
332
|
+
OrHash =
|
|
333
|
+
T.type_alias do
|
|
334
|
+
T.any(
|
|
335
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule,
|
|
336
|
+
ContextDev::Internal::AnyHash
|
|
337
|
+
)
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
# Number of units between runs. The resulting interval (frequency × unit) must be
|
|
341
|
+
# at least 10 minutes and at most 1 year (e.g. minimum 10 when unit is minutes;
|
|
342
|
+
# maximum 365 when unit is days).
|
|
343
|
+
sig { returns(Integer) }
|
|
344
|
+
attr_accessor :frequency
|
|
345
|
+
|
|
346
|
+
sig do
|
|
347
|
+
returns(
|
|
348
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule::Type::TaggedSymbol
|
|
349
|
+
)
|
|
350
|
+
end
|
|
351
|
+
attr_accessor :type
|
|
352
|
+
|
|
353
|
+
sig do
|
|
354
|
+
returns(
|
|
355
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule::Unit::TaggedSymbol
|
|
356
|
+
)
|
|
357
|
+
end
|
|
358
|
+
attr_accessor :unit
|
|
359
|
+
|
|
360
|
+
# Run the monitor on a fixed interval defined by a frequency and a unit, e.g.
|
|
361
|
+
# every 6 hours or every 2 days. The total interval (frequency × unit) must be
|
|
362
|
+
# between 10 minutes and 1 year.
|
|
363
|
+
sig do
|
|
364
|
+
params(
|
|
365
|
+
frequency: Integer,
|
|
366
|
+
type:
|
|
367
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule::Type::OrSymbol,
|
|
368
|
+
unit:
|
|
369
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule::Unit::OrSymbol
|
|
370
|
+
).returns(T.attached_class)
|
|
371
|
+
end
|
|
372
|
+
def self.new(
|
|
373
|
+
# Number of units between runs. The resulting interval (frequency × unit) must be
|
|
374
|
+
# at least 10 minutes and at most 1 year (e.g. minimum 10 when unit is minutes;
|
|
375
|
+
# maximum 365 when unit is days).
|
|
376
|
+
frequency:,
|
|
377
|
+
type:,
|
|
378
|
+
unit:
|
|
379
|
+
)
|
|
380
|
+
end
|
|
381
|
+
|
|
382
|
+
sig do
|
|
383
|
+
override.returns(
|
|
384
|
+
{
|
|
385
|
+
frequency: Integer,
|
|
386
|
+
type:
|
|
387
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule::Type::TaggedSymbol,
|
|
388
|
+
unit:
|
|
389
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule::Unit::TaggedSymbol
|
|
390
|
+
}
|
|
391
|
+
)
|
|
392
|
+
end
|
|
393
|
+
def to_hash
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
module Type
|
|
397
|
+
extend ContextDev::Internal::Type::Enum
|
|
398
|
+
|
|
399
|
+
TaggedSymbol =
|
|
400
|
+
T.type_alias do
|
|
401
|
+
T.all(
|
|
402
|
+
Symbol,
|
|
403
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule::Type
|
|
404
|
+
)
|
|
405
|
+
end
|
|
406
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
407
|
+
|
|
408
|
+
INTERVAL =
|
|
409
|
+
T.let(
|
|
410
|
+
:interval,
|
|
411
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule::Type::TaggedSymbol
|
|
412
|
+
)
|
|
413
|
+
|
|
414
|
+
sig do
|
|
415
|
+
override.returns(
|
|
416
|
+
T::Array[
|
|
417
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule::Type::TaggedSymbol
|
|
418
|
+
]
|
|
419
|
+
)
|
|
420
|
+
end
|
|
421
|
+
def self.values
|
|
422
|
+
end
|
|
423
|
+
end
|
|
424
|
+
|
|
425
|
+
module Unit
|
|
426
|
+
extend ContextDev::Internal::Type::Enum
|
|
427
|
+
|
|
428
|
+
TaggedSymbol =
|
|
429
|
+
T.type_alias do
|
|
430
|
+
T.all(
|
|
431
|
+
Symbol,
|
|
432
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule::Unit
|
|
433
|
+
)
|
|
434
|
+
end
|
|
435
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
436
|
+
|
|
437
|
+
MINUTES =
|
|
438
|
+
T.let(
|
|
439
|
+
:minutes,
|
|
440
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule::Unit::TaggedSymbol
|
|
441
|
+
)
|
|
442
|
+
HOURS =
|
|
443
|
+
T.let(
|
|
444
|
+
:hours,
|
|
445
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule::Unit::TaggedSymbol
|
|
446
|
+
)
|
|
447
|
+
DAYS =
|
|
448
|
+
T.let(
|
|
449
|
+
:days,
|
|
450
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule::Unit::TaggedSymbol
|
|
451
|
+
)
|
|
452
|
+
|
|
453
|
+
sig do
|
|
454
|
+
override.returns(
|
|
455
|
+
T::Array[
|
|
456
|
+
ContextDev::Models::MonitorUpdateResponse::Schedule::Unit::TaggedSymbol
|
|
457
|
+
]
|
|
458
|
+
)
|
|
459
|
+
end
|
|
460
|
+
def self.values
|
|
461
|
+
end
|
|
462
|
+
end
|
|
463
|
+
end
|
|
464
|
+
|
|
465
|
+
# Monitor lifecycle status. `failed` means the most recent run failed (see the
|
|
466
|
+
# monitor's `last_error`); failed monitors keep running on schedule and flip back
|
|
467
|
+
# to `active` on the next successful run. Monitors are auto-`paused` after
|
|
468
|
+
# repeated consecutive failures or insufficient-credit skips; resume by PATCHing
|
|
469
|
+
# status to `active`.
|
|
470
|
+
module Status
|
|
471
|
+
extend ContextDev::Internal::Type::Enum
|
|
472
|
+
|
|
473
|
+
TaggedSymbol =
|
|
474
|
+
T.type_alias do
|
|
475
|
+
T.all(Symbol, ContextDev::Models::MonitorUpdateResponse::Status)
|
|
476
|
+
end
|
|
477
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
478
|
+
|
|
479
|
+
ACTIVE =
|
|
480
|
+
T.let(
|
|
481
|
+
:active,
|
|
482
|
+
ContextDev::Models::MonitorUpdateResponse::Status::TaggedSymbol
|
|
483
|
+
)
|
|
484
|
+
PAUSED =
|
|
485
|
+
T.let(
|
|
486
|
+
:paused,
|
|
487
|
+
ContextDev::Models::MonitorUpdateResponse::Status::TaggedSymbol
|
|
488
|
+
)
|
|
489
|
+
FAILED =
|
|
490
|
+
T.let(
|
|
491
|
+
:failed,
|
|
492
|
+
ContextDev::Models::MonitorUpdateResponse::Status::TaggedSymbol
|
|
493
|
+
)
|
|
494
|
+
|
|
495
|
+
sig do
|
|
496
|
+
override.returns(
|
|
497
|
+
T::Array[
|
|
498
|
+
ContextDev::Models::MonitorUpdateResponse::Status::TaggedSymbol
|
|
499
|
+
]
|
|
500
|
+
)
|
|
501
|
+
end
|
|
502
|
+
def self.values
|
|
503
|
+
end
|
|
504
|
+
end
|
|
505
|
+
|
|
506
|
+
# Discriminated union describing what the monitor watches.
|
|
507
|
+
module Target
|
|
508
|
+
extend ContextDev::Internal::Type::Union
|
|
509
|
+
|
|
510
|
+
Variants =
|
|
511
|
+
T.type_alias do
|
|
512
|
+
T.any(
|
|
513
|
+
ContextDev::Models::MonitorUpdateResponse::Target::Page,
|
|
514
|
+
ContextDev::Models::MonitorUpdateResponse::Target::Sitemap,
|
|
515
|
+
ContextDev::Models::MonitorUpdateResponse::Target::Extract
|
|
516
|
+
)
|
|
517
|
+
end
|
|
518
|
+
|
|
519
|
+
class Page < ContextDev::Internal::Type::BaseModel
|
|
520
|
+
OrHash =
|
|
521
|
+
T.type_alias do
|
|
522
|
+
T.any(
|
|
523
|
+
ContextDev::Models::MonitorUpdateResponse::Target::Page,
|
|
524
|
+
ContextDev::Internal::AnyHash
|
|
525
|
+
)
|
|
526
|
+
end
|
|
527
|
+
|
|
528
|
+
sig { returns(Symbol) }
|
|
529
|
+
attr_accessor :type
|
|
530
|
+
|
|
531
|
+
sig { returns(String) }
|
|
532
|
+
attr_accessor :url
|
|
533
|
+
|
|
534
|
+
# Normalize whitespace before comparing or analyzing text.
|
|
535
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
536
|
+
attr_reader :normalize_whitespace
|
|
537
|
+
|
|
538
|
+
sig { params(normalize_whitespace: T::Boolean).void }
|
|
539
|
+
attr_writer :normalize_whitespace
|
|
540
|
+
|
|
541
|
+
# Watch a single web page.
|
|
542
|
+
sig do
|
|
543
|
+
params(
|
|
544
|
+
url: String,
|
|
545
|
+
normalize_whitespace: T::Boolean,
|
|
546
|
+
type: Symbol
|
|
547
|
+
).returns(T.attached_class)
|
|
548
|
+
end
|
|
549
|
+
def self.new(
|
|
550
|
+
url:,
|
|
551
|
+
# Normalize whitespace before comparing or analyzing text.
|
|
552
|
+
normalize_whitespace: nil,
|
|
553
|
+
type: :page
|
|
554
|
+
)
|
|
555
|
+
end
|
|
556
|
+
|
|
557
|
+
sig do
|
|
558
|
+
override.returns(
|
|
559
|
+
{ type: Symbol, url: String, normalize_whitespace: T::Boolean }
|
|
560
|
+
)
|
|
561
|
+
end
|
|
562
|
+
def to_hash
|
|
563
|
+
end
|
|
564
|
+
end
|
|
565
|
+
|
|
566
|
+
class Sitemap < ContextDev::Internal::Type::BaseModel
|
|
567
|
+
OrHash =
|
|
568
|
+
T.type_alias do
|
|
569
|
+
T.any(
|
|
570
|
+
ContextDev::Models::MonitorUpdateResponse::Target::Sitemap,
|
|
571
|
+
ContextDev::Internal::AnyHash
|
|
572
|
+
)
|
|
573
|
+
end
|
|
574
|
+
|
|
575
|
+
sig { returns(Symbol) }
|
|
576
|
+
attr_accessor :type
|
|
577
|
+
|
|
578
|
+
# Sitemap URL to monitor.
|
|
579
|
+
sig { returns(String) }
|
|
580
|
+
attr_accessor :url
|
|
581
|
+
|
|
582
|
+
# URL path patterns to exclude.
|
|
583
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
584
|
+
attr_reader :exclude
|
|
585
|
+
|
|
586
|
+
sig { params(exclude: T::Array[String]).void }
|
|
587
|
+
attr_writer :exclude
|
|
588
|
+
|
|
589
|
+
# URL path patterns to include.
|
|
590
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
591
|
+
attr_reader :include
|
|
592
|
+
|
|
593
|
+
sig { params(include: T::Array[String]).void }
|
|
594
|
+
attr_writer :include
|
|
595
|
+
|
|
596
|
+
# Maximum number of sitemap URLs to track (capped at 10,000).
|
|
597
|
+
sig { returns(T.nilable(Integer)) }
|
|
598
|
+
attr_reader :max_urls
|
|
599
|
+
|
|
600
|
+
sig { params(max_urls: Integer).void }
|
|
601
|
+
attr_writer :max_urls
|
|
602
|
+
|
|
603
|
+
# Watch a sitemap for URL additions and removals. Crawled URLs are normalized
|
|
604
|
+
# (lowercased host, no trailing slash/fragment) and scoped to the monitored site
|
|
605
|
+
# and its subdomains before comparison. A new URL set must be observed on two
|
|
606
|
+
# consecutive runs before a change is reported, suppressing one-run crawl flaps.
|
|
607
|
+
sig do
|
|
608
|
+
params(
|
|
609
|
+
url: String,
|
|
610
|
+
exclude: T::Array[String],
|
|
611
|
+
include: T::Array[String],
|
|
612
|
+
max_urls: Integer,
|
|
613
|
+
type: Symbol
|
|
614
|
+
).returns(T.attached_class)
|
|
615
|
+
end
|
|
616
|
+
def self.new(
|
|
617
|
+
# Sitemap URL to monitor.
|
|
618
|
+
url:,
|
|
619
|
+
# URL path patterns to exclude.
|
|
620
|
+
exclude: nil,
|
|
621
|
+
# URL path patterns to include.
|
|
622
|
+
include: nil,
|
|
623
|
+
# Maximum number of sitemap URLs to track (capped at 10,000).
|
|
624
|
+
max_urls: nil,
|
|
625
|
+
type: :sitemap
|
|
626
|
+
)
|
|
627
|
+
end
|
|
628
|
+
|
|
629
|
+
sig do
|
|
630
|
+
override.returns(
|
|
631
|
+
{
|
|
632
|
+
type: Symbol,
|
|
633
|
+
url: String,
|
|
634
|
+
exclude: T::Array[String],
|
|
635
|
+
include: T::Array[String],
|
|
636
|
+
max_urls: Integer
|
|
637
|
+
}
|
|
638
|
+
)
|
|
639
|
+
end
|
|
640
|
+
def to_hash
|
|
641
|
+
end
|
|
642
|
+
end
|
|
643
|
+
|
|
644
|
+
class Extract < ContextDev::Internal::Type::BaseModel
|
|
645
|
+
OrHash =
|
|
646
|
+
T.type_alias do
|
|
647
|
+
T.any(
|
|
648
|
+
ContextDev::Models::MonitorUpdateResponse::Target::Extract,
|
|
649
|
+
ContextDev::Internal::AnyHash
|
|
650
|
+
)
|
|
651
|
+
end
|
|
652
|
+
|
|
653
|
+
sig { returns(Symbol) }
|
|
654
|
+
attr_accessor :type
|
|
655
|
+
|
|
656
|
+
# Root URL to extract structured data from.
|
|
657
|
+
sig { returns(String) }
|
|
658
|
+
attr_accessor :url
|
|
659
|
+
|
|
660
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
661
|
+
attr_reader :follow_subdomains
|
|
662
|
+
|
|
663
|
+
sig { params(follow_subdomains: T::Boolean).void }
|
|
664
|
+
attr_writer :follow_subdomains
|
|
665
|
+
|
|
666
|
+
# Optional natural-language instructions guiding what to extract.
|
|
667
|
+
sig { returns(T.nilable(String)) }
|
|
668
|
+
attr_reader :instructions
|
|
669
|
+
|
|
670
|
+
sig { params(instructions: String).void }
|
|
671
|
+
attr_writer :instructions
|
|
672
|
+
|
|
673
|
+
# Optional maximum link depth from the starting URL (0 = only the starting page).
|
|
674
|
+
sig { returns(T.nilable(Integer)) }
|
|
675
|
+
attr_reader :max_depth
|
|
676
|
+
|
|
677
|
+
sig { params(max_depth: Integer).void }
|
|
678
|
+
attr_writer :max_depth
|
|
679
|
+
|
|
680
|
+
# Maximum number of pages to analyze during extraction.
|
|
681
|
+
sig { returns(T.nilable(Integer)) }
|
|
682
|
+
attr_reader :max_pages
|
|
683
|
+
|
|
684
|
+
sig { params(max_pages: Integer).void }
|
|
685
|
+
attr_writer :max_pages
|
|
686
|
+
|
|
687
|
+
# JSON Schema describing the structured data to extract and watch for changes. If
|
|
688
|
+
# omitted, a default summary + key-points schema is used.
|
|
689
|
+
sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
|
|
690
|
+
attr_reader :schema
|
|
691
|
+
|
|
692
|
+
sig { params(schema: T::Hash[Symbol, T.anything]).void }
|
|
693
|
+
attr_writer :schema
|
|
694
|
+
|
|
695
|
+
# Watch a site's extracted structured data.
|
|
696
|
+
sig do
|
|
697
|
+
params(
|
|
698
|
+
url: String,
|
|
699
|
+
follow_subdomains: T::Boolean,
|
|
700
|
+
instructions: String,
|
|
701
|
+
max_depth: Integer,
|
|
702
|
+
max_pages: Integer,
|
|
703
|
+
schema: T::Hash[Symbol, T.anything],
|
|
704
|
+
type: Symbol
|
|
705
|
+
).returns(T.attached_class)
|
|
706
|
+
end
|
|
707
|
+
def self.new(
|
|
708
|
+
# Root URL to extract structured data from.
|
|
709
|
+
url:,
|
|
710
|
+
follow_subdomains: nil,
|
|
711
|
+
# Optional natural-language instructions guiding what to extract.
|
|
712
|
+
instructions: nil,
|
|
713
|
+
# Optional maximum link depth from the starting URL (0 = only the starting page).
|
|
714
|
+
max_depth: nil,
|
|
715
|
+
# Maximum number of pages to analyze during extraction.
|
|
716
|
+
max_pages: nil,
|
|
717
|
+
# JSON Schema describing the structured data to extract and watch for changes. If
|
|
718
|
+
# omitted, a default summary + key-points schema is used.
|
|
719
|
+
schema: nil,
|
|
720
|
+
type: :extract
|
|
721
|
+
)
|
|
722
|
+
end
|
|
723
|
+
|
|
724
|
+
sig do
|
|
725
|
+
override.returns(
|
|
726
|
+
{
|
|
727
|
+
type: Symbol,
|
|
728
|
+
url: String,
|
|
729
|
+
follow_subdomains: T::Boolean,
|
|
730
|
+
instructions: String,
|
|
731
|
+
max_depth: Integer,
|
|
732
|
+
max_pages: Integer,
|
|
733
|
+
schema: T::Hash[Symbol, T.anything]
|
|
734
|
+
}
|
|
735
|
+
)
|
|
736
|
+
end
|
|
737
|
+
def to_hash
|
|
738
|
+
end
|
|
739
|
+
end
|
|
740
|
+
|
|
741
|
+
sig do
|
|
742
|
+
override.returns(
|
|
743
|
+
T::Array[
|
|
744
|
+
ContextDev::Models::MonitorUpdateResponse::Target::Variants
|
|
745
|
+
]
|
|
746
|
+
)
|
|
747
|
+
end
|
|
748
|
+
def self.variants
|
|
749
|
+
end
|
|
750
|
+
end
|
|
751
|
+
|
|
752
|
+
class LastError < ContextDev::Internal::Type::BaseModel
|
|
753
|
+
OrHash =
|
|
754
|
+
T.type_alias do
|
|
755
|
+
T.any(
|
|
756
|
+
ContextDev::Models::MonitorUpdateResponse::LastError,
|
|
757
|
+
ContextDev::Internal::AnyHash
|
|
758
|
+
)
|
|
759
|
+
end
|
|
760
|
+
|
|
761
|
+
sig { returns(String) }
|
|
762
|
+
attr_accessor :code
|
|
763
|
+
|
|
764
|
+
sig { returns(String) }
|
|
765
|
+
attr_accessor :message
|
|
766
|
+
|
|
767
|
+
# Error from the most recent failed run; null when the last run succeeded.
|
|
768
|
+
sig { params(code: String, message: String).returns(T.attached_class) }
|
|
769
|
+
def self.new(code:, message:)
|
|
770
|
+
end
|
|
771
|
+
|
|
772
|
+
sig { override.returns({ code: String, message: String }) }
|
|
773
|
+
def to_hash
|
|
774
|
+
end
|
|
775
|
+
end
|
|
776
|
+
|
|
777
|
+
class Webhook < ContextDev::Internal::Type::BaseModel
|
|
778
|
+
OrHash =
|
|
779
|
+
T.type_alias do
|
|
780
|
+
T.any(
|
|
781
|
+
ContextDev::Models::MonitorUpdateResponse::Webhook,
|
|
782
|
+
ContextDev::Internal::AnyHash
|
|
783
|
+
)
|
|
784
|
+
end
|
|
785
|
+
|
|
786
|
+
# Webhook URL called when a change is detected.
|
|
787
|
+
sig { returns(String) }
|
|
788
|
+
attr_accessor :url
|
|
789
|
+
|
|
790
|
+
# Signing secret used to verify webhook authenticity. Each delivery includes an
|
|
791
|
+
# `X-Context-Signature: t=<unix>,v1=<hmac>` header, where the HMAC is SHA-256 over
|
|
792
|
+
# `"{t}.{rawRequestBody}"` keyed by this secret. Recompute it with a constant-time
|
|
793
|
+
# compare and reject stale timestamps to prevent replay. Generated by the API;
|
|
794
|
+
# cannot be set by clients.
|
|
795
|
+
sig { returns(T.nilable(String)) }
|
|
796
|
+
attr_reader :secret
|
|
797
|
+
|
|
798
|
+
sig { params(secret: String).void }
|
|
799
|
+
attr_writer :secret
|
|
800
|
+
|
|
801
|
+
sig { params(url: String, secret: String).returns(T.attached_class) }
|
|
802
|
+
def self.new(
|
|
803
|
+
# Webhook URL called when a change is detected.
|
|
804
|
+
url:,
|
|
805
|
+
# Signing secret used to verify webhook authenticity. Each delivery includes an
|
|
806
|
+
# `X-Context-Signature: t=<unix>,v1=<hmac>` header, where the HMAC is SHA-256 over
|
|
807
|
+
# `"{t}.{rawRequestBody}"` keyed by this secret. Recompute it with a constant-time
|
|
808
|
+
# compare and reject stale timestamps to prevent replay. Generated by the API;
|
|
809
|
+
# cannot be set by clients.
|
|
810
|
+
secret: nil
|
|
811
|
+
)
|
|
812
|
+
end
|
|
813
|
+
|
|
814
|
+
sig { override.returns({ url: String, secret: String }) }
|
|
815
|
+
def to_hash
|
|
816
|
+
end
|
|
817
|
+
end
|
|
818
|
+
end
|
|
819
|
+
end
|
|
820
|
+
end
|