context.dev 2.1.0 → 2.3.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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/README.md +1 -1
  4. data/lib/context_dev/client.rb +7 -2
  5. data/lib/context_dev/internal/type/base_model.rb +5 -5
  6. data/lib/context_dev/models/monitor_create_params.rb +44 -14
  7. data/lib/context_dev/models/monitor_create_response.rb +112 -15
  8. data/lib/context_dev/models/monitor_list_account_runs_response.rb +23 -1
  9. data/lib/context_dev/models/monitor_list_response.rb +116 -15
  10. data/lib/context_dev/models/monitor_list_runs_response.rb +23 -1
  11. data/lib/context_dev/models/monitor_retrieve_change_response.rb +10 -10
  12. data/lib/context_dev/models/monitor_retrieve_response.rb +113 -15
  13. data/lib/context_dev/models/monitor_update_params.rb +44 -14
  14. data/lib/context_dev/models/monitor_update_response.rb +112 -15
  15. data/lib/context_dev/models/parse_handle_params.rb +110 -0
  16. data/lib/context_dev/models/parse_handle_response.rb +132 -0
  17. data/lib/context_dev/models/web_web_crawl_md_params.rb +16 -6
  18. data/lib/context_dev/models/web_web_scrape_html_params.rb +16 -6
  19. data/lib/context_dev/models/web_web_scrape_md_params.rb +16 -6
  20. data/lib/context_dev/models/web_web_scrape_md_response.rb +11 -1
  21. data/lib/context_dev/models/webhook_delivery.rb +109 -0
  22. data/lib/context_dev/models.rb +4 -0
  23. data/lib/context_dev/resources/monitors.rb +3 -2
  24. data/lib/context_dev/resources/parse.rb +63 -0
  25. data/lib/context_dev/resources/web.rb +19 -4
  26. data/lib/context_dev/version.rb +1 -1
  27. data/lib/context_dev.rb +4 -0
  28. data/rbi/context_dev/client.rbi +6 -2
  29. data/rbi/context_dev/models/monitor_create_params.rbi +106 -16
  30. data/rbi/context_dev/models/monitor_create_response.rbi +255 -17
  31. data/rbi/context_dev/models/monitor_list_account_runs_response.rbi +39 -3
  32. data/rbi/context_dev/models/monitor_list_response.rbi +256 -16
  33. data/rbi/context_dev/models/monitor_list_runs_response.rbi +39 -3
  34. data/rbi/context_dev/models/monitor_retrieve_change_response.rbi +12 -15
  35. data/rbi/context_dev/models/monitor_retrieve_response.rbi +255 -17
  36. data/rbi/context_dev/models/monitor_update_params.rbi +106 -16
  37. data/rbi/context_dev/models/monitor_update_response.rbi +255 -17
  38. data/rbi/context_dev/models/parse_handle_params.rbi +163 -0
  39. data/rbi/context_dev/models/parse_handle_response.rbi +377 -0
  40. data/rbi/context_dev/models/web_web_crawl_md_params.rbi +26 -7
  41. data/rbi/context_dev/models/web_web_scrape_html_params.rbi +26 -7
  42. data/rbi/context_dev/models/web_web_scrape_md_params.rbi +26 -7
  43. data/rbi/context_dev/models/web_web_scrape_md_response.rbi +12 -0
  44. data/rbi/context_dev/models/webhook_delivery.rbi +172 -0
  45. data/rbi/context_dev/models.rbi +4 -0
  46. data/rbi/context_dev/resources/monitors.rbi +3 -2
  47. data/rbi/context_dev/resources/parse.rbi +65 -0
  48. data/rbi/context_dev/resources/web.rbi +22 -7
  49. data/sig/context_dev/client.rbs +2 -0
  50. data/sig/context_dev/models/monitor_create_params.rbs +32 -3
  51. data/sig/context_dev/models/monitor_create_response.rbs +85 -6
  52. data/sig/context_dev/models/monitor_list_account_runs_response.rbs +21 -3
  53. data/sig/context_dev/models/monitor_list_response.rbs +85 -6
  54. data/sig/context_dev/models/monitor_list_runs_response.rbs +21 -3
  55. data/sig/context_dev/models/monitor_retrieve_change_response.rbs +8 -10
  56. data/sig/context_dev/models/monitor_retrieve_response.rbs +85 -6
  57. data/sig/context_dev/models/monitor_update_params.rbs +32 -3
  58. data/sig/context_dev/models/monitor_update_response.rbs +85 -6
  59. data/sig/context_dev/models/parse_handle_params.rbs +96 -0
  60. data/sig/context_dev/models/parse_handle_response.rbs +159 -0
  61. data/sig/context_dev/models/web_web_crawl_md_params.rbs +13 -2
  62. data/sig/context_dev/models/web_web_scrape_html_params.rbs +13 -2
  63. data/sig/context_dev/models/web_web_scrape_md_params.rbs +13 -2
  64. data/sig/context_dev/models/web_web_scrape_md_response.rbs +5 -0
  65. data/sig/context_dev/models/webhook_delivery.rbs +81 -0
  66. data/sig/context_dev/models.rbs +4 -0
  67. data/sig/context_dev/resources/parse.rbs +22 -0
  68. metadata +14 -2
