bytekit-sdk 0.3.0__py3-none-any.whl
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.
- bytekit/__init__.py +8 -0
- bytekit/api/__init__.py +1 -0
- bytekit/api/account/__init__.py +1 -0
- bytekit/api/account/get_account.py +157 -0
- bytekit/api/bulk/__init__.py +1 -0
- bytekit/api/bulk/create_bulk.py +204 -0
- bytekit/api/bulk/delete_bulk.py +177 -0
- bytekit/api/bulk/get_bulk.py +157 -0
- bytekit/api/bulk/list_bulk_screenshots.py +152 -0
- bytekit/api/fetch/__init__.py +1 -0
- bytekit/api/fetch/get_fetch.py +254 -0
- bytekit/api/fetch/post_fetch.py +178 -0
- bytekit/api/fetch_bulk/__init__.py +1 -0
- bytekit/api/fetch_bulk/create_fetch_bulk.py +180 -0
- bytekit/api/fetch_bulk/get_fetch_bulk.py +157 -0
- bytekit/api/monitors/__init__.py +1 -0
- bytekit/api/monitors/create_monitor.py +180 -0
- bytekit/api/monitors/delete_monitor.py +155 -0
- bytekit/api/monitors/get_monitor.py +157 -0
- bytekit/api/monitors/list_monitor_captures.py +188 -0
- bytekit/api/monitors/list_monitors.py +193 -0
- bytekit/api/monitors/update_monitor.py +191 -0
- bytekit/api/scrape/__init__.py +1 -0
- bytekit/api/scrape/create_scrape.py +197 -0
- bytekit/api/scrape/get_scrape.py +231 -0
- bytekit/api/scrape_bulk/__init__.py +1 -0
- bytekit/api/scrape_bulk/create_scrape_bulk.py +188 -0
- bytekit/api/scrape_bulk/get_scrape_bulk.py +157 -0
- bytekit/api/screenshots/__init__.py +1 -0
- bytekit/api/screenshots/create_screenshot.py +208 -0
- bytekit/api/screenshots/get_screenshot.py +177 -0
- bytekit/api/search/__init__.py +1 -0
- bytekit/api/search/create_search.py +225 -0
- bytekit/api/sitemap/__init__.py +1 -0
- bytekit/api/sitemap/create_sitemap.py +192 -0
- bytekit/api/sitemap/get_sitemap.py +157 -0
- bytekit/api/usage/__init__.py +1 -0
- bytekit/api/usage/get_usage.py +126 -0
- bytekit/api/usage/get_usage_by_endpoint.py +215 -0
- bytekit/api/usage/get_usage_daily.py +203 -0
- bytekit/api/webhooks/__init__.py +1 -0
- bytekit/api/webhooks/list_webhook_deliveries.py +214 -0
- bytekit/api/webhooks/retry_webhook_delivery.py +165 -0
- bytekit/client.py +418 -0
- bytekit/errors.py +18 -0
- bytekit/models/__init__.py +401 -0
- bytekit/models/account_bearer_response.py +207 -0
- bytekit/models/account_bearer_response_api_key.py +134 -0
- bytekit/models/account_bearer_response_api_key_environment.py +8 -0
- bytekit/models/account_bearer_response_auto_topup.py +83 -0
- bytekit/models/account_bearer_response_plan.py +150 -0
- bytekit/models/account_bearer_response_subscription.py +85 -0
- bytekit/models/account_bearer_response_subscription_plan.py +99 -0
- bytekit/models/account_bearer_response_subscription_status.py +10 -0
- bytekit/models/account_session_response.py +164 -0
- bytekit/models/account_session_response_notifications.py +51 -0
- bytekit/models/account_session_response_plan.py +150 -0
- bytekit/models/bandwidth_balance.py +91 -0
- bytekit/models/capture_response.py +216 -0
- bytekit/models/capture_response_outcome.py +10 -0
- bytekit/models/clip.py +83 -0
- bytekit/models/cookie.py +90 -0
- bytekit/models/create_bulk_body.py +155 -0
- bytekit/models/create_bulk_body_defaults.py +423 -0
- bytekit/models/create_bulk_body_defaults_device.py +9 -0
- bytekit/models/create_bulk_body_defaults_device_scale_factor_type_1.py +9 -0
- bytekit/models/create_bulk_body_defaults_device_scale_factor_type_2_type_1.py +9 -0
- bytekit/models/create_bulk_body_defaults_device_scale_factor_type_3_type_1.py +9 -0
- bytekit/models/create_bulk_body_defaults_formats_item.py +12 -0
- bytekit/models/create_bulk_body_defaults_type.py +9 -0
- bytekit/models/create_bulk_body_defaults_viewport_type_0.py +67 -0
- bytekit/models/create_bulk_body_defaults_wait_until.py +10 -0
- bytekit/models/create_bulk_body_items_item.py +380 -0
- bytekit/models/create_bulk_body_items_item_device.py +9 -0
- bytekit/models/create_bulk_body_items_item_formats_item.py +12 -0
- bytekit/models/create_bulk_body_items_item_scenario.py +10 -0
- bytekit/models/create_bulk_body_items_item_type.py +9 -0
- bytekit/models/create_bulk_body_items_item_viewport_type_0.py +67 -0
- bytekit/models/create_bulk_body_items_item_wait_until.py +10 -0
- bytekit/models/create_bulk_response_202.py +164 -0
- bytekit/models/create_bulk_response_202_status.py +10 -0
- bytekit/models/create_fetch_bulk_body.py +161 -0
- bytekit/models/create_fetch_bulk_body_defaults.py +91 -0
- bytekit/models/create_fetch_bulk_body_defaults_format.py +9 -0
- bytekit/models/create_fetch_bulk_body_metadata.py +44 -0
- bytekit/models/create_fetch_bulk_body_urls_item_type_1.py +102 -0
- bytekit/models/create_fetch_bulk_body_urls_item_type_1_format.py +9 -0
- bytekit/models/create_fetch_bulk_response_202.py +44 -0
- bytekit/models/create_scrape_bulk_body.py +179 -0
- bytekit/models/create_scrape_bulk_body_custom.py +52 -0
- bytekit/models/create_scrape_bulk_body_defaults.py +167 -0
- bytekit/models/create_scrape_bulk_body_defaults_formats_item.py +12 -0
- bytekit/models/create_scrape_bulk_body_defaults_headers.py +44 -0
- bytekit/models/create_scrape_bulk_body_items_item.py +226 -0
- bytekit/models/create_scrape_bulk_body_items_item_custom.py +50 -0
- bytekit/models/create_scrape_bulk_body_items_item_formats_item.py +12 -0
- bytekit/models/create_scrape_bulk_body_items_item_headers.py +44 -0
- bytekit/models/create_scrape_bulk_body_items_item_metadata.py +44 -0
- bytekit/models/create_scrape_bulk_response_202.py +166 -0
- bytekit/models/create_scrape_bulk_response_202_status.py +10 -0
- bytekit/models/create_search_body.py +140 -0
- bytekit/models/create_search_body_date_range.py +13 -0
- bytekit/models/create_search_body_type.py +10 -0
- bytekit/models/create_search_response_200.py +119 -0
- bytekit/models/create_search_response_200_results_item.py +161 -0
- bytekit/models/create_search_response_200_results_item_image.py +113 -0
- bytekit/models/create_search_response_502.py +46 -0
- bytekit/models/create_search_response_502_error.py +8 -0
- bytekit/models/credit_balance.py +91 -0
- bytekit/models/delete_bulk_response_200.py +164 -0
- bytekit/models/delete_bulk_response_200_status.py +11 -0
- bytekit/models/error.py +83 -0
- bytekit/models/error_error.py +100 -0
- bytekit/models/error_status.py +8 -0
- bytekit/models/fetch_request.py +276 -0
- bytekit/models/fetch_request_cache_ttl_type_1.py +8 -0
- bytekit/models/fetch_request_custom.py +48 -0
- bytekit/models/fetch_request_format.py +9 -0
- bytekit/models/fetch_request_markdown_images.py +11 -0
- bytekit/models/fetch_request_markdown_links.py +11 -0
- bytekit/models/fetch_request_markdown_mode.py +10 -0
- bytekit/models/get_bulk_response_200.py +164 -0
- bytekit/models/get_bulk_response_200_status.py +11 -0
- bytekit/models/get_fetch_bulk_response_200.py +44 -0
- bytekit/models/get_fetch_cache_ttl_type_1.py +8 -0
- bytekit/models/get_fetch_format.py +9 -0
- bytekit/models/get_scrape_bulk_response_200.py +164 -0
- bytekit/models/get_scrape_bulk_response_200_status.py +11 -0
- bytekit/models/get_usage_by_endpoint_response_200.py +114 -0
- bytekit/models/get_usage_by_endpoint_response_200_rows_item.py +90 -0
- bytekit/models/get_usage_by_endpoint_response_200_rows_item_endpoint.py +17 -0
- bytekit/models/get_usage_by_endpoint_response_200_totals.py +67 -0
- bytekit/models/get_usage_daily_response_200.py +97 -0
- bytekit/models/get_usage_daily_response_200_data_item.py +219 -0
- bytekit/models/get_usage_response_200.py +344 -0
- bytekit/models/get_usage_response_200_plan_type.py +10 -0
- bytekit/models/list_bulk_screenshots_response_200.py +44 -0
- bytekit/models/list_monitor_captures_response_200.py +101 -0
- bytekit/models/list_monitors_response_200.py +101 -0
- bytekit/models/list_monitors_status.py +12 -0
- bytekit/models/list_webhook_deliveries_response_200.py +101 -0
- bytekit/models/list_webhook_deliveries_status.py +11 -0
- bytekit/models/metadata.py +44 -0
- bytekit/models/monitor_create_request.py +219 -0
- bytekit/models/monitor_create_request_interval_type.py +11 -0
- bytekit/models/monitor_create_request_notify_on.py +9 -0
- bytekit/models/monitor_create_request_options.py +44 -0
- bytekit/models/monitor_create_request_scrape_options.py +44 -0
- bytekit/models/monitor_create_request_type.py +9 -0
- bytekit/models/monitor_create_request_webhook_headers.py +44 -0
- bytekit/models/monitor_create_response.py +423 -0
- bytekit/models/monitor_response.py +411 -0
- bytekit/models/monitor_response_interval_type.py +11 -0
- bytekit/models/monitor_response_metadata_type_0.py +44 -0
- bytekit/models/monitor_response_status.py +12 -0
- bytekit/models/monitor_response_type.py +9 -0
- bytekit/models/monitor_response_webhook_headers_type_0.py +44 -0
- bytekit/models/monitor_update_request.py +223 -0
- bytekit/models/monitor_update_request_interval_type.py +11 -0
- bytekit/models/monitor_update_request_notify_on.py +9 -0
- bytekit/models/monitor_update_request_options.py +44 -0
- bytekit/models/monitor_update_request_scrape_options.py +44 -0
- bytekit/models/monitor_update_request_status.py +9 -0
- bytekit/models/monitor_update_request_webhook_headers.py +44 -0
- bytekit/models/scrape_error_envelope.py +113 -0
- bytekit/models/scrape_error_envelope_error.py +93 -0
- bytekit/models/scrape_error_envelope_error_code.py +18 -0
- bytekit/models/scrape_error_envelope_schema_version.py +8 -0
- bytekit/models/scrape_error_envelope_status.py +8 -0
- bytekit/models/scrape_formats.py +183 -0
- bytekit/models/scrape_markdown_tokens.py +75 -0
- bytekit/models/scrape_metadata.py +262 -0
- bytekit/models/scrape_queued_envelope.py +124 -0
- bytekit/models/scrape_queued_envelope_schema_version.py +8 -0
- bytekit/models/scrape_queued_envelope_status.py +8 -0
- bytekit/models/scrape_request.py +485 -0
- bytekit/models/scrape_request_cache_ttl_type_1.py +8 -0
- bytekit/models/scrape_request_custom.py +48 -0
- bytekit/models/scrape_request_events_item.py +10 -0
- bytekit/models/scrape_request_formats_item.py +12 -0
- bytekit/models/scrape_request_headers.py +44 -0
- bytekit/models/scrape_request_markdown_images.py +11 -0
- bytekit/models/scrape_request_markdown_links.py +11 -0
- bytekit/models/scrape_request_markdown_mode.py +10 -0
- bytekit/models/scrape_request_token_encoding.py +9 -0
- bytekit/models/scrape_request_x_internal_scrape_path.py +8 -0
- bytekit/models/scrape_scored_image.py +128 -0
- bytekit/models/scrape_scored_link.py +94 -0
- bytekit/models/scrape_stats.py +75 -0
- bytekit/models/scrape_success_envelope.py +345 -0
- bytekit/models/scrape_success_envelope_cache.py +10 -0
- bytekit/models/scrape_success_envelope_custom.py +48 -0
- bytekit/models/scrape_success_envelope_schema_version.py +8 -0
- bytekit/models/scrape_success_envelope_status.py +8 -0
- bytekit/models/scrape_table.py +96 -0
- bytekit/models/scrape_table_kind.py +10 -0
- bytekit/models/scrape_warning.py +88 -0
- bytekit/models/scrape_warning_code.py +17 -0
- bytekit/models/screenshot_request.py +445 -0
- bytekit/models/screenshot_request_device.py +9 -0
- bytekit/models/screenshot_request_device_scale_factor_type_1.py +9 -0
- bytekit/models/screenshot_request_device_scale_factor_type_2_type_1.py +9 -0
- bytekit/models/screenshot_request_device_scale_factor_type_3_type_1.py +9 -0
- bytekit/models/screenshot_request_format.py +9 -0
- bytekit/models/screenshot_request_headers.py +44 -0
- bytekit/models/screenshot_request_wait_until.py +10 -0
- bytekit/models/screenshot_response.py +264 -0
- bytekit/models/screenshot_response_status.py +11 -0
- bytekit/models/sitemap_request.py +210 -0
- bytekit/models/sitemap_request_process_type_0.py +90 -0
- bytekit/models/sitemap_request_process_type_0_options.py +44 -0
- bytekit/models/sitemap_request_strategy.py +10 -0
- bytekit/models/sitemap_response.py +418 -0
- bytekit/models/sitemap_response_cache.py +10 -0
- bytekit/models/sitemap_response_metadata_type_0.py +44 -0
- bytekit/models/sitemap_response_process_type_0.py +44 -0
- bytekit/models/sitemap_response_sources_type_0.py +44 -0
- bytekit/models/sitemap_response_status.py +11 -0
- bytekit/models/viewport.py +67 -0
- bytekit/models/webhook_delivery_response.py +270 -0
- bytekit/models/webhook_delivery_response_event_type.py +14 -0
- bytekit/models/webhook_delivery_response_status.py +11 -0
- bytekit/py.typed +0 -0
- bytekit/types.py +54 -0
- bytekit_sdk-0.3.0.dist-info/METADATA +141 -0
- bytekit_sdk-0.3.0.dist-info/RECORD +227 -0
- bytekit_sdk-0.3.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from typing import (
|
|
3
|
+
TYPE_CHECKING,
|
|
4
|
+
Any,
|
|
5
|
+
TypeVar,
|
|
6
|
+
Union,
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
from attrs import define as _attrs_define
|
|
10
|
+
|
|
11
|
+
from ..models.monitor_update_request_interval_type import (
|
|
12
|
+
MonitorUpdateRequestIntervalType,
|
|
13
|
+
)
|
|
14
|
+
from ..models.monitor_update_request_notify_on import MonitorUpdateRequestNotifyOn
|
|
15
|
+
from ..models.monitor_update_request_status import MonitorUpdateRequestStatus
|
|
16
|
+
from ..types import UNSET, Unset
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from ..models.metadata import Metadata
|
|
20
|
+
from ..models.monitor_update_request_options import MonitorUpdateRequestOptions
|
|
21
|
+
from ..models.monitor_update_request_scrape_options import (
|
|
22
|
+
MonitorUpdateRequestScrapeOptions,
|
|
23
|
+
)
|
|
24
|
+
from ..models.monitor_update_request_webhook_headers import (
|
|
25
|
+
MonitorUpdateRequestWebhookHeaders,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
T = TypeVar("T", bound="MonitorUpdateRequest")
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@_attrs_define
|
|
33
|
+
class MonitorUpdateRequest:
|
|
34
|
+
"""
|
|
35
|
+
Attributes:
|
|
36
|
+
url (Union[Unset, str]):
|
|
37
|
+
interval_type (Union[Unset, MonitorUpdateRequestIntervalType]):
|
|
38
|
+
cron_expression (Union[Unset, str]):
|
|
39
|
+
change_threshold (Union[Unset, float]):
|
|
40
|
+
notify_on (Union[Unset, MonitorUpdateRequestNotifyOn]):
|
|
41
|
+
webhook_url (Union[Unset, str]): Webhook endpoint URL (HTTPS only; http:// rejected with 400 invalid_url, reason
|
|
42
|
+
scheme_unsupported)
|
|
43
|
+
webhook_secret (Union[Unset, str]):
|
|
44
|
+
webhook_headers (Union[Unset, MonitorUpdateRequestWebhookHeaders]):
|
|
45
|
+
status (Union[Unset, MonitorUpdateRequestStatus]):
|
|
46
|
+
options (Union[Unset, MonitorUpdateRequestOptions]):
|
|
47
|
+
scrape_options (Union[Unset, MonitorUpdateRequestScrapeOptions]):
|
|
48
|
+
metadata (Union[Unset, Metadata]): Arbitrary key-value metadata. Max 4096 bytes when JSON-serialized.
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
url: Union[Unset, str] = UNSET
|
|
52
|
+
interval_type: Union[Unset, MonitorUpdateRequestIntervalType] = UNSET
|
|
53
|
+
cron_expression: Union[Unset, str] = UNSET
|
|
54
|
+
change_threshold: Union[Unset, float] = UNSET
|
|
55
|
+
notify_on: Union[Unset, MonitorUpdateRequestNotifyOn] = UNSET
|
|
56
|
+
webhook_url: Union[Unset, str] = UNSET
|
|
57
|
+
webhook_secret: Union[Unset, str] = UNSET
|
|
58
|
+
webhook_headers: Union[Unset, "MonitorUpdateRequestWebhookHeaders"] = UNSET
|
|
59
|
+
status: Union[Unset, MonitorUpdateRequestStatus] = UNSET
|
|
60
|
+
options: Union[Unset, "MonitorUpdateRequestOptions"] = UNSET
|
|
61
|
+
scrape_options: Union[Unset, "MonitorUpdateRequestScrapeOptions"] = UNSET
|
|
62
|
+
metadata: Union[Unset, "Metadata"] = UNSET
|
|
63
|
+
|
|
64
|
+
def to_dict(self) -> dict[str, Any]:
|
|
65
|
+
url = self.url
|
|
66
|
+
|
|
67
|
+
interval_type: Union[Unset, str] = UNSET
|
|
68
|
+
if not isinstance(self.interval_type, Unset):
|
|
69
|
+
interval_type = self.interval_type.value
|
|
70
|
+
|
|
71
|
+
cron_expression = self.cron_expression
|
|
72
|
+
|
|
73
|
+
change_threshold = self.change_threshold
|
|
74
|
+
|
|
75
|
+
notify_on: Union[Unset, str] = UNSET
|
|
76
|
+
if not isinstance(self.notify_on, Unset):
|
|
77
|
+
notify_on = self.notify_on.value
|
|
78
|
+
|
|
79
|
+
webhook_url = self.webhook_url
|
|
80
|
+
|
|
81
|
+
webhook_secret = self.webhook_secret
|
|
82
|
+
|
|
83
|
+
webhook_headers: Union[Unset, dict[str, Any]] = UNSET
|
|
84
|
+
if not isinstance(self.webhook_headers, Unset):
|
|
85
|
+
webhook_headers = self.webhook_headers.to_dict()
|
|
86
|
+
|
|
87
|
+
status: Union[Unset, str] = UNSET
|
|
88
|
+
if not isinstance(self.status, Unset):
|
|
89
|
+
status = self.status.value
|
|
90
|
+
|
|
91
|
+
options: Union[Unset, dict[str, Any]] = UNSET
|
|
92
|
+
if not isinstance(self.options, Unset):
|
|
93
|
+
options = self.options.to_dict()
|
|
94
|
+
|
|
95
|
+
scrape_options: Union[Unset, dict[str, Any]] = UNSET
|
|
96
|
+
if not isinstance(self.scrape_options, Unset):
|
|
97
|
+
scrape_options = self.scrape_options.to_dict()
|
|
98
|
+
|
|
99
|
+
metadata: Union[Unset, dict[str, Any]] = UNSET
|
|
100
|
+
if not isinstance(self.metadata, Unset):
|
|
101
|
+
metadata = self.metadata.to_dict()
|
|
102
|
+
|
|
103
|
+
field_dict: dict[str, Any] = {}
|
|
104
|
+
|
|
105
|
+
field_dict.update({})
|
|
106
|
+
if url is not UNSET:
|
|
107
|
+
field_dict["url"] = url
|
|
108
|
+
if interval_type is not UNSET:
|
|
109
|
+
field_dict["interval_type"] = interval_type
|
|
110
|
+
if cron_expression is not UNSET:
|
|
111
|
+
field_dict["cron_expression"] = cron_expression
|
|
112
|
+
if change_threshold is not UNSET:
|
|
113
|
+
field_dict["change_threshold"] = change_threshold
|
|
114
|
+
if notify_on is not UNSET:
|
|
115
|
+
field_dict["notify_on"] = notify_on
|
|
116
|
+
if webhook_url is not UNSET:
|
|
117
|
+
field_dict["webhook_url"] = webhook_url
|
|
118
|
+
if webhook_secret is not UNSET:
|
|
119
|
+
field_dict["webhook_secret"] = webhook_secret
|
|
120
|
+
if webhook_headers is not UNSET:
|
|
121
|
+
field_dict["webhook_headers"] = webhook_headers
|
|
122
|
+
if status is not UNSET:
|
|
123
|
+
field_dict["status"] = status
|
|
124
|
+
if options is not UNSET:
|
|
125
|
+
field_dict["options"] = options
|
|
126
|
+
if scrape_options is not UNSET:
|
|
127
|
+
field_dict["scrape_options"] = scrape_options
|
|
128
|
+
if metadata is not UNSET:
|
|
129
|
+
field_dict["metadata"] = metadata
|
|
130
|
+
|
|
131
|
+
return field_dict
|
|
132
|
+
|
|
133
|
+
@classmethod
|
|
134
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
135
|
+
from ..models.metadata import Metadata
|
|
136
|
+
from ..models.monitor_update_request_options import MonitorUpdateRequestOptions
|
|
137
|
+
from ..models.monitor_update_request_scrape_options import (
|
|
138
|
+
MonitorUpdateRequestScrapeOptions,
|
|
139
|
+
)
|
|
140
|
+
from ..models.monitor_update_request_webhook_headers import (
|
|
141
|
+
MonitorUpdateRequestWebhookHeaders,
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
d = dict(src_dict)
|
|
145
|
+
url = d.pop("url", UNSET)
|
|
146
|
+
|
|
147
|
+
_interval_type = d.pop("interval_type", UNSET)
|
|
148
|
+
interval_type: Union[Unset, MonitorUpdateRequestIntervalType]
|
|
149
|
+
if isinstance(_interval_type, Unset):
|
|
150
|
+
interval_type = UNSET
|
|
151
|
+
else:
|
|
152
|
+
interval_type = MonitorUpdateRequestIntervalType(_interval_type)
|
|
153
|
+
|
|
154
|
+
cron_expression = d.pop("cron_expression", UNSET)
|
|
155
|
+
|
|
156
|
+
change_threshold = d.pop("change_threshold", UNSET)
|
|
157
|
+
|
|
158
|
+
_notify_on = d.pop("notify_on", UNSET)
|
|
159
|
+
notify_on: Union[Unset, MonitorUpdateRequestNotifyOn]
|
|
160
|
+
if isinstance(_notify_on, Unset):
|
|
161
|
+
notify_on = UNSET
|
|
162
|
+
else:
|
|
163
|
+
notify_on = MonitorUpdateRequestNotifyOn(_notify_on)
|
|
164
|
+
|
|
165
|
+
webhook_url = d.pop("webhook_url", UNSET)
|
|
166
|
+
|
|
167
|
+
webhook_secret = d.pop("webhook_secret", UNSET)
|
|
168
|
+
|
|
169
|
+
_webhook_headers = d.pop("webhook_headers", UNSET)
|
|
170
|
+
webhook_headers: Union[Unset, MonitorUpdateRequestWebhookHeaders]
|
|
171
|
+
if isinstance(_webhook_headers, Unset):
|
|
172
|
+
webhook_headers = UNSET
|
|
173
|
+
else:
|
|
174
|
+
webhook_headers = MonitorUpdateRequestWebhookHeaders.from_dict(
|
|
175
|
+
_webhook_headers
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
_status = d.pop("status", UNSET)
|
|
179
|
+
status: Union[Unset, MonitorUpdateRequestStatus]
|
|
180
|
+
if isinstance(_status, Unset):
|
|
181
|
+
status = UNSET
|
|
182
|
+
else:
|
|
183
|
+
status = MonitorUpdateRequestStatus(_status)
|
|
184
|
+
|
|
185
|
+
_options = d.pop("options", UNSET)
|
|
186
|
+
options: Union[Unset, MonitorUpdateRequestOptions]
|
|
187
|
+
if isinstance(_options, Unset):
|
|
188
|
+
options = UNSET
|
|
189
|
+
else:
|
|
190
|
+
options = MonitorUpdateRequestOptions.from_dict(_options)
|
|
191
|
+
|
|
192
|
+
_scrape_options = d.pop("scrape_options", UNSET)
|
|
193
|
+
scrape_options: Union[Unset, MonitorUpdateRequestScrapeOptions]
|
|
194
|
+
if isinstance(_scrape_options, Unset):
|
|
195
|
+
scrape_options = UNSET
|
|
196
|
+
else:
|
|
197
|
+
scrape_options = MonitorUpdateRequestScrapeOptions.from_dict(
|
|
198
|
+
_scrape_options
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
_metadata = d.pop("metadata", UNSET)
|
|
202
|
+
metadata: Union[Unset, Metadata]
|
|
203
|
+
if isinstance(_metadata, Unset):
|
|
204
|
+
metadata = UNSET
|
|
205
|
+
else:
|
|
206
|
+
metadata = Metadata.from_dict(_metadata)
|
|
207
|
+
|
|
208
|
+
monitor_update_request = cls(
|
|
209
|
+
url=url,
|
|
210
|
+
interval_type=interval_type,
|
|
211
|
+
cron_expression=cron_expression,
|
|
212
|
+
change_threshold=change_threshold,
|
|
213
|
+
notify_on=notify_on,
|
|
214
|
+
webhook_url=webhook_url,
|
|
215
|
+
webhook_secret=webhook_secret,
|
|
216
|
+
webhook_headers=webhook_headers,
|
|
217
|
+
status=status,
|
|
218
|
+
options=options,
|
|
219
|
+
scrape_options=scrape_options,
|
|
220
|
+
metadata=metadata,
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
return monitor_update_request
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from typing import Any, TypeVar
|
|
3
|
+
|
|
4
|
+
from attrs import define as _attrs_define
|
|
5
|
+
from attrs import field as _attrs_field
|
|
6
|
+
|
|
7
|
+
T = TypeVar("T", bound="MonitorUpdateRequestOptions")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@_attrs_define
|
|
11
|
+
class MonitorUpdateRequestOptions:
|
|
12
|
+
""" """
|
|
13
|
+
|
|
14
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
15
|
+
|
|
16
|
+
def to_dict(self) -> dict[str, Any]:
|
|
17
|
+
field_dict: dict[str, Any] = {}
|
|
18
|
+
field_dict.update(self.additional_properties)
|
|
19
|
+
|
|
20
|
+
return field_dict
|
|
21
|
+
|
|
22
|
+
@classmethod
|
|
23
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
24
|
+
d = dict(src_dict)
|
|
25
|
+
monitor_update_request_options = cls()
|
|
26
|
+
|
|
27
|
+
monitor_update_request_options.additional_properties = d
|
|
28
|
+
return monitor_update_request_options
|
|
29
|
+
|
|
30
|
+
@property
|
|
31
|
+
def additional_keys(self) -> list[str]:
|
|
32
|
+
return list(self.additional_properties.keys())
|
|
33
|
+
|
|
34
|
+
def __getitem__(self, key: str) -> Any:
|
|
35
|
+
return self.additional_properties[key]
|
|
36
|
+
|
|
37
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
38
|
+
self.additional_properties[key] = value
|
|
39
|
+
|
|
40
|
+
def __delitem__(self, key: str) -> None:
|
|
41
|
+
del self.additional_properties[key]
|
|
42
|
+
|
|
43
|
+
def __contains__(self, key: str) -> bool:
|
|
44
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from typing import Any, TypeVar
|
|
3
|
+
|
|
4
|
+
from attrs import define as _attrs_define
|
|
5
|
+
from attrs import field as _attrs_field
|
|
6
|
+
|
|
7
|
+
T = TypeVar("T", bound="MonitorUpdateRequestScrapeOptions")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@_attrs_define
|
|
11
|
+
class MonitorUpdateRequestScrapeOptions:
|
|
12
|
+
""" """
|
|
13
|
+
|
|
14
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
15
|
+
|
|
16
|
+
def to_dict(self) -> dict[str, Any]:
|
|
17
|
+
field_dict: dict[str, Any] = {}
|
|
18
|
+
field_dict.update(self.additional_properties)
|
|
19
|
+
|
|
20
|
+
return field_dict
|
|
21
|
+
|
|
22
|
+
@classmethod
|
|
23
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
24
|
+
d = dict(src_dict)
|
|
25
|
+
monitor_update_request_scrape_options = cls()
|
|
26
|
+
|
|
27
|
+
monitor_update_request_scrape_options.additional_properties = d
|
|
28
|
+
return monitor_update_request_scrape_options
|
|
29
|
+
|
|
30
|
+
@property
|
|
31
|
+
def additional_keys(self) -> list[str]:
|
|
32
|
+
return list(self.additional_properties.keys())
|
|
33
|
+
|
|
34
|
+
def __getitem__(self, key: str) -> Any:
|
|
35
|
+
return self.additional_properties[key]
|
|
36
|
+
|
|
37
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
38
|
+
self.additional_properties[key] = value
|
|
39
|
+
|
|
40
|
+
def __delitem__(self, key: str) -> None:
|
|
41
|
+
del self.additional_properties[key]
|
|
42
|
+
|
|
43
|
+
def __contains__(self, key: str) -> bool:
|
|
44
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from typing import Any, TypeVar
|
|
3
|
+
|
|
4
|
+
from attrs import define as _attrs_define
|
|
5
|
+
from attrs import field as _attrs_field
|
|
6
|
+
|
|
7
|
+
T = TypeVar("T", bound="MonitorUpdateRequestWebhookHeaders")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@_attrs_define
|
|
11
|
+
class MonitorUpdateRequestWebhookHeaders:
|
|
12
|
+
""" """
|
|
13
|
+
|
|
14
|
+
additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict)
|
|
15
|
+
|
|
16
|
+
def to_dict(self) -> dict[str, Any]:
|
|
17
|
+
field_dict: dict[str, Any] = {}
|
|
18
|
+
field_dict.update(self.additional_properties)
|
|
19
|
+
|
|
20
|
+
return field_dict
|
|
21
|
+
|
|
22
|
+
@classmethod
|
|
23
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
24
|
+
d = dict(src_dict)
|
|
25
|
+
monitor_update_request_webhook_headers = cls()
|
|
26
|
+
|
|
27
|
+
monitor_update_request_webhook_headers.additional_properties = d
|
|
28
|
+
return monitor_update_request_webhook_headers
|
|
29
|
+
|
|
30
|
+
@property
|
|
31
|
+
def additional_keys(self) -> list[str]:
|
|
32
|
+
return list(self.additional_properties.keys())
|
|
33
|
+
|
|
34
|
+
def __getitem__(self, key: str) -> str:
|
|
35
|
+
return self.additional_properties[key]
|
|
36
|
+
|
|
37
|
+
def __setitem__(self, key: str, value: str) -> None:
|
|
38
|
+
self.additional_properties[key] = value
|
|
39
|
+
|
|
40
|
+
def __delitem__(self, key: str) -> None:
|
|
41
|
+
del self.additional_properties[key]
|
|
42
|
+
|
|
43
|
+
def __contains__(self, key: str) -> bool:
|
|
44
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from typing import (
|
|
3
|
+
TYPE_CHECKING,
|
|
4
|
+
Any,
|
|
5
|
+
TypeVar,
|
|
6
|
+
Union,
|
|
7
|
+
cast,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
from attrs import define as _attrs_define
|
|
11
|
+
from attrs import field as _attrs_field
|
|
12
|
+
|
|
13
|
+
from ..models.scrape_error_envelope_schema_version import (
|
|
14
|
+
ScrapeErrorEnvelopeSchemaVersion,
|
|
15
|
+
)
|
|
16
|
+
from ..models.scrape_error_envelope_status import ScrapeErrorEnvelopeStatus
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from ..models.scrape_error_envelope_error import ScrapeErrorEnvelopeError
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
T = TypeVar("T", bound="ScrapeErrorEnvelope")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@_attrs_define
|
|
26
|
+
class ScrapeErrorEnvelope:
|
|
27
|
+
"""
|
|
28
|
+
Example:
|
|
29
|
+
{'schema_version': 1, 'status': 'failed', 'id': 'sc_01j9abc123', 'error': {'code': 'blocked', 'message':
|
|
30
|
+
'Request blocked by the upstream site', 'http_status': 403, 'failed_at': datetime.datetime(2025, 1, 15, 12, 0,
|
|
31
|
+
tzinfo=datetime.timezone(datetime.timedelta(0), 'Z'))}}
|
|
32
|
+
|
|
33
|
+
Attributes:
|
|
34
|
+
schema_version (ScrapeErrorEnvelopeSchemaVersion): Envelope contract version emitted by current producers.
|
|
35
|
+
Consumers reading persisted envelopes must tolerate its absence as legacy v0 during rolling deploys.
|
|
36
|
+
status (ScrapeErrorEnvelopeStatus):
|
|
37
|
+
id (Union[None, str]): Stable job identifier (sc_… prefixed) when available; null when the job was never queued
|
|
38
|
+
(e.g. validation failure).
|
|
39
|
+
error (ScrapeErrorEnvelopeError):
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
schema_version: ScrapeErrorEnvelopeSchemaVersion
|
|
43
|
+
status: ScrapeErrorEnvelopeStatus
|
|
44
|
+
id: Union[None, str]
|
|
45
|
+
error: "ScrapeErrorEnvelopeError"
|
|
46
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
47
|
+
|
|
48
|
+
def to_dict(self) -> dict[str, Any]:
|
|
49
|
+
schema_version = self.schema_version.value
|
|
50
|
+
|
|
51
|
+
status = self.status.value
|
|
52
|
+
|
|
53
|
+
id: Union[None, str]
|
|
54
|
+
id = self.id
|
|
55
|
+
|
|
56
|
+
error = self.error.to_dict()
|
|
57
|
+
|
|
58
|
+
field_dict: dict[str, Any] = {}
|
|
59
|
+
field_dict.update(self.additional_properties)
|
|
60
|
+
field_dict.update(
|
|
61
|
+
{
|
|
62
|
+
"schema_version": schema_version,
|
|
63
|
+
"status": status,
|
|
64
|
+
"id": id,
|
|
65
|
+
"error": error,
|
|
66
|
+
}
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
return field_dict
|
|
70
|
+
|
|
71
|
+
@classmethod
|
|
72
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
73
|
+
from ..models.scrape_error_envelope_error import ScrapeErrorEnvelopeError
|
|
74
|
+
|
|
75
|
+
d = dict(src_dict)
|
|
76
|
+
schema_version = ScrapeErrorEnvelopeSchemaVersion(d.pop("schema_version"))
|
|
77
|
+
|
|
78
|
+
status = ScrapeErrorEnvelopeStatus(d.pop("status"))
|
|
79
|
+
|
|
80
|
+
def _parse_id(data: object) -> Union[None, str]:
|
|
81
|
+
if data is None:
|
|
82
|
+
return data
|
|
83
|
+
return cast(Union[None, str], data)
|
|
84
|
+
|
|
85
|
+
id = _parse_id(d.pop("id"))
|
|
86
|
+
|
|
87
|
+
error = ScrapeErrorEnvelopeError.from_dict(d.pop("error"))
|
|
88
|
+
|
|
89
|
+
scrape_error_envelope = cls(
|
|
90
|
+
schema_version=schema_version,
|
|
91
|
+
status=status,
|
|
92
|
+
id=id,
|
|
93
|
+
error=error,
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
scrape_error_envelope.additional_properties = d
|
|
97
|
+
return scrape_error_envelope
|
|
98
|
+
|
|
99
|
+
@property
|
|
100
|
+
def additional_keys(self) -> list[str]:
|
|
101
|
+
return list(self.additional_properties.keys())
|
|
102
|
+
|
|
103
|
+
def __getitem__(self, key: str) -> Any:
|
|
104
|
+
return self.additional_properties[key]
|
|
105
|
+
|
|
106
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
107
|
+
self.additional_properties[key] = value
|
|
108
|
+
|
|
109
|
+
def __delitem__(self, key: str) -> None:
|
|
110
|
+
del self.additional_properties[key]
|
|
111
|
+
|
|
112
|
+
def __contains__(self, key: str) -> bool:
|
|
113
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
from collections.abc import Mapping
|
|
3
|
+
from typing import (
|
|
4
|
+
Any,
|
|
5
|
+
TypeVar,
|
|
6
|
+
Union,
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
from attrs import define as _attrs_define
|
|
10
|
+
from attrs import field as _attrs_field
|
|
11
|
+
from dateutil.parser import isoparse
|
|
12
|
+
|
|
13
|
+
from ..models.scrape_error_envelope_error_code import ScrapeErrorEnvelopeErrorCode
|
|
14
|
+
from ..types import UNSET, Unset
|
|
15
|
+
|
|
16
|
+
T = TypeVar("T", bound="ScrapeErrorEnvelopeError")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@_attrs_define
|
|
20
|
+
class ScrapeErrorEnvelopeError:
|
|
21
|
+
"""
|
|
22
|
+
Attributes:
|
|
23
|
+
code (ScrapeErrorEnvelopeErrorCode):
|
|
24
|
+
message (str):
|
|
25
|
+
failed_at (datetime.datetime):
|
|
26
|
+
http_status (Union[Unset, int]):
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
code: ScrapeErrorEnvelopeErrorCode
|
|
30
|
+
message: str
|
|
31
|
+
failed_at: datetime.datetime
|
|
32
|
+
http_status: Union[Unset, int] = UNSET
|
|
33
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
34
|
+
|
|
35
|
+
def to_dict(self) -> dict[str, Any]:
|
|
36
|
+
code = self.code.value
|
|
37
|
+
|
|
38
|
+
message = self.message
|
|
39
|
+
|
|
40
|
+
failed_at = self.failed_at.isoformat()
|
|
41
|
+
|
|
42
|
+
http_status = self.http_status
|
|
43
|
+
|
|
44
|
+
field_dict: dict[str, Any] = {}
|
|
45
|
+
field_dict.update(self.additional_properties)
|
|
46
|
+
field_dict.update(
|
|
47
|
+
{
|
|
48
|
+
"code": code,
|
|
49
|
+
"message": message,
|
|
50
|
+
"failed_at": failed_at,
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
if http_status is not UNSET:
|
|
54
|
+
field_dict["http_status"] = http_status
|
|
55
|
+
|
|
56
|
+
return field_dict
|
|
57
|
+
|
|
58
|
+
@classmethod
|
|
59
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
60
|
+
d = dict(src_dict)
|
|
61
|
+
code = ScrapeErrorEnvelopeErrorCode(d.pop("code"))
|
|
62
|
+
|
|
63
|
+
message = d.pop("message")
|
|
64
|
+
|
|
65
|
+
failed_at = isoparse(d.pop("failed_at"))
|
|
66
|
+
|
|
67
|
+
http_status = d.pop("http_status", UNSET)
|
|
68
|
+
|
|
69
|
+
scrape_error_envelope_error = cls(
|
|
70
|
+
code=code,
|
|
71
|
+
message=message,
|
|
72
|
+
failed_at=failed_at,
|
|
73
|
+
http_status=http_status,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
scrape_error_envelope_error.additional_properties = d
|
|
77
|
+
return scrape_error_envelope_error
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def additional_keys(self) -> list[str]:
|
|
81
|
+
return list(self.additional_properties.keys())
|
|
82
|
+
|
|
83
|
+
def __getitem__(self, key: str) -> Any:
|
|
84
|
+
return self.additional_properties[key]
|
|
85
|
+
|
|
86
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
87
|
+
self.additional_properties[key] = value
|
|
88
|
+
|
|
89
|
+
def __delitem__(self, key: str) -> None:
|
|
90
|
+
del self.additional_properties[key]
|
|
91
|
+
|
|
92
|
+
def __contains__(self, key: str) -> bool:
|
|
93
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ScrapeErrorEnvelopeErrorCode(str, Enum):
|
|
5
|
+
BLOCKED = "blocked"
|
|
6
|
+
INTERNAL_ERROR = "internal_error"
|
|
7
|
+
INVALID_URL = "invalid_url"
|
|
8
|
+
PAYLOAD_TOO_LARGE = "payload_too_large"
|
|
9
|
+
QUOTA_EXHAUSTED = "quota_exhausted"
|
|
10
|
+
RATE_LIMITED = "rate_limited"
|
|
11
|
+
REQUEST_TOO_LARGE = "request_too_large"
|
|
12
|
+
TIMEOUT = "timeout"
|
|
13
|
+
UNSUPPORTED_CONTENT_TYPE = "unsupported_content_type"
|
|
14
|
+
UPSTREAM_ERROR = "upstream_error"
|
|
15
|
+
VALIDATION_ERROR = "validation_error"
|
|
16
|
+
|
|
17
|
+
def __str__(self) -> str:
|
|
18
|
+
return str(self.value)
|