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,164 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
from collections.abc import Mapping
|
|
3
|
+
from typing import (
|
|
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
|
+
from dateutil.parser import isoparse
|
|
13
|
+
|
|
14
|
+
from ..models.get_scrape_bulk_response_200_status import GetScrapeBulkResponse200Status
|
|
15
|
+
|
|
16
|
+
T = TypeVar("T", bound="GetScrapeBulkResponse200")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@_attrs_define
|
|
20
|
+
class GetScrapeBulkResponse200:
|
|
21
|
+
"""
|
|
22
|
+
Attributes:
|
|
23
|
+
id (str): Example: bulk_01j9abc123.
|
|
24
|
+
status (GetScrapeBulkResponse200Status):
|
|
25
|
+
total (int):
|
|
26
|
+
completed (int):
|
|
27
|
+
failed (int):
|
|
28
|
+
created_at (datetime.datetime):
|
|
29
|
+
completed_at (Union[None, datetime.datetime]):
|
|
30
|
+
total_credits_charged (int):
|
|
31
|
+
estimated_credits (Union[None, int]): Null in GET responses (computed at submission time only).
|
|
32
|
+
webhook_url (str): Webhook endpoint URL (HTTPS only; http:// rejected with 400 invalid_url, reason
|
|
33
|
+
scheme_unsupported)
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
id: str
|
|
37
|
+
status: GetScrapeBulkResponse200Status
|
|
38
|
+
total: int
|
|
39
|
+
completed: int
|
|
40
|
+
failed: int
|
|
41
|
+
created_at: datetime.datetime
|
|
42
|
+
completed_at: Union[None, datetime.datetime]
|
|
43
|
+
total_credits_charged: int
|
|
44
|
+
estimated_credits: Union[None, int]
|
|
45
|
+
webhook_url: str
|
|
46
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
47
|
+
|
|
48
|
+
def to_dict(self) -> dict[str, Any]:
|
|
49
|
+
id = self.id
|
|
50
|
+
|
|
51
|
+
status = self.status.value
|
|
52
|
+
|
|
53
|
+
total = self.total
|
|
54
|
+
|
|
55
|
+
completed = self.completed
|
|
56
|
+
|
|
57
|
+
failed = self.failed
|
|
58
|
+
|
|
59
|
+
created_at = self.created_at.isoformat()
|
|
60
|
+
|
|
61
|
+
completed_at: Union[None, str]
|
|
62
|
+
if isinstance(self.completed_at, datetime.datetime):
|
|
63
|
+
completed_at = self.completed_at.isoformat()
|
|
64
|
+
else:
|
|
65
|
+
completed_at = self.completed_at
|
|
66
|
+
|
|
67
|
+
total_credits_charged = self.total_credits_charged
|
|
68
|
+
|
|
69
|
+
estimated_credits: Union[None, int]
|
|
70
|
+
estimated_credits = self.estimated_credits
|
|
71
|
+
|
|
72
|
+
webhook_url = self.webhook_url
|
|
73
|
+
|
|
74
|
+
field_dict: dict[str, Any] = {}
|
|
75
|
+
field_dict.update(self.additional_properties)
|
|
76
|
+
field_dict.update(
|
|
77
|
+
{
|
|
78
|
+
"id": id,
|
|
79
|
+
"status": status,
|
|
80
|
+
"total": total,
|
|
81
|
+
"completed": completed,
|
|
82
|
+
"failed": failed,
|
|
83
|
+
"created_at": created_at,
|
|
84
|
+
"completed_at": completed_at,
|
|
85
|
+
"total_credits_charged": total_credits_charged,
|
|
86
|
+
"estimated_credits": estimated_credits,
|
|
87
|
+
"webhook_url": webhook_url,
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
return field_dict
|
|
92
|
+
|
|
93
|
+
@classmethod
|
|
94
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
95
|
+
d = dict(src_dict)
|
|
96
|
+
id = d.pop("id")
|
|
97
|
+
|
|
98
|
+
status = GetScrapeBulkResponse200Status(d.pop("status"))
|
|
99
|
+
|
|
100
|
+
total = d.pop("total")
|
|
101
|
+
|
|
102
|
+
completed = d.pop("completed")
|
|
103
|
+
|
|
104
|
+
failed = d.pop("failed")
|
|
105
|
+
|
|
106
|
+
created_at = isoparse(d.pop("created_at"))
|
|
107
|
+
|
|
108
|
+
def _parse_completed_at(data: object) -> Union[None, datetime.datetime]:
|
|
109
|
+
if data is None:
|
|
110
|
+
return data
|
|
111
|
+
try:
|
|
112
|
+
if not isinstance(data, str):
|
|
113
|
+
raise TypeError()
|
|
114
|
+
completed_at_type_0 = isoparse(data)
|
|
115
|
+
|
|
116
|
+
return completed_at_type_0
|
|
117
|
+
except: # noqa: E722
|
|
118
|
+
pass
|
|
119
|
+
return cast(Union[None, datetime.datetime], data)
|
|
120
|
+
|
|
121
|
+
completed_at = _parse_completed_at(d.pop("completed_at"))
|
|
122
|
+
|
|
123
|
+
total_credits_charged = d.pop("total_credits_charged")
|
|
124
|
+
|
|
125
|
+
def _parse_estimated_credits(data: object) -> Union[None, int]:
|
|
126
|
+
if data is None:
|
|
127
|
+
return data
|
|
128
|
+
return cast(Union[None, int], data)
|
|
129
|
+
|
|
130
|
+
estimated_credits = _parse_estimated_credits(d.pop("estimated_credits"))
|
|
131
|
+
|
|
132
|
+
webhook_url = d.pop("webhook_url")
|
|
133
|
+
|
|
134
|
+
get_scrape_bulk_response_200 = cls(
|
|
135
|
+
id=id,
|
|
136
|
+
status=status,
|
|
137
|
+
total=total,
|
|
138
|
+
completed=completed,
|
|
139
|
+
failed=failed,
|
|
140
|
+
created_at=created_at,
|
|
141
|
+
completed_at=completed_at,
|
|
142
|
+
total_credits_charged=total_credits_charged,
|
|
143
|
+
estimated_credits=estimated_credits,
|
|
144
|
+
webhook_url=webhook_url,
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
get_scrape_bulk_response_200.additional_properties = d
|
|
148
|
+
return get_scrape_bulk_response_200
|
|
149
|
+
|
|
150
|
+
@property
|
|
151
|
+
def additional_keys(self) -> list[str]:
|
|
152
|
+
return list(self.additional_properties.keys())
|
|
153
|
+
|
|
154
|
+
def __getitem__(self, key: str) -> Any:
|
|
155
|
+
return self.additional_properties[key]
|
|
156
|
+
|
|
157
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
158
|
+
self.additional_properties[key] = value
|
|
159
|
+
|
|
160
|
+
def __delitem__(self, key: str) -> None:
|
|
161
|
+
del self.additional_properties[key]
|
|
162
|
+
|
|
163
|
+
def __contains__(self, key: str) -> bool:
|
|
164
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
from collections.abc import Mapping
|
|
3
|
+
from typing import (
|
|
4
|
+
TYPE_CHECKING,
|
|
5
|
+
Any,
|
|
6
|
+
TypeVar,
|
|
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
|
+
if TYPE_CHECKING:
|
|
14
|
+
from ..models.get_usage_by_endpoint_response_200_rows_item import (
|
|
15
|
+
GetUsageByEndpointResponse200RowsItem,
|
|
16
|
+
)
|
|
17
|
+
from ..models.get_usage_by_endpoint_response_200_totals import (
|
|
18
|
+
GetUsageByEndpointResponse200Totals,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
T = TypeVar("T", bound="GetUsageByEndpointResponse200")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@_attrs_define
|
|
26
|
+
class GetUsageByEndpointResponse200:
|
|
27
|
+
"""
|
|
28
|
+
Attributes:
|
|
29
|
+
from_ (datetime.date):
|
|
30
|
+
to (datetime.date):
|
|
31
|
+
rows (list['GetUsageByEndpointResponse200RowsItem']): One entry per endpoint with non-zero usage in the range.
|
|
32
|
+
Zero-byte endpoints are omitted.
|
|
33
|
+
totals (GetUsageByEndpointResponse200Totals):
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
from_: datetime.date
|
|
37
|
+
to: datetime.date
|
|
38
|
+
rows: list["GetUsageByEndpointResponse200RowsItem"]
|
|
39
|
+
totals: "GetUsageByEndpointResponse200Totals"
|
|
40
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
41
|
+
|
|
42
|
+
def to_dict(self) -> dict[str, Any]:
|
|
43
|
+
from_ = self.from_.isoformat()
|
|
44
|
+
|
|
45
|
+
to = self.to.isoformat()
|
|
46
|
+
|
|
47
|
+
rows = []
|
|
48
|
+
for rows_item_data in self.rows:
|
|
49
|
+
rows_item = rows_item_data.to_dict()
|
|
50
|
+
rows.append(rows_item)
|
|
51
|
+
|
|
52
|
+
totals = self.totals.to_dict()
|
|
53
|
+
|
|
54
|
+
field_dict: dict[str, Any] = {}
|
|
55
|
+
field_dict.update(self.additional_properties)
|
|
56
|
+
field_dict.update(
|
|
57
|
+
{
|
|
58
|
+
"from": from_,
|
|
59
|
+
"to": to,
|
|
60
|
+
"rows": rows,
|
|
61
|
+
"totals": totals,
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
return field_dict
|
|
66
|
+
|
|
67
|
+
@classmethod
|
|
68
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
69
|
+
from ..models.get_usage_by_endpoint_response_200_rows_item import (
|
|
70
|
+
GetUsageByEndpointResponse200RowsItem,
|
|
71
|
+
)
|
|
72
|
+
from ..models.get_usage_by_endpoint_response_200_totals import (
|
|
73
|
+
GetUsageByEndpointResponse200Totals,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
d = dict(src_dict)
|
|
77
|
+
from_ = isoparse(d.pop("from")).date()
|
|
78
|
+
|
|
79
|
+
to = isoparse(d.pop("to")).date()
|
|
80
|
+
|
|
81
|
+
rows = []
|
|
82
|
+
_rows = d.pop("rows")
|
|
83
|
+
for rows_item_data in _rows:
|
|
84
|
+
rows_item = GetUsageByEndpointResponse200RowsItem.from_dict(rows_item_data)
|
|
85
|
+
|
|
86
|
+
rows.append(rows_item)
|
|
87
|
+
|
|
88
|
+
totals = GetUsageByEndpointResponse200Totals.from_dict(d.pop("totals"))
|
|
89
|
+
|
|
90
|
+
get_usage_by_endpoint_response_200 = cls(
|
|
91
|
+
from_=from_,
|
|
92
|
+
to=to,
|
|
93
|
+
rows=rows,
|
|
94
|
+
totals=totals,
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
get_usage_by_endpoint_response_200.additional_properties = d
|
|
98
|
+
return get_usage_by_endpoint_response_200
|
|
99
|
+
|
|
100
|
+
@property
|
|
101
|
+
def additional_keys(self) -> list[str]:
|
|
102
|
+
return list(self.additional_properties.keys())
|
|
103
|
+
|
|
104
|
+
def __getitem__(self, key: str) -> Any:
|
|
105
|
+
return self.additional_properties[key]
|
|
106
|
+
|
|
107
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
108
|
+
self.additional_properties[key] = value
|
|
109
|
+
|
|
110
|
+
def __delitem__(self, key: str) -> None:
|
|
111
|
+
del self.additional_properties[key]
|
|
112
|
+
|
|
113
|
+
def __contains__(self, key: str) -> bool:
|
|
114
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,90 @@
|
|
|
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
|
+
from ..models.get_usage_by_endpoint_response_200_rows_item_endpoint import (
|
|
8
|
+
GetUsageByEndpointResponse200RowsItemEndpoint,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="GetUsageByEndpointResponse200RowsItem")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class GetUsageByEndpointResponse200RowsItem:
|
|
16
|
+
"""
|
|
17
|
+
Attributes:
|
|
18
|
+
endpoint (GetUsageByEndpointResponse200RowsItemEndpoint):
|
|
19
|
+
raw_bytes (int): Raw upstream wire bytes for the endpoint. Screenshot and recording rows created before issue
|
|
20
|
+
2179 may reflect legacy billable Phase 1 bytes because exact raw totals cannot be recovered after per-job
|
|
21
|
+
rounding.
|
|
22
|
+
multiplier (float): Billing multiplier applied to raw bytes (e.g. 1.5 for
|
|
23
|
+
screenshots/recordings/scrape_md/crawl, 1.0 otherwise).
|
|
24
|
+
billable_bytes (int): raw_bytes × multiplier, rounded.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
endpoint: GetUsageByEndpointResponse200RowsItemEndpoint
|
|
28
|
+
raw_bytes: int
|
|
29
|
+
multiplier: float
|
|
30
|
+
billable_bytes: int
|
|
31
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
32
|
+
|
|
33
|
+
def to_dict(self) -> dict[str, Any]:
|
|
34
|
+
endpoint = self.endpoint.value
|
|
35
|
+
|
|
36
|
+
raw_bytes = self.raw_bytes
|
|
37
|
+
|
|
38
|
+
multiplier = self.multiplier
|
|
39
|
+
|
|
40
|
+
billable_bytes = self.billable_bytes
|
|
41
|
+
|
|
42
|
+
field_dict: dict[str, Any] = {}
|
|
43
|
+
field_dict.update(self.additional_properties)
|
|
44
|
+
field_dict.update(
|
|
45
|
+
{
|
|
46
|
+
"endpoint": endpoint,
|
|
47
|
+
"raw_bytes": raw_bytes,
|
|
48
|
+
"multiplier": multiplier,
|
|
49
|
+
"billable_bytes": billable_bytes,
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
return field_dict
|
|
54
|
+
|
|
55
|
+
@classmethod
|
|
56
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
57
|
+
d = dict(src_dict)
|
|
58
|
+
endpoint = GetUsageByEndpointResponse200RowsItemEndpoint(d.pop("endpoint"))
|
|
59
|
+
|
|
60
|
+
raw_bytes = d.pop("raw_bytes")
|
|
61
|
+
|
|
62
|
+
multiplier = d.pop("multiplier")
|
|
63
|
+
|
|
64
|
+
billable_bytes = d.pop("billable_bytes")
|
|
65
|
+
|
|
66
|
+
get_usage_by_endpoint_response_200_rows_item = cls(
|
|
67
|
+
endpoint=endpoint,
|
|
68
|
+
raw_bytes=raw_bytes,
|
|
69
|
+
multiplier=multiplier,
|
|
70
|
+
billable_bytes=billable_bytes,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
get_usage_by_endpoint_response_200_rows_item.additional_properties = d
|
|
74
|
+
return get_usage_by_endpoint_response_200_rows_item
|
|
75
|
+
|
|
76
|
+
@property
|
|
77
|
+
def additional_keys(self) -> list[str]:
|
|
78
|
+
return list(self.additional_properties.keys())
|
|
79
|
+
|
|
80
|
+
def __getitem__(self, key: str) -> Any:
|
|
81
|
+
return self.additional_properties[key]
|
|
82
|
+
|
|
83
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
84
|
+
self.additional_properties[key] = value
|
|
85
|
+
|
|
86
|
+
def __delitem__(self, key: str) -> None:
|
|
87
|
+
del self.additional_properties[key]
|
|
88
|
+
|
|
89
|
+
def __contains__(self, key: str) -> bool:
|
|
90
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class GetUsageByEndpointResponse200RowsItemEndpoint(str, Enum):
|
|
5
|
+
CRAWL = "crawl"
|
|
6
|
+
CRAWL_LINKS = "crawl_links"
|
|
7
|
+
FETCH = "fetch"
|
|
8
|
+
FETCH_MD = "fetch_md"
|
|
9
|
+
MONITORS = "monitors"
|
|
10
|
+
RECORDINGS = "recordings"
|
|
11
|
+
SCRAPE = "scrape"
|
|
12
|
+
SCRAPE_MD = "scrape_md"
|
|
13
|
+
SCREENSHOTS = "screenshots"
|
|
14
|
+
SITEMAP = "sitemap"
|
|
15
|
+
|
|
16
|
+
def __str__(self) -> str:
|
|
17
|
+
return str(self.value)
|
|
@@ -0,0 +1,67 @@
|
|
|
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="GetUsageByEndpointResponse200Totals")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@_attrs_define
|
|
11
|
+
class GetUsageByEndpointResponse200Totals:
|
|
12
|
+
"""
|
|
13
|
+
Attributes:
|
|
14
|
+
raw_bytes (int):
|
|
15
|
+
billable_bytes (int):
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
raw_bytes: int
|
|
19
|
+
billable_bytes: int
|
|
20
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
21
|
+
|
|
22
|
+
def to_dict(self) -> dict[str, Any]:
|
|
23
|
+
raw_bytes = self.raw_bytes
|
|
24
|
+
|
|
25
|
+
billable_bytes = self.billable_bytes
|
|
26
|
+
|
|
27
|
+
field_dict: dict[str, Any] = {}
|
|
28
|
+
field_dict.update(self.additional_properties)
|
|
29
|
+
field_dict.update(
|
|
30
|
+
{
|
|
31
|
+
"raw_bytes": raw_bytes,
|
|
32
|
+
"billable_bytes": billable_bytes,
|
|
33
|
+
}
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
return field_dict
|
|
37
|
+
|
|
38
|
+
@classmethod
|
|
39
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
40
|
+
d = dict(src_dict)
|
|
41
|
+
raw_bytes = d.pop("raw_bytes")
|
|
42
|
+
|
|
43
|
+
billable_bytes = d.pop("billable_bytes")
|
|
44
|
+
|
|
45
|
+
get_usage_by_endpoint_response_200_totals = cls(
|
|
46
|
+
raw_bytes=raw_bytes,
|
|
47
|
+
billable_bytes=billable_bytes,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
get_usage_by_endpoint_response_200_totals.additional_properties = d
|
|
51
|
+
return get_usage_by_endpoint_response_200_totals
|
|
52
|
+
|
|
53
|
+
@property
|
|
54
|
+
def additional_keys(self) -> list[str]:
|
|
55
|
+
return list(self.additional_properties.keys())
|
|
56
|
+
|
|
57
|
+
def __getitem__(self, key: str) -> Any:
|
|
58
|
+
return self.additional_properties[key]
|
|
59
|
+
|
|
60
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
61
|
+
self.additional_properties[key] = value
|
|
62
|
+
|
|
63
|
+
def __delitem__(self, key: str) -> None:
|
|
64
|
+
del self.additional_properties[key]
|
|
65
|
+
|
|
66
|
+
def __contains__(self, key: str) -> bool:
|
|
67
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from typing import (
|
|
3
|
+
TYPE_CHECKING,
|
|
4
|
+
Any,
|
|
5
|
+
TypeVar,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
from attrs import define as _attrs_define
|
|
9
|
+
from attrs import field as _attrs_field
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from ..models.get_usage_daily_response_200_data_item import (
|
|
13
|
+
GetUsageDailyResponse200DataItem,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
T = TypeVar("T", bound="GetUsageDailyResponse200")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@_attrs_define
|
|
21
|
+
class GetUsageDailyResponse200:
|
|
22
|
+
"""
|
|
23
|
+
Attributes:
|
|
24
|
+
from_ (str):
|
|
25
|
+
to (str):
|
|
26
|
+
data (list['GetUsageDailyResponse200DataItem']):
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
from_: str
|
|
30
|
+
to: str
|
|
31
|
+
data: list["GetUsageDailyResponse200DataItem"]
|
|
32
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
33
|
+
|
|
34
|
+
def to_dict(self) -> dict[str, Any]:
|
|
35
|
+
from_ = self.from_
|
|
36
|
+
|
|
37
|
+
to = self.to
|
|
38
|
+
|
|
39
|
+
data = []
|
|
40
|
+
for data_item_data in self.data:
|
|
41
|
+
data_item = data_item_data.to_dict()
|
|
42
|
+
data.append(data_item)
|
|
43
|
+
|
|
44
|
+
field_dict: dict[str, Any] = {}
|
|
45
|
+
field_dict.update(self.additional_properties)
|
|
46
|
+
field_dict.update(
|
|
47
|
+
{
|
|
48
|
+
"from": from_,
|
|
49
|
+
"to": to,
|
|
50
|
+
"data": data,
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
return field_dict
|
|
55
|
+
|
|
56
|
+
@classmethod
|
|
57
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
58
|
+
from ..models.get_usage_daily_response_200_data_item import (
|
|
59
|
+
GetUsageDailyResponse200DataItem,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
d = dict(src_dict)
|
|
63
|
+
from_ = d.pop("from")
|
|
64
|
+
|
|
65
|
+
to = d.pop("to")
|
|
66
|
+
|
|
67
|
+
data = []
|
|
68
|
+
_data = d.pop("data")
|
|
69
|
+
for data_item_data in _data:
|
|
70
|
+
data_item = GetUsageDailyResponse200DataItem.from_dict(data_item_data)
|
|
71
|
+
|
|
72
|
+
data.append(data_item)
|
|
73
|
+
|
|
74
|
+
get_usage_daily_response_200 = cls(
|
|
75
|
+
from_=from_,
|
|
76
|
+
to=to,
|
|
77
|
+
data=data,
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
get_usage_daily_response_200.additional_properties = d
|
|
81
|
+
return get_usage_daily_response_200
|
|
82
|
+
|
|
83
|
+
@property
|
|
84
|
+
def additional_keys(self) -> list[str]:
|
|
85
|
+
return list(self.additional_properties.keys())
|
|
86
|
+
|
|
87
|
+
def __getitem__(self, key: str) -> Any:
|
|
88
|
+
return self.additional_properties[key]
|
|
89
|
+
|
|
90
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
91
|
+
self.additional_properties[key] = value
|
|
92
|
+
|
|
93
|
+
def __delitem__(self, key: str) -> None:
|
|
94
|
+
del self.additional_properties[key]
|
|
95
|
+
|
|
96
|
+
def __contains__(self, key: str) -> bool:
|
|
97
|
+
return key in self.additional_properties
|