@@ -0,0 +1,172 @@
1
+ # typed: strong
2
+
3
+ module ContextDev
4
+ module Models
5
+ class WebhookDelivery < ContextDev::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(ContextDev::WebhookDelivery, ContextDev::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(Time) }
12
+ attr_accessor :attempted_at
13
+
14
+ sig { returns(T.nilable(ContextDev::WebhookDelivery::Error)) }
15
+ attr_reader :error
16
+
17
+ sig do
18
+ params(
19
+ error: T.nilable(ContextDev::WebhookDelivery::Error::OrHash)
20
+ ).void
21
+ end
22
+ attr_writer :error
23
+
24
+ # The event this delivery carried. Deliveries recorded before event selection
25
+ # existed report change.detected.
26
+ sig { returns(ContextDev::WebhookDelivery::Event::TaggedSymbol) }
27
+ attr_accessor :event
28
+
29
+ # Identifier sent in the X-Context-Id header.
30
+ sig { returns(String) }
31
+ attr_accessor :event_id
32
+
33
+ # The endpoint's final HTTP response status, or null when no response was
34
+ # received.
35
+ sig { returns(T.nilable(Integer)) }
36
+ attr_accessor :http_status
37
+
38
+ # Delivery outcome. delivered means any 2xx response; rejected means a non-2xx
39
+ # response; failed means no HTTP response was received; skipped_unsafe_url means
40
+ # the URL failed the public-endpoint safety check.
41
+ sig { returns(ContextDev::WebhookDelivery::Status::TaggedSymbol) }
42
+ attr_accessor :status
43
+
44
+ sig do
45
+ params(
46
+ attempted_at: Time,
47
+ error: T.nilable(ContextDev::WebhookDelivery::Error::OrHash),
48
+ event: ContextDev::WebhookDelivery::Event::OrSymbol,
49
+ event_id: String,
50
+ http_status: T.nilable(Integer),
51
+ status: ContextDev::WebhookDelivery::Status::OrSymbol
52
+ ).returns(T.attached_class)
53
+ end
54
+ def self.new(
55
+ attempted_at:,
56
+ error:,
57
+ # The event this delivery carried. Deliveries recorded before event selection
58
+ # existed report change.detected.
59
+ event:,
60
+ # Identifier sent in the X-Context-Id header.
61
+ event_id:,
62
+ # The endpoint's final HTTP response status, or null when no response was
63
+ # received.
64
+ http_status:,
65
+ # Delivery outcome. delivered means any 2xx response; rejected means a non-2xx
66
+ # response; failed means no HTTP response was received; skipped_unsafe_url means
67
+ # the URL failed the public-endpoint safety check.
68
+ status:
69
+ )
70
+ end
71
+
72
+ sig do
73
+ override.returns(
74
+ {
75
+ attempted_at: Time,
76
+ error: T.nilable(ContextDev::WebhookDelivery::Error),
77
+ event: ContextDev::WebhookDelivery::Event::TaggedSymbol,
78
+ event_id: String,
79
+ http_status: T.nilable(Integer),
80
+ status: ContextDev::WebhookDelivery::Status::TaggedSymbol
81
+ }
82
+ )
83
+ end
84
+ def to_hash
85
+ end
86
+
87
+ class Error < ContextDev::Internal::Type::BaseModel
88
+ OrHash =
89
+ T.type_alias do
90
+ T.any(
91
+ ContextDev::WebhookDelivery::Error,
92
+ ContextDev::Internal::AnyHash
93
+ )
94
+ end
95
+
96
+ sig { returns(String) }
97
+ attr_accessor :code
98
+
99
+ sig { returns(String) }
100
+ attr_accessor :message
101
+
102
+ sig { params(code: String, message: String).returns(T.attached_class) }
103
+ def self.new(code:, message:)
104
+ end
105
+
106
+ sig { override.returns({ code: String, message: String }) }
107
+ def to_hash
108
+ end
109
+ end
110
+
111
+ # The event this delivery carried. Deliveries recorded before event selection
112
+ # existed report change.detected.
113
+ module Event
114
+ extend ContextDev::Internal::Type::Enum
115
+
116
+ TaggedSymbol =
117
+ T.type_alias { T.all(Symbol, ContextDev::WebhookDelivery::Event) }
118
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
119
+
120
+ CHANGE_DETECTED =
121
+ T.let(
122
+ :"change.detected",
123
+ ContextDev::WebhookDelivery::Event::TaggedSymbol
124
+ )
125
+ RUN_COMPLETED =
126
+ T.let(
127
+ :"run.completed",
128
+ ContextDev::WebhookDelivery::Event::TaggedSymbol
129
+ )
130
+
131
+ sig do
132
+ override.returns(
133
+ T::Array[ContextDev::WebhookDelivery::Event::TaggedSymbol]
134
+ )
135
+ end
136
+ def self.values
137
+ end
138
+ end
139
+
140
+ # Delivery outcome. delivered means any 2xx response; rejected means a non-2xx
141
+ # response; failed means no HTTP response was received; skipped_unsafe_url means
142
+ # the URL failed the public-endpoint safety check.
143
+ module Status
144
+ extend ContextDev::Internal::Type::Enum
145
+
146
+ TaggedSymbol =
147
+ T.type_alias { T.all(Symbol, ContextDev::WebhookDelivery::Status) }
148
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
149
+
150
+ DELIVERED =
151
+ T.let(:delivered, ContextDev::WebhookDelivery::Status::TaggedSymbol)
152
+ REJECTED =
153
+ T.let(:rejected, ContextDev::WebhookDelivery::Status::TaggedSymbol)
154
+ FAILED =
155
+ T.let(:failed, ContextDev::WebhookDelivery::Status::TaggedSymbol)
156
+ SKIPPED_UNSAFE_URL =
157
+ T.let(
158
+ :skipped_unsafe_url,
159
+ ContextDev::WebhookDelivery::Status::TaggedSymbol
160
+ )
161
+
162
+ sig do
163
+ override.returns(
164
+ T::Array[ContextDev::WebhookDelivery::Status::TaggedSymbol]
165
+ )
166
+ end
167
+ def self.values
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
@@ -38,6 +38,8 @@ module ContextDev
38
38
 
39
39
  MonitorUpdateParams = ContextDev::Models::MonitorUpdateParams
40
40
 
41
+ ParseHandleParams = ContextDev::Models::ParseHandleParams
42
+
41
43
  UtilityPrefetchParams = ContextDev::Models::UtilityPrefetchParams
42
44
 
43
45
  WebExtractCompetitorsParams = ContextDev::Models::WebExtractCompetitorsParams
@@ -48,6 +50,8 @@ module ContextDev
48
50
 
49
51
  WebExtractStyleguideParams = ContextDev::Models::WebExtractStyleguideParams
50
52
 
53
+ WebhookDelivery = ContextDev::Models::WebhookDelivery
54
+
51
55
  WebScreenshotParams = ContextDev::Models::WebScreenshotParams
52
56
 
53
57
  WebSearchParams = ContextDev::Models::WebSearchParams
@@ -3,8 +3,9 @@
3
3
  module ContextDev
4
4
  module Resources
5
5
  # Monitor pages, sitemaps, and extracted website data for exact or semantic
6
- # changes. The change.detected webhook payload is documented by the
7
- # MonitorsChangeDetectedWebhookPayload schema.
6
+ # changes. Webhook payloads are documented by the
7
+ # MonitorsChangeDetectedWebhookPayload and MonitorsRunCompletedWebhookPayload
8
+ # schemas.
8
9
  class Monitors
9
10
  # Creates a monitor. The request body is a union of the supported target/change
10
11
  # detection combinations. The monitor runs immediately after creation to create
@@ -0,0 +1,65 @@
1
+ # typed: strong
2
+
3
+ module ContextDev
4
+ module Resources
5
+ class Parse
6
+ # Converts raw text, source code, web/data, PDF, Microsoft Office, and image bytes
7
+ # into LLM-usable Markdown.
8
+ sig do
9
+ params(
10
+ body: ContextDev::Internal::FileInput,
11
+ base_url: String,
12
+ extension: String,
13
+ filename: String,
14
+ include_images: T::Boolean,
15
+ include_links: T::Boolean,
16
+ ocr: T::Boolean,
17
+ pdf_end: Integer,
18
+ pdf_start: Integer,
19
+ shorten_base64_images: T::Boolean,
20
+ use_main_content_only: T::Boolean,
21
+ request_options: ContextDev::RequestOptions::OrHash
22
+ ).returns(ContextDev::Models::ParseHandleResponse)
23
+ end
24
+ def handle(
25
+ # Body param
26
+ body:,
27
+ # Query param: Optional HTTP(S) source document URL used to resolve relative links
28
+ # and image references. Relative references remain relative when omitted.
29
+ base_url: nil,
30
+ # Query param: Optional file extension hint, such as pdf, docx, xlsx, pptx, html,
31
+ # json, csv, md, py, rtf, jpg, png, or txt.
32
+ extension: nil,
33
+ # Query param: Optional filename hint used to infer the extension when extension
34
+ # is omitted.
35
+ filename: nil,
36
+ # Query param: Include image references in Markdown output
37
+ include_images: nil,
38
+ # Query param: Preserve hyperlinks in Markdown output
39
+ include_links: nil,
40
+ # Query param: When true for PDF inputs, detect and OCR images embedded in the
41
+ # selected pages, inserting recognized text at each image's position in page
42
+ # reading order while preserving the PDF text layer. pdfStart/pdfEnd limit the
43
+ # inclusive page range. This is separate from automatic scanned-PDF OCR fallback.
44
+ ocr: nil,
45
+ # Query param: Last 1-based PDF page to parse. When omitted, parsing ends at the
46
+ # last page. Must be greater than or equal to pdfStart when both are provided.
47
+ pdf_end: nil,
48
+ # Query param: First 1-based PDF page to parse. When omitted, parsing starts at
49
+ # the first page.
50
+ pdf_start: nil,
51
+ # Query param: Shorten base64-encoded image data in the Markdown output
52
+ shorten_base64_images: nil,
53
+ # Query param: Extract only the main content from HTML-like inputs
54
+ use_main_content_only: nil,
55
+ request_options: {}
56
+ )
57
+ end
58
+
59
+ # @api private
60
+ sig { params(client: ContextDev::Client).returns(T.attached_class) }
61
+ def self.new(client:)
62
+ end
63
+ end
64
+ end
65
+ end
@@ -344,8 +344,8 @@ module ContextDev
344
344
  max_depth: nil,
345
345
  # Maximum number of pages to crawl. Hard cap: 500.
346
346
  max_pages: nil,
347
- # PDF parsing controls. Use start/end to limit text extraction and OCR to an
348
- # inclusive 1-based page range.
347
+ # PDF parsing controls. Use start/end to limit text extraction and embedded-image
348
+ # detection/OCR to an inclusive 1-based page range.
349
349
  pdf: nil,
350
350
  # When true, waits briefly for CSS and transition animations to settle before
351
351
  # extracting each crawled page. Defaults to false. This adds a bit of latency in
@@ -416,8 +416,8 @@ module ContextDev
416
416
  # younger than this many milliseconds. Defaults to 1 day (86400000 ms) when
417
417
  # omitted. Max is 30 days (2592000000 ms). Set to 0 to always scrape fresh.
418
418
  max_age_ms: nil,
419
- # PDF parsing controls. Use start/end to limit text extraction and OCR to an
420
- # inclusive 1-based page range.
419
+ # PDF parsing controls. Use start/end to limit text extraction and embedded-image
420
+ # detection/OCR to an inclusive 1-based page range.
421
421
  pdf: nil,
422
422
  # When true, waits briefly for CSS and transition animations to settle before
423
423
  # extracting HTML. Defaults to false. This adds a bit of latency in exchange for
@@ -482,7 +482,22 @@ module ContextDev
482
482
  )
483
483
  end
484
484
 
485
- # Scrapes the given URL into LLM usable Markdown.
485
+ # Scrapes the given URL into LLM usable Markdown. Inspect key_metadata on JSON
486
+ # responses from a recognized API key; use error_code to distinguish stable
487
+ # failure categories.
488
+ #
489
+ # ### Billing & errors
490
+ #
491
+ # | HTTP status | Billed? | Meaning |
492
+ # | ----------- | -------------- | ---------------------------------------------------------------------------------------- |
493
+ # | 200 | Yes — 1 credit | Successful scrape, including a zero-length result when includeSelectors matched nothing |
494
+ # | 400 | No | Invalid input, skipped PDF, or the page could not be scraped |
495
+ # | 401 / 403 | No | Invalid/disabled key, insufficient permissions, or credits exhausted; inspect error_code |
496
+ # | 404 | No | Target page returned or fingerprinted as not found |
497
+ # | 408 | No | Request timed out |
498
+ # | 415 | No | Unsupported content type |
499
+ # | 429 | No | Per-minute rate limit exceeded; honor Retry-After |
500
+ # | 500 | No | Internal error |
486
501
  sig do
487
502
  params(
488
503
  url: String,
@@ -532,8 +547,8 @@ module ContextDev
532
547
  # younger than this many milliseconds. Defaults to 1 day (86400000 ms) when
533
548
  # omitted. Max is 30 days (2592000000 ms). Set to 0 to always scrape fresh.
534
549
  max_age_ms: nil,
535
- # PDF parsing controls. Use start/end to limit text extraction and OCR to an
536
- # inclusive 1-based page range.
550
+ # PDF parsing controls. Use start/end to limit text extraction and embedded-image
551
+ # detection/OCR to an inclusive 1-based page range.
537
552
  pdf: nil,
538
553
  # When true, waits briefly for CSS and transition animations to settle before
539
554
  # converting to Markdown. Defaults to false. This adds a bit of latency in
@@ -10,6 +10,8 @@ module ContextDev
10
10
 
11
11
  attr_reader api_key: String
12
12
 
13
+ attr_reader parse: ContextDev::Resources::Parse
14
+
13
15
  attr_reader web: ContextDev::Resources::Web
14
16
 
15
17
  attr_reader ai: ContextDev::Resources::AI
@@ -287,14 +287,43 @@ module ContextDev
287
287
  def self?.values: -> ::Array[ContextDev::Models::MonitorCreateParams::mode]
288
288
  end
289
289
 
290
- type webhook = { url: String, secret: String }
290
+ type webhook =
291
+ {
292
+ url: String,
293
+ events: ::Array[ContextDev::Models::MonitorCreateParams::Webhook::event],
294
+ secret: String
295
+ }
291
296
 
292
297
  class Webhook < ContextDev::Internal::Type::BaseModel
293
298
  attr_accessor url: String
294
299
 
295
- def initialize: (url: String) -> void
300
+ attr_reader events: ::Array[ContextDev::Models::MonitorCreateParams::Webhook::event]?
301
+
302
+ def events=: (
303
+ ::Array[ContextDev::Models::MonitorCreateParams::Webhook::event]
304
+ ) -> ::Array[ContextDev::Models::MonitorCreateParams::Webhook::event]
305
+
306
+ def initialize: (
307
+ url: String,
308
+ ?events: ::Array[ContextDev::Models::MonitorCreateParams::Webhook::event]
309
+ ) -> void
310
+
311
+ def to_hash: -> {
312
+ url: String,
313
+ events: ::Array[ContextDev::Models::MonitorCreateParams::Webhook::event],
314
+ secret: String
315
+ }
296
316
 
297
- def to_hash: -> { url: String, secret: String }
317
+ type event = :"change.detected" | :"run.completed"
318
+
319
+ module Event
320
+ extend ContextDev::Internal::Type::Enum
321
+
322
+ CHANGE_DETECTED: :"change.detected"
323
+ RUN_COMPLETED: :"run.completed"
324
+
325
+ def self?.values: -> ::Array[ContextDev::Models::MonitorCreateParams::Webhook::event]
326
+ end
298
327
  end
299
328
  end
300
329
  end
@@ -17,7 +17,8 @@ module ContextDev
17
17
  last_run_at: Time?,
18
18
  next_run_at: Time?,
19
19
  tags: ::Array[String],
20
- webhook: ContextDev::Models::MonitorCreateResponse::Webhook?
20
+ webhook: ContextDev::Models::MonitorCreateResponse::Webhook?,
21
+ webhook_failure: ContextDev::Models::MonitorCreateResponse::WebhookFailure?
21
22
  }
22
23
 
23
24
  class MonitorCreateResponse < ContextDev::Internal::Type::BaseModel
@@ -55,6 +56,8 @@ module ContextDev
55
56
 
56
57
  attr_accessor webhook: ContextDev::Models::MonitorCreateResponse::Webhook?
57
58
 
59
+ attr_accessor webhook_failure: ContextDev::Models::MonitorCreateResponse::WebhookFailure?
60
+
58
61
  def initialize: (
59
62
  id: String,
60
63
  change_detection: ContextDev::Models::MonitorCreateResponse::change_detection,
@@ -71,7 +74,8 @@ module ContextDev
71
74
  ?last_run_at: Time?,
72
75
  ?next_run_at: Time?,
73
76
  ?tags: ::Array[String],
74
- ?webhook: ContextDev::Models::MonitorCreateResponse::Webhook?
77
+ ?webhook: ContextDev::Models::MonitorCreateResponse::Webhook?,
78
+ ?webhook_failure: ContextDev::Models::MonitorCreateResponse::WebhookFailure?
75
79
  ) -> void
76
80
 
77
81
  def to_hash: -> {
@@ -90,7 +94,8 @@ module ContextDev
90
94
  last_run_at: Time?,
91
95
  next_run_at: Time?,
92
96
  tags: ::Array[String],
93
- webhook: ContextDev::Models::MonitorCreateResponse::Webhook?
97
+ webhook: ContextDev::Models::MonitorCreateResponse::Webhook?,
98
+ webhook_failure: ContextDev::Models::MonitorCreateResponse::WebhookFailure?
94
99
  }
95
100
 
96
101
  type change_detection =
@@ -415,18 +420,92 @@ module ContextDev
415
420
  def to_hash: -> { code: String, message: String }
416
421
  end
417
422
 
418
- type webhook = { url: String, secret: String }
423
+ type webhook =
424
+ {
425
+ url: String,
426
+ events: ::Array[ContextDev::Models::MonitorCreateResponse::Webhook::event],
427
+ secret: String
428
+ }
419
429
 
420
430
  class Webhook < ContextDev::Internal::Type::BaseModel
421
431
  attr_accessor url: String
422
432
 
433
+ attr_reader events: ::Array[ContextDev::Models::MonitorCreateResponse::Webhook::event]?
434
+
435
+ def events=: (
436
+ ::Array[ContextDev::Models::MonitorCreateResponse::Webhook::event]
437
+ ) -> ::Array[ContextDev::Models::MonitorCreateResponse::Webhook::event]
438
+
423
439
  attr_reader secret: String?
424
440
 
425
441
  def secret=: (String) -> String
426
442
 
427
- def initialize: (url: String, ?secret: String) -> void
443
+ def initialize: (
444
+ url: String,
445
+ ?events: ::Array[ContextDev::Models::MonitorCreateResponse::Webhook::event],
446
+ ?secret: String
447
+ ) -> void
448
+
449
+ def to_hash: -> {
450
+ url: String,
451
+ events: ::Array[ContextDev::Models::MonitorCreateResponse::Webhook::event],
452
+ secret: String
453
+ }
454
+
455
+ type event = :"change.detected" | :"run.completed"
456
+
457
+ module Event
458
+ extend ContextDev::Internal::Type::Enum
459
+
460
+ CHANGE_DETECTED: :"change.detected"
461
+ RUN_COMPLETED: :"run.completed"
428
462
 
429
- def to_hash: -> { url: String, secret: String }
463
+ def self?.values: -> ::Array[ContextDev::Models::MonitorCreateResponse::Webhook::event]
464
+ end
465
+ end
466
+
467
+ type webhook_failure =
468
+ {
469
+ consecutive_failures: Integer,
470
+ last_failed_at: Time,
471
+ last_message: String,
472
+ last_status: ContextDev::Models::MonitorCreateResponse::WebhookFailure::last_status
473
+ }
474
+
475
+ class WebhookFailure < ContextDev::Internal::Type::BaseModel
476
+ attr_accessor consecutive_failures: Integer
477
+
478
+ attr_accessor last_failed_at: Time
479
+
480
+ attr_accessor last_message: String
481
+
482
+ attr_accessor last_status: ContextDev::Models::MonitorCreateResponse::WebhookFailure::last_status
483
+
484
+ def initialize: (
485
+ consecutive_failures: Integer,
486
+ last_failed_at: Time,
487
+ last_message: String,
488
+ last_status: ContextDev::Models::MonitorCreateResponse::WebhookFailure::last_status
489
+ ) -> void
490
+
491
+ def to_hash: -> {
492
+ consecutive_failures: Integer,
493
+ last_failed_at: Time,
494
+ last_message: String,
495
+ last_status: ContextDev::Models::MonitorCreateResponse::WebhookFailure::last_status
496
+ }
497
+
498
+ type last_status = :rejected | :failed | :skipped_unsafe_url
499
+
500
+ module LastStatus
501
+ extend ContextDev::Internal::Type::Enum
502
+
503
+ REJECTED: :rejected
504
+ FAILED: :failed
505
+ SKIPPED_UNSAFE_URL: :skipped_unsafe_url
506
+
507
+ def self?.values: -> ::Array[ContextDev::Models::MonitorCreateResponse::WebhookFailure::last_status]
508
+ end
430
509
  end
431
510
  end
432
511
  end
@@ -41,7 +41,9 @@ module ContextDev
41
41
  completed_at: Time?,
42
42
  error: ContextDev::Models::MonitorListAccountRunsResponse::Data::Error?,
43
43
  skip_reason: ContextDev::Models::MonitorListAccountRunsResponse::Data::skip_reason?,
44
- started_at: Time?
44
+ started_at: Time?,
45
+ webhook_deliveries: ::Array[ContextDev::WebhookDelivery],
46
+ webhook_delivery: ContextDev::WebhookDelivery
45
47
  }
46
48
 
47
49
  class Data < ContextDev::Internal::Type::BaseModel
@@ -73,6 +75,18 @@ module ContextDev
73
75
 
74
76
  attr_accessor started_at: Time?
75
77
 
78
+ attr_reader webhook_deliveries: ::Array[ContextDev::WebhookDelivery]?
79
+
80
+ def webhook_deliveries=: (
81
+ ::Array[ContextDev::WebhookDelivery]
82
+ ) -> ::Array[ContextDev::WebhookDelivery]
83
+
84
+ attr_reader webhook_delivery: ContextDev::WebhookDelivery?
85
+
86
+ def webhook_delivery=: (
87
+ ContextDev::WebhookDelivery
88
+ ) -> ContextDev::WebhookDelivery
89
+
76
90
  def initialize: (
77
91
  id: String,
78
92
  baseline_created: bool,
@@ -87,7 +101,9 @@ module ContextDev
87
101
  ?completed_at: Time?,
88
102
  ?error: ContextDev::Models::MonitorListAccountRunsResponse::Data::Error?,
89
103
  ?skip_reason: ContextDev::Models::MonitorListAccountRunsResponse::Data::skip_reason?,
90
- ?started_at: Time?
104
+ ?started_at: Time?,
105
+ ?webhook_deliveries: ::Array[ContextDev::WebhookDelivery],
106
+ ?webhook_delivery: ContextDev::WebhookDelivery
91
107
  ) -> void
92
108
 
93
109
  def to_hash: -> {
@@ -104,7 +120,9 @@ module ContextDev
104
120
  completed_at: Time?,
105
121
  error: ContextDev::Models::MonitorListAccountRunsResponse::Data::Error?,
106
122
  skip_reason: ContextDev::Models::MonitorListAccountRunsResponse::Data::skip_reason?,
107
- started_at: Time?
123
+ started_at: Time?,
124
+ webhook_deliveries: ::Array[ContextDev::WebhookDelivery],
125
+ webhook_delivery: ContextDev::WebhookDelivery
108
126
  }
109
127
 
110
128
  type change_detection_type = :exact | :semantic