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,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="MonitorCreateRequestScrapeOptions")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@_attrs_define
|
|
11
|
+
class MonitorCreateRequestScrapeOptions:
|
|
12
|
+
"""Scrape monitor options (formats, country, headers, etc.). Only for type=scrape."""
|
|
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_create_request_scrape_options = cls()
|
|
26
|
+
|
|
27
|
+
monitor_create_request_scrape_options.additional_properties = d
|
|
28
|
+
return monitor_create_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="MonitorCreateRequestWebhookHeaders")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@_attrs_define
|
|
11
|
+
class MonitorCreateRequestWebhookHeaders:
|
|
12
|
+
"""Max 20 headers. Keys must match /^[A-Za-z0-9-]+$/ and not be reserved."""
|
|
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_create_request_webhook_headers = cls()
|
|
26
|
+
|
|
27
|
+
monitor_create_request_webhook_headers.additional_properties = d
|
|
28
|
+
return monitor_create_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,423 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
from collections.abc import Mapping
|
|
3
|
+
from typing import (
|
|
4
|
+
TYPE_CHECKING,
|
|
5
|
+
Any,
|
|
6
|
+
TypeVar,
|
|
7
|
+
Union,
|
|
8
|
+
cast,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
from attrs import define as _attrs_define
|
|
12
|
+
from attrs import field as _attrs_field
|
|
13
|
+
from dateutil.parser import isoparse
|
|
14
|
+
|
|
15
|
+
from ..models.monitor_response_interval_type import MonitorResponseIntervalType
|
|
16
|
+
from ..models.monitor_response_status import MonitorResponseStatus
|
|
17
|
+
from ..models.monitor_response_type import MonitorResponseType
|
|
18
|
+
from ..types import UNSET, Unset
|
|
19
|
+
|
|
20
|
+
if TYPE_CHECKING:
|
|
21
|
+
from ..models.monitor_response_metadata_type_0 import MonitorResponseMetadataType0
|
|
22
|
+
from ..models.monitor_response_webhook_headers_type_0 import (
|
|
23
|
+
MonitorResponseWebhookHeadersType0,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
T = TypeVar("T", bound="MonitorCreateResponse")
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@_attrs_define
|
|
31
|
+
class MonitorCreateResponse:
|
|
32
|
+
"""
|
|
33
|
+
Attributes:
|
|
34
|
+
id (str): Example: mon_01j9abc123.
|
|
35
|
+
type_ (MonitorResponseType):
|
|
36
|
+
url (str):
|
|
37
|
+
status (MonitorResponseStatus):
|
|
38
|
+
interval_type (MonitorResponseIntervalType):
|
|
39
|
+
cron_expression (Union[None, str]):
|
|
40
|
+
next_capture_at (datetime.datetime):
|
|
41
|
+
notify_on (str):
|
|
42
|
+
webhook_url (str): Webhook endpoint URL (HTTPS only; http:// rejected with 400 invalid_url, reason
|
|
43
|
+
scheme_unsupported)
|
|
44
|
+
webhook_headers (Union['MonitorResponseWebhookHeadersType0', None]):
|
|
45
|
+
captures_count (int):
|
|
46
|
+
changes_count (int):
|
|
47
|
+
skipped_captures (int):
|
|
48
|
+
last_captured_at (Union[None, datetime.datetime]):
|
|
49
|
+
last_changed_at (Union[None, datetime.datetime]):
|
|
50
|
+
consecutive_failures (int): Number of consecutive capture failures. Resets to 0 on success. Used to trigger
|
|
51
|
+
auto-suspension.
|
|
52
|
+
last_error_code (Union[None, str]): Error code from the most recent failed capture, if any.
|
|
53
|
+
suspension_reason (Union[None, str]): Reason the monitor was auto-suspended (e.g.
|
|
54
|
+
"auto_suspended_consecutive_failures"), if applicable.
|
|
55
|
+
metadata (Union['MonitorResponseMetadataType0', None]):
|
|
56
|
+
created_at (datetime.datetime):
|
|
57
|
+
updated_at (datetime.datetime):
|
|
58
|
+
cancelled_at (Union[None, datetime.datetime]):
|
|
59
|
+
change_threshold (Union[Unset, str]): Present on screenshot monitors only.
|
|
60
|
+
scrape_options (Union[Unset, Any]): Present on scrape monitors only.
|
|
61
|
+
last_content_hash (Union[None, Unset, str]): Present on scrape monitors only.
|
|
62
|
+
webhook_secret (Union[Unset, str]): The webhook signing secret — returned **once** at creation time only.
|
|
63
|
+
Subsequent GET requests omit this field. Always present on a create response (`webhook_url` is required on
|
|
64
|
+
create). Format: 64 lowercase hex characters (32 bytes of entropy).
|
|
65
|
+
Example: a3f1b2c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2.
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
id: str
|
|
69
|
+
type_: MonitorResponseType
|
|
70
|
+
url: str
|
|
71
|
+
status: MonitorResponseStatus
|
|
72
|
+
interval_type: MonitorResponseIntervalType
|
|
73
|
+
cron_expression: Union[None, str]
|
|
74
|
+
next_capture_at: datetime.datetime
|
|
75
|
+
notify_on: str
|
|
76
|
+
webhook_url: str
|
|
77
|
+
webhook_headers: Union["MonitorResponseWebhookHeadersType0", None]
|
|
78
|
+
captures_count: int
|
|
79
|
+
changes_count: int
|
|
80
|
+
skipped_captures: int
|
|
81
|
+
last_captured_at: Union[None, datetime.datetime]
|
|
82
|
+
last_changed_at: Union[None, datetime.datetime]
|
|
83
|
+
consecutive_failures: int
|
|
84
|
+
last_error_code: Union[None, str]
|
|
85
|
+
suspension_reason: Union[None, str]
|
|
86
|
+
metadata: Union["MonitorResponseMetadataType0", None]
|
|
87
|
+
created_at: datetime.datetime
|
|
88
|
+
updated_at: datetime.datetime
|
|
89
|
+
cancelled_at: Union[None, datetime.datetime]
|
|
90
|
+
change_threshold: Union[Unset, str] = UNSET
|
|
91
|
+
scrape_options: Union[Unset, Any] = UNSET
|
|
92
|
+
last_content_hash: Union[None, Unset, str] = UNSET
|
|
93
|
+
webhook_secret: Union[Unset, str] = UNSET
|
|
94
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
95
|
+
|
|
96
|
+
def to_dict(self) -> dict[str, Any]:
|
|
97
|
+
from ..models.monitor_response_metadata_type_0 import (
|
|
98
|
+
MonitorResponseMetadataType0,
|
|
99
|
+
)
|
|
100
|
+
from ..models.monitor_response_webhook_headers_type_0 import (
|
|
101
|
+
MonitorResponseWebhookHeadersType0,
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
id = self.id
|
|
105
|
+
|
|
106
|
+
type_ = self.type_.value
|
|
107
|
+
|
|
108
|
+
url = self.url
|
|
109
|
+
|
|
110
|
+
status = self.status.value
|
|
111
|
+
|
|
112
|
+
interval_type = self.interval_type.value
|
|
113
|
+
|
|
114
|
+
cron_expression: Union[None, str]
|
|
115
|
+
cron_expression = self.cron_expression
|
|
116
|
+
|
|
117
|
+
next_capture_at = self.next_capture_at.isoformat()
|
|
118
|
+
|
|
119
|
+
notify_on = self.notify_on
|
|
120
|
+
|
|
121
|
+
webhook_url = self.webhook_url
|
|
122
|
+
|
|
123
|
+
webhook_headers: Union[None, dict[str, Any]]
|
|
124
|
+
if isinstance(self.webhook_headers, MonitorResponseWebhookHeadersType0):
|
|
125
|
+
webhook_headers = self.webhook_headers.to_dict()
|
|
126
|
+
else:
|
|
127
|
+
webhook_headers = self.webhook_headers
|
|
128
|
+
|
|
129
|
+
captures_count = self.captures_count
|
|
130
|
+
|
|
131
|
+
changes_count = self.changes_count
|
|
132
|
+
|
|
133
|
+
skipped_captures = self.skipped_captures
|
|
134
|
+
|
|
135
|
+
last_captured_at: Union[None, str]
|
|
136
|
+
if isinstance(self.last_captured_at, datetime.datetime):
|
|
137
|
+
last_captured_at = self.last_captured_at.isoformat()
|
|
138
|
+
else:
|
|
139
|
+
last_captured_at = self.last_captured_at
|
|
140
|
+
|
|
141
|
+
last_changed_at: Union[None, str]
|
|
142
|
+
if isinstance(self.last_changed_at, datetime.datetime):
|
|
143
|
+
last_changed_at = self.last_changed_at.isoformat()
|
|
144
|
+
else:
|
|
145
|
+
last_changed_at = self.last_changed_at
|
|
146
|
+
|
|
147
|
+
consecutive_failures = self.consecutive_failures
|
|
148
|
+
|
|
149
|
+
last_error_code: Union[None, str]
|
|
150
|
+
last_error_code = self.last_error_code
|
|
151
|
+
|
|
152
|
+
suspension_reason: Union[None, str]
|
|
153
|
+
suspension_reason = self.suspension_reason
|
|
154
|
+
|
|
155
|
+
metadata: Union[None, dict[str, Any]]
|
|
156
|
+
if isinstance(self.metadata, MonitorResponseMetadataType0):
|
|
157
|
+
metadata = self.metadata.to_dict()
|
|
158
|
+
else:
|
|
159
|
+
metadata = self.metadata
|
|
160
|
+
|
|
161
|
+
created_at = self.created_at.isoformat()
|
|
162
|
+
|
|
163
|
+
updated_at = self.updated_at.isoformat()
|
|
164
|
+
|
|
165
|
+
cancelled_at: Union[None, str]
|
|
166
|
+
if isinstance(self.cancelled_at, datetime.datetime):
|
|
167
|
+
cancelled_at = self.cancelled_at.isoformat()
|
|
168
|
+
else:
|
|
169
|
+
cancelled_at = self.cancelled_at
|
|
170
|
+
|
|
171
|
+
change_threshold = self.change_threshold
|
|
172
|
+
|
|
173
|
+
scrape_options = self.scrape_options
|
|
174
|
+
|
|
175
|
+
last_content_hash: Union[None, Unset, str]
|
|
176
|
+
if isinstance(self.last_content_hash, Unset):
|
|
177
|
+
last_content_hash = UNSET
|
|
178
|
+
else:
|
|
179
|
+
last_content_hash = self.last_content_hash
|
|
180
|
+
|
|
181
|
+
webhook_secret = self.webhook_secret
|
|
182
|
+
|
|
183
|
+
field_dict: dict[str, Any] = {}
|
|
184
|
+
field_dict.update(self.additional_properties)
|
|
185
|
+
field_dict.update(
|
|
186
|
+
{
|
|
187
|
+
"id": id,
|
|
188
|
+
"type": type_,
|
|
189
|
+
"url": url,
|
|
190
|
+
"status": status,
|
|
191
|
+
"interval_type": interval_type,
|
|
192
|
+
"cron_expression": cron_expression,
|
|
193
|
+
"next_capture_at": next_capture_at,
|
|
194
|
+
"notify_on": notify_on,
|
|
195
|
+
"webhook_url": webhook_url,
|
|
196
|
+
"webhook_headers": webhook_headers,
|
|
197
|
+
"captures_count": captures_count,
|
|
198
|
+
"changes_count": changes_count,
|
|
199
|
+
"skipped_captures": skipped_captures,
|
|
200
|
+
"last_captured_at": last_captured_at,
|
|
201
|
+
"last_changed_at": last_changed_at,
|
|
202
|
+
"consecutive_failures": consecutive_failures,
|
|
203
|
+
"last_error_code": last_error_code,
|
|
204
|
+
"suspension_reason": suspension_reason,
|
|
205
|
+
"metadata": metadata,
|
|
206
|
+
"created_at": created_at,
|
|
207
|
+
"updated_at": updated_at,
|
|
208
|
+
"cancelled_at": cancelled_at,
|
|
209
|
+
}
|
|
210
|
+
)
|
|
211
|
+
if change_threshold is not UNSET:
|
|
212
|
+
field_dict["change_threshold"] = change_threshold
|
|
213
|
+
if scrape_options is not UNSET:
|
|
214
|
+
field_dict["scrape_options"] = scrape_options
|
|
215
|
+
if last_content_hash is not UNSET:
|
|
216
|
+
field_dict["last_content_hash"] = last_content_hash
|
|
217
|
+
if webhook_secret is not UNSET:
|
|
218
|
+
field_dict["webhook_secret"] = webhook_secret
|
|
219
|
+
|
|
220
|
+
return field_dict
|
|
221
|
+
|
|
222
|
+
@classmethod
|
|
223
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
224
|
+
from ..models.monitor_response_metadata_type_0 import (
|
|
225
|
+
MonitorResponseMetadataType0,
|
|
226
|
+
)
|
|
227
|
+
from ..models.monitor_response_webhook_headers_type_0 import (
|
|
228
|
+
MonitorResponseWebhookHeadersType0,
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
d = dict(src_dict)
|
|
232
|
+
id = d.pop("id")
|
|
233
|
+
|
|
234
|
+
type_ = MonitorResponseType(d.pop("type"))
|
|
235
|
+
|
|
236
|
+
url = d.pop("url")
|
|
237
|
+
|
|
238
|
+
status = MonitorResponseStatus(d.pop("status"))
|
|
239
|
+
|
|
240
|
+
interval_type = MonitorResponseIntervalType(d.pop("interval_type"))
|
|
241
|
+
|
|
242
|
+
def _parse_cron_expression(data: object) -> Union[None, str]:
|
|
243
|
+
if data is None:
|
|
244
|
+
return data
|
|
245
|
+
return cast(Union[None, str], data)
|
|
246
|
+
|
|
247
|
+
cron_expression = _parse_cron_expression(d.pop("cron_expression"))
|
|
248
|
+
|
|
249
|
+
next_capture_at = isoparse(d.pop("next_capture_at"))
|
|
250
|
+
|
|
251
|
+
notify_on = d.pop("notify_on")
|
|
252
|
+
|
|
253
|
+
webhook_url = d.pop("webhook_url")
|
|
254
|
+
|
|
255
|
+
def _parse_webhook_headers(
|
|
256
|
+
data: object,
|
|
257
|
+
) -> Union["MonitorResponseWebhookHeadersType0", None]:
|
|
258
|
+
if data is None:
|
|
259
|
+
return data
|
|
260
|
+
try:
|
|
261
|
+
if not isinstance(data, dict):
|
|
262
|
+
raise TypeError()
|
|
263
|
+
webhook_headers_type_0 = MonitorResponseWebhookHeadersType0.from_dict(
|
|
264
|
+
data
|
|
265
|
+
)
|
|
266
|
+
|
|
267
|
+
return webhook_headers_type_0
|
|
268
|
+
except: # noqa: E722
|
|
269
|
+
pass
|
|
270
|
+
return cast(Union["MonitorResponseWebhookHeadersType0", None], data)
|
|
271
|
+
|
|
272
|
+
webhook_headers = _parse_webhook_headers(d.pop("webhook_headers"))
|
|
273
|
+
|
|
274
|
+
captures_count = d.pop("captures_count")
|
|
275
|
+
|
|
276
|
+
changes_count = d.pop("changes_count")
|
|
277
|
+
|
|
278
|
+
skipped_captures = d.pop("skipped_captures")
|
|
279
|
+
|
|
280
|
+
def _parse_last_captured_at(data: object) -> Union[None, datetime.datetime]:
|
|
281
|
+
if data is None:
|
|
282
|
+
return data
|
|
283
|
+
try:
|
|
284
|
+
if not isinstance(data, str):
|
|
285
|
+
raise TypeError()
|
|
286
|
+
last_captured_at_type_0 = isoparse(data)
|
|
287
|
+
|
|
288
|
+
return last_captured_at_type_0
|
|
289
|
+
except: # noqa: E722
|
|
290
|
+
pass
|
|
291
|
+
return cast(Union[None, datetime.datetime], data)
|
|
292
|
+
|
|
293
|
+
last_captured_at = _parse_last_captured_at(d.pop("last_captured_at"))
|
|
294
|
+
|
|
295
|
+
def _parse_last_changed_at(data: object) -> Union[None, datetime.datetime]:
|
|
296
|
+
if data is None:
|
|
297
|
+
return data
|
|
298
|
+
try:
|
|
299
|
+
if not isinstance(data, str):
|
|
300
|
+
raise TypeError()
|
|
301
|
+
last_changed_at_type_0 = isoparse(data)
|
|
302
|
+
|
|
303
|
+
return last_changed_at_type_0
|
|
304
|
+
except: # noqa: E722
|
|
305
|
+
pass
|
|
306
|
+
return cast(Union[None, datetime.datetime], data)
|
|
307
|
+
|
|
308
|
+
last_changed_at = _parse_last_changed_at(d.pop("last_changed_at"))
|
|
309
|
+
|
|
310
|
+
consecutive_failures = d.pop("consecutive_failures")
|
|
311
|
+
|
|
312
|
+
def _parse_last_error_code(data: object) -> Union[None, str]:
|
|
313
|
+
if data is None:
|
|
314
|
+
return data
|
|
315
|
+
return cast(Union[None, str], data)
|
|
316
|
+
|
|
317
|
+
last_error_code = _parse_last_error_code(d.pop("last_error_code"))
|
|
318
|
+
|
|
319
|
+
def _parse_suspension_reason(data: object) -> Union[None, str]:
|
|
320
|
+
if data is None:
|
|
321
|
+
return data
|
|
322
|
+
return cast(Union[None, str], data)
|
|
323
|
+
|
|
324
|
+
suspension_reason = _parse_suspension_reason(d.pop("suspension_reason"))
|
|
325
|
+
|
|
326
|
+
def _parse_metadata(
|
|
327
|
+
data: object,
|
|
328
|
+
) -> Union["MonitorResponseMetadataType0", None]:
|
|
329
|
+
if data is None:
|
|
330
|
+
return data
|
|
331
|
+
try:
|
|
332
|
+
if not isinstance(data, dict):
|
|
333
|
+
raise TypeError()
|
|
334
|
+
metadata_type_0 = MonitorResponseMetadataType0.from_dict(data)
|
|
335
|
+
|
|
336
|
+
return metadata_type_0
|
|
337
|
+
except: # noqa: E722
|
|
338
|
+
pass
|
|
339
|
+
return cast(Union["MonitorResponseMetadataType0", None], data)
|
|
340
|
+
|
|
341
|
+
metadata = _parse_metadata(d.pop("metadata"))
|
|
342
|
+
|
|
343
|
+
created_at = isoparse(d.pop("created_at"))
|
|
344
|
+
|
|
345
|
+
updated_at = isoparse(d.pop("updated_at"))
|
|
346
|
+
|
|
347
|
+
def _parse_cancelled_at(data: object) -> Union[None, datetime.datetime]:
|
|
348
|
+
if data is None:
|
|
349
|
+
return data
|
|
350
|
+
try:
|
|
351
|
+
if not isinstance(data, str):
|
|
352
|
+
raise TypeError()
|
|
353
|
+
cancelled_at_type_0 = isoparse(data)
|
|
354
|
+
|
|
355
|
+
return cancelled_at_type_0
|
|
356
|
+
except: # noqa: E722
|
|
357
|
+
pass
|
|
358
|
+
return cast(Union[None, datetime.datetime], data)
|
|
359
|
+
|
|
360
|
+
cancelled_at = _parse_cancelled_at(d.pop("cancelled_at"))
|
|
361
|
+
|
|
362
|
+
change_threshold = d.pop("change_threshold", UNSET)
|
|
363
|
+
|
|
364
|
+
scrape_options = d.pop("scrape_options", UNSET)
|
|
365
|
+
|
|
366
|
+
def _parse_last_content_hash(data: object) -> Union[None, Unset, str]:
|
|
367
|
+
if data is None:
|
|
368
|
+
return data
|
|
369
|
+
if isinstance(data, Unset):
|
|
370
|
+
return data
|
|
371
|
+
return cast(Union[None, Unset, str], data)
|
|
372
|
+
|
|
373
|
+
last_content_hash = _parse_last_content_hash(d.pop("last_content_hash", UNSET))
|
|
374
|
+
|
|
375
|
+
webhook_secret = d.pop("webhook_secret", UNSET)
|
|
376
|
+
|
|
377
|
+
monitor_create_response = cls(
|
|
378
|
+
id=id,
|
|
379
|
+
type_=type_,
|
|
380
|
+
url=url,
|
|
381
|
+
status=status,
|
|
382
|
+
interval_type=interval_type,
|
|
383
|
+
cron_expression=cron_expression,
|
|
384
|
+
next_capture_at=next_capture_at,
|
|
385
|
+
notify_on=notify_on,
|
|
386
|
+
webhook_url=webhook_url,
|
|
387
|
+
webhook_headers=webhook_headers,
|
|
388
|
+
captures_count=captures_count,
|
|
389
|
+
changes_count=changes_count,
|
|
390
|
+
skipped_captures=skipped_captures,
|
|
391
|
+
last_captured_at=last_captured_at,
|
|
392
|
+
last_changed_at=last_changed_at,
|
|
393
|
+
consecutive_failures=consecutive_failures,
|
|
394
|
+
last_error_code=last_error_code,
|
|
395
|
+
suspension_reason=suspension_reason,
|
|
396
|
+
metadata=metadata,
|
|
397
|
+
created_at=created_at,
|
|
398
|
+
updated_at=updated_at,
|
|
399
|
+
cancelled_at=cancelled_at,
|
|
400
|
+
change_threshold=change_threshold,
|
|
401
|
+
scrape_options=scrape_options,
|
|
402
|
+
last_content_hash=last_content_hash,
|
|
403
|
+
webhook_secret=webhook_secret,
|
|
404
|
+
)
|
|
405
|
+
|
|
406
|
+
monitor_create_response.additional_properties = d
|
|
407
|
+
return monitor_create_response
|
|
408
|
+
|
|
409
|
+
@property
|
|
410
|
+
def additional_keys(self) -> list[str]:
|
|
411
|
+
return list(self.additional_properties.keys())
|
|
412
|
+
|
|
413
|
+
def __getitem__(self, key: str) -> Any:
|
|
414
|
+
return self.additional_properties[key]
|
|
415
|
+
|
|
416
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
417
|
+
self.additional_properties[key] = value
|
|
418
|
+
|
|
419
|
+
def __delitem__(self, key: str) -> None:
|
|
420
|
+
del self.additional_properties[key]
|
|
421
|
+
|
|
422
|
+
def __contains__(self, key: str) -> bool:
|
|
423
|
+
return key in self.additional_properties
|