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.
Files changed (227) hide show
  1. bytekit/__init__.py +8 -0
  2. bytekit/api/__init__.py +1 -0
  3. bytekit/api/account/__init__.py +1 -0
  4. bytekit/api/account/get_account.py +157 -0
  5. bytekit/api/bulk/__init__.py +1 -0
  6. bytekit/api/bulk/create_bulk.py +204 -0
  7. bytekit/api/bulk/delete_bulk.py +177 -0
  8. bytekit/api/bulk/get_bulk.py +157 -0
  9. bytekit/api/bulk/list_bulk_screenshots.py +152 -0
  10. bytekit/api/fetch/__init__.py +1 -0
  11. bytekit/api/fetch/get_fetch.py +254 -0
  12. bytekit/api/fetch/post_fetch.py +178 -0
  13. bytekit/api/fetch_bulk/__init__.py +1 -0
  14. bytekit/api/fetch_bulk/create_fetch_bulk.py +180 -0
  15. bytekit/api/fetch_bulk/get_fetch_bulk.py +157 -0
  16. bytekit/api/monitors/__init__.py +1 -0
  17. bytekit/api/monitors/create_monitor.py +180 -0
  18. bytekit/api/monitors/delete_monitor.py +155 -0
  19. bytekit/api/monitors/get_monitor.py +157 -0
  20. bytekit/api/monitors/list_monitor_captures.py +188 -0
  21. bytekit/api/monitors/list_monitors.py +193 -0
  22. bytekit/api/monitors/update_monitor.py +191 -0
  23. bytekit/api/scrape/__init__.py +1 -0
  24. bytekit/api/scrape/create_scrape.py +197 -0
  25. bytekit/api/scrape/get_scrape.py +231 -0
  26. bytekit/api/scrape_bulk/__init__.py +1 -0
  27. bytekit/api/scrape_bulk/create_scrape_bulk.py +188 -0
  28. bytekit/api/scrape_bulk/get_scrape_bulk.py +157 -0
  29. bytekit/api/screenshots/__init__.py +1 -0
  30. bytekit/api/screenshots/create_screenshot.py +208 -0
  31. bytekit/api/screenshots/get_screenshot.py +177 -0
  32. bytekit/api/search/__init__.py +1 -0
  33. bytekit/api/search/create_search.py +225 -0
  34. bytekit/api/sitemap/__init__.py +1 -0
  35. bytekit/api/sitemap/create_sitemap.py +192 -0
  36. bytekit/api/sitemap/get_sitemap.py +157 -0
  37. bytekit/api/usage/__init__.py +1 -0
  38. bytekit/api/usage/get_usage.py +126 -0
  39. bytekit/api/usage/get_usage_by_endpoint.py +215 -0
  40. bytekit/api/usage/get_usage_daily.py +203 -0
  41. bytekit/api/webhooks/__init__.py +1 -0
  42. bytekit/api/webhooks/list_webhook_deliveries.py +214 -0
  43. bytekit/api/webhooks/retry_webhook_delivery.py +165 -0
  44. bytekit/client.py +418 -0
  45. bytekit/errors.py +18 -0
  46. bytekit/models/__init__.py +401 -0
  47. bytekit/models/account_bearer_response.py +207 -0
  48. bytekit/models/account_bearer_response_api_key.py +134 -0
  49. bytekit/models/account_bearer_response_api_key_environment.py +8 -0
  50. bytekit/models/account_bearer_response_auto_topup.py +83 -0
  51. bytekit/models/account_bearer_response_plan.py +150 -0
  52. bytekit/models/account_bearer_response_subscription.py +85 -0
  53. bytekit/models/account_bearer_response_subscription_plan.py +99 -0
  54. bytekit/models/account_bearer_response_subscription_status.py +10 -0
  55. bytekit/models/account_session_response.py +164 -0
  56. bytekit/models/account_session_response_notifications.py +51 -0
  57. bytekit/models/account_session_response_plan.py +150 -0
  58. bytekit/models/bandwidth_balance.py +91 -0
  59. bytekit/models/capture_response.py +216 -0
  60. bytekit/models/capture_response_outcome.py +10 -0
  61. bytekit/models/clip.py +83 -0
  62. bytekit/models/cookie.py +90 -0
  63. bytekit/models/create_bulk_body.py +155 -0
  64. bytekit/models/create_bulk_body_defaults.py +423 -0
  65. bytekit/models/create_bulk_body_defaults_device.py +9 -0
  66. bytekit/models/create_bulk_body_defaults_device_scale_factor_type_1.py +9 -0
  67. bytekit/models/create_bulk_body_defaults_device_scale_factor_type_2_type_1.py +9 -0
  68. bytekit/models/create_bulk_body_defaults_device_scale_factor_type_3_type_1.py +9 -0
  69. bytekit/models/create_bulk_body_defaults_formats_item.py +12 -0
  70. bytekit/models/create_bulk_body_defaults_type.py +9 -0
  71. bytekit/models/create_bulk_body_defaults_viewport_type_0.py +67 -0
  72. bytekit/models/create_bulk_body_defaults_wait_until.py +10 -0
  73. bytekit/models/create_bulk_body_items_item.py +380 -0
  74. bytekit/models/create_bulk_body_items_item_device.py +9 -0
  75. bytekit/models/create_bulk_body_items_item_formats_item.py +12 -0
  76. bytekit/models/create_bulk_body_items_item_scenario.py +10 -0
  77. bytekit/models/create_bulk_body_items_item_type.py +9 -0
  78. bytekit/models/create_bulk_body_items_item_viewport_type_0.py +67 -0
  79. bytekit/models/create_bulk_body_items_item_wait_until.py +10 -0
  80. bytekit/models/create_bulk_response_202.py +164 -0
  81. bytekit/models/create_bulk_response_202_status.py +10 -0
  82. bytekit/models/create_fetch_bulk_body.py +161 -0
  83. bytekit/models/create_fetch_bulk_body_defaults.py +91 -0
  84. bytekit/models/create_fetch_bulk_body_defaults_format.py +9 -0
  85. bytekit/models/create_fetch_bulk_body_metadata.py +44 -0
  86. bytekit/models/create_fetch_bulk_body_urls_item_type_1.py +102 -0
  87. bytekit/models/create_fetch_bulk_body_urls_item_type_1_format.py +9 -0
  88. bytekit/models/create_fetch_bulk_response_202.py +44 -0
  89. bytekit/models/create_scrape_bulk_body.py +179 -0
  90. bytekit/models/create_scrape_bulk_body_custom.py +52 -0
  91. bytekit/models/create_scrape_bulk_body_defaults.py +167 -0
  92. bytekit/models/create_scrape_bulk_body_defaults_formats_item.py +12 -0
  93. bytekit/models/create_scrape_bulk_body_defaults_headers.py +44 -0
  94. bytekit/models/create_scrape_bulk_body_items_item.py +226 -0
  95. bytekit/models/create_scrape_bulk_body_items_item_custom.py +50 -0
  96. bytekit/models/create_scrape_bulk_body_items_item_formats_item.py +12 -0
  97. bytekit/models/create_scrape_bulk_body_items_item_headers.py +44 -0
  98. bytekit/models/create_scrape_bulk_body_items_item_metadata.py +44 -0
  99. bytekit/models/create_scrape_bulk_response_202.py +166 -0
  100. bytekit/models/create_scrape_bulk_response_202_status.py +10 -0
  101. bytekit/models/create_search_body.py +140 -0
  102. bytekit/models/create_search_body_date_range.py +13 -0
  103. bytekit/models/create_search_body_type.py +10 -0
  104. bytekit/models/create_search_response_200.py +119 -0
  105. bytekit/models/create_search_response_200_results_item.py +161 -0
  106. bytekit/models/create_search_response_200_results_item_image.py +113 -0
  107. bytekit/models/create_search_response_502.py +46 -0
  108. bytekit/models/create_search_response_502_error.py +8 -0
  109. bytekit/models/credit_balance.py +91 -0
  110. bytekit/models/delete_bulk_response_200.py +164 -0
  111. bytekit/models/delete_bulk_response_200_status.py +11 -0
  112. bytekit/models/error.py +83 -0
  113. bytekit/models/error_error.py +100 -0
  114. bytekit/models/error_status.py +8 -0
  115. bytekit/models/fetch_request.py +276 -0
  116. bytekit/models/fetch_request_cache_ttl_type_1.py +8 -0
  117. bytekit/models/fetch_request_custom.py +48 -0
  118. bytekit/models/fetch_request_format.py +9 -0
  119. bytekit/models/fetch_request_markdown_images.py +11 -0
  120. bytekit/models/fetch_request_markdown_links.py +11 -0
  121. bytekit/models/fetch_request_markdown_mode.py +10 -0
  122. bytekit/models/get_bulk_response_200.py +164 -0
  123. bytekit/models/get_bulk_response_200_status.py +11 -0
  124. bytekit/models/get_fetch_bulk_response_200.py +44 -0
  125. bytekit/models/get_fetch_cache_ttl_type_1.py +8 -0
  126. bytekit/models/get_fetch_format.py +9 -0
  127. bytekit/models/get_scrape_bulk_response_200.py +164 -0
  128. bytekit/models/get_scrape_bulk_response_200_status.py +11 -0
  129. bytekit/models/get_usage_by_endpoint_response_200.py +114 -0
  130. bytekit/models/get_usage_by_endpoint_response_200_rows_item.py +90 -0
  131. bytekit/models/get_usage_by_endpoint_response_200_rows_item_endpoint.py +17 -0
  132. bytekit/models/get_usage_by_endpoint_response_200_totals.py +67 -0
  133. bytekit/models/get_usage_daily_response_200.py +97 -0
  134. bytekit/models/get_usage_daily_response_200_data_item.py +219 -0
  135. bytekit/models/get_usage_response_200.py +344 -0
  136. bytekit/models/get_usage_response_200_plan_type.py +10 -0
  137. bytekit/models/list_bulk_screenshots_response_200.py +44 -0
  138. bytekit/models/list_monitor_captures_response_200.py +101 -0
  139. bytekit/models/list_monitors_response_200.py +101 -0
  140. bytekit/models/list_monitors_status.py +12 -0
  141. bytekit/models/list_webhook_deliveries_response_200.py +101 -0
  142. bytekit/models/list_webhook_deliveries_status.py +11 -0
  143. bytekit/models/metadata.py +44 -0
  144. bytekit/models/monitor_create_request.py +219 -0
  145. bytekit/models/monitor_create_request_interval_type.py +11 -0
  146. bytekit/models/monitor_create_request_notify_on.py +9 -0
  147. bytekit/models/monitor_create_request_options.py +44 -0
  148. bytekit/models/monitor_create_request_scrape_options.py +44 -0
  149. bytekit/models/monitor_create_request_type.py +9 -0
  150. bytekit/models/monitor_create_request_webhook_headers.py +44 -0
  151. bytekit/models/monitor_create_response.py +423 -0
  152. bytekit/models/monitor_response.py +411 -0
  153. bytekit/models/monitor_response_interval_type.py +11 -0
  154. bytekit/models/monitor_response_metadata_type_0.py +44 -0
  155. bytekit/models/monitor_response_status.py +12 -0
  156. bytekit/models/monitor_response_type.py +9 -0
  157. bytekit/models/monitor_response_webhook_headers_type_0.py +44 -0
  158. bytekit/models/monitor_update_request.py +223 -0
  159. bytekit/models/monitor_update_request_interval_type.py +11 -0
  160. bytekit/models/monitor_update_request_notify_on.py +9 -0
  161. bytekit/models/monitor_update_request_options.py +44 -0
  162. bytekit/models/monitor_update_request_scrape_options.py +44 -0
  163. bytekit/models/monitor_update_request_status.py +9 -0
  164. bytekit/models/monitor_update_request_webhook_headers.py +44 -0
  165. bytekit/models/scrape_error_envelope.py +113 -0
  166. bytekit/models/scrape_error_envelope_error.py +93 -0
  167. bytekit/models/scrape_error_envelope_error_code.py +18 -0
  168. bytekit/models/scrape_error_envelope_schema_version.py +8 -0
  169. bytekit/models/scrape_error_envelope_status.py +8 -0
  170. bytekit/models/scrape_formats.py +183 -0
  171. bytekit/models/scrape_markdown_tokens.py +75 -0
  172. bytekit/models/scrape_metadata.py +262 -0
  173. bytekit/models/scrape_queued_envelope.py +124 -0
  174. bytekit/models/scrape_queued_envelope_schema_version.py +8 -0
  175. bytekit/models/scrape_queued_envelope_status.py +8 -0
  176. bytekit/models/scrape_request.py +485 -0
  177. bytekit/models/scrape_request_cache_ttl_type_1.py +8 -0
  178. bytekit/models/scrape_request_custom.py +48 -0
  179. bytekit/models/scrape_request_events_item.py +10 -0
  180. bytekit/models/scrape_request_formats_item.py +12 -0
  181. bytekit/models/scrape_request_headers.py +44 -0
  182. bytekit/models/scrape_request_markdown_images.py +11 -0
  183. bytekit/models/scrape_request_markdown_links.py +11 -0
  184. bytekit/models/scrape_request_markdown_mode.py +10 -0
  185. bytekit/models/scrape_request_token_encoding.py +9 -0
  186. bytekit/models/scrape_request_x_internal_scrape_path.py +8 -0
  187. bytekit/models/scrape_scored_image.py +128 -0
  188. bytekit/models/scrape_scored_link.py +94 -0
  189. bytekit/models/scrape_stats.py +75 -0
  190. bytekit/models/scrape_success_envelope.py +345 -0
  191. bytekit/models/scrape_success_envelope_cache.py +10 -0
  192. bytekit/models/scrape_success_envelope_custom.py +48 -0
  193. bytekit/models/scrape_success_envelope_schema_version.py +8 -0
  194. bytekit/models/scrape_success_envelope_status.py +8 -0
  195. bytekit/models/scrape_table.py +96 -0
  196. bytekit/models/scrape_table_kind.py +10 -0
  197. bytekit/models/scrape_warning.py +88 -0
  198. bytekit/models/scrape_warning_code.py +17 -0
  199. bytekit/models/screenshot_request.py +445 -0
  200. bytekit/models/screenshot_request_device.py +9 -0
  201. bytekit/models/screenshot_request_device_scale_factor_type_1.py +9 -0
  202. bytekit/models/screenshot_request_device_scale_factor_type_2_type_1.py +9 -0
  203. bytekit/models/screenshot_request_device_scale_factor_type_3_type_1.py +9 -0
  204. bytekit/models/screenshot_request_format.py +9 -0
  205. bytekit/models/screenshot_request_headers.py +44 -0
  206. bytekit/models/screenshot_request_wait_until.py +10 -0
  207. bytekit/models/screenshot_response.py +264 -0
  208. bytekit/models/screenshot_response_status.py +11 -0
  209. bytekit/models/sitemap_request.py +210 -0
  210. bytekit/models/sitemap_request_process_type_0.py +90 -0
  211. bytekit/models/sitemap_request_process_type_0_options.py +44 -0
  212. bytekit/models/sitemap_request_strategy.py +10 -0
  213. bytekit/models/sitemap_response.py +418 -0
  214. bytekit/models/sitemap_response_cache.py +10 -0
  215. bytekit/models/sitemap_response_metadata_type_0.py +44 -0
  216. bytekit/models/sitemap_response_process_type_0.py +44 -0
  217. bytekit/models/sitemap_response_sources_type_0.py +44 -0
  218. bytekit/models/sitemap_response_status.py +11 -0
  219. bytekit/models/viewport.py +67 -0
  220. bytekit/models/webhook_delivery_response.py +270 -0
  221. bytekit/models/webhook_delivery_response_event_type.py +14 -0
  222. bytekit/models/webhook_delivery_response_status.py +11 -0
  223. bytekit/py.typed +0 -0
  224. bytekit/types.py +54 -0
  225. bytekit_sdk-0.3.0.dist-info/METADATA +141 -0
  226. bytekit_sdk-0.3.0.dist-info/RECORD +227 -0
  227. bytekit_sdk-0.3.0.dist-info/WHEEL +4 -0
@@ -0,0 +1,8 @@
1
+ from enum import IntEnum
2
+
3
+
4
+ class ScrapeSuccessEnvelopeSchemaVersion(IntEnum):
5
+ VALUE_1 = 1
6
+
7
+ def __str__(self) -> str:
8
+ return str(self.value)
@@ -0,0 +1,8 @@
1
+ from enum import Enum
2
+
3
+
4
+ class ScrapeSuccessEnvelopeStatus(str, Enum):
5
+ SUCCESS = "success"
6
+
7
+ def __str__(self) -> str:
8
+ return str(self.value)
@@ -0,0 +1,96 @@
1
+ from collections.abc import Mapping
2
+ from typing import (
3
+ Any,
4
+ TypeVar,
5
+ Union,
6
+ cast,
7
+ )
8
+
9
+ from attrs import define as _attrs_define
10
+ from attrs import field as _attrs_field
11
+
12
+ from ..models.scrape_table_kind import ScrapeTableKind
13
+
14
+ T = TypeVar("T", bound="ScrapeTable")
15
+
16
+
17
+ @_attrs_define
18
+ class ScrapeTable:
19
+ """
20
+ Attributes:
21
+ kind (ScrapeTableKind):
22
+ gfm (Union[None, str]):
23
+ rows (int):
24
+ cols (int):
25
+ """
26
+
27
+ kind: ScrapeTableKind
28
+ gfm: Union[None, str]
29
+ rows: int
30
+ cols: int
31
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
32
+
33
+ def to_dict(self) -> dict[str, Any]:
34
+ kind = self.kind.value
35
+
36
+ gfm: Union[None, str]
37
+ gfm = self.gfm
38
+
39
+ rows = self.rows
40
+
41
+ cols = self.cols
42
+
43
+ field_dict: dict[str, Any] = {}
44
+ field_dict.update(self.additional_properties)
45
+ field_dict.update(
46
+ {
47
+ "kind": kind,
48
+ "gfm": gfm,
49
+ "rows": rows,
50
+ "cols": cols,
51
+ }
52
+ )
53
+
54
+ return field_dict
55
+
56
+ @classmethod
57
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
58
+ d = dict(src_dict)
59
+ kind = ScrapeTableKind(d.pop("kind"))
60
+
61
+ def _parse_gfm(data: object) -> Union[None, str]:
62
+ if data is None:
63
+ return data
64
+ return cast(Union[None, str], data)
65
+
66
+ gfm = _parse_gfm(d.pop("gfm"))
67
+
68
+ rows = d.pop("rows")
69
+
70
+ cols = d.pop("cols")
71
+
72
+ scrape_table = cls(
73
+ kind=kind,
74
+ gfm=gfm,
75
+ rows=rows,
76
+ cols=cols,
77
+ )
78
+
79
+ scrape_table.additional_properties = d
80
+ return scrape_table
81
+
82
+ @property
83
+ def additional_keys(self) -> list[str]:
84
+ return list(self.additional_properties.keys())
85
+
86
+ def __getitem__(self, key: str) -> Any:
87
+ return self.additional_properties[key]
88
+
89
+ def __setitem__(self, key: str, value: Any) -> None:
90
+ self.additional_properties[key] = value
91
+
92
+ def __delitem__(self, key: str) -> None:
93
+ del self.additional_properties[key]
94
+
95
+ def __contains__(self, key: str) -> bool:
96
+ return key in self.additional_properties
@@ -0,0 +1,10 @@
1
+ from enum import Enum
2
+
3
+
4
+ class ScrapeTableKind(str, Enum):
5
+ DATA = "data"
6
+ LAYOUT_UNWRAPPED = "layout-unwrapped"
7
+ LOSSY = "lossy"
8
+
9
+ def __str__(self) -> str:
10
+ return str(self.value)
@@ -0,0 +1,88 @@
1
+ from collections.abc import Mapping
2
+ from typing import (
3
+ Any,
4
+ TypeVar,
5
+ Union,
6
+ cast,
7
+ )
8
+
9
+ from attrs import define as _attrs_define
10
+ from attrs import field as _attrs_field
11
+
12
+ from ..models.scrape_warning_code import ScrapeWarningCode
13
+
14
+ T = TypeVar("T", bound="ScrapeWarning")
15
+
16
+
17
+ @_attrs_define
18
+ class ScrapeWarning:
19
+ """
20
+ Attributes:
21
+ code (ScrapeWarningCode):
22
+ message (str):
23
+ element (Union[None, str]):
24
+ """
25
+
26
+ code: ScrapeWarningCode
27
+ message: str
28
+ element: Union[None, str]
29
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
30
+
31
+ def to_dict(self) -> dict[str, Any]:
32
+ code = self.code.value
33
+
34
+ message = self.message
35
+
36
+ element: Union[None, str]
37
+ element = self.element
38
+
39
+ field_dict: dict[str, Any] = {}
40
+ field_dict.update(self.additional_properties)
41
+ field_dict.update(
42
+ {
43
+ "code": code,
44
+ "message": message,
45
+ "element": element,
46
+ }
47
+ )
48
+
49
+ return field_dict
50
+
51
+ @classmethod
52
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
53
+ d = dict(src_dict)
54
+ code = ScrapeWarningCode(d.pop("code"))
55
+
56
+ message = d.pop("message")
57
+
58
+ def _parse_element(data: object) -> Union[None, str]:
59
+ if data is None:
60
+ return data
61
+ return cast(Union[None, str], data)
62
+
63
+ element = _parse_element(d.pop("element"))
64
+
65
+ scrape_warning = cls(
66
+ code=code,
67
+ message=message,
68
+ element=element,
69
+ )
70
+
71
+ scrape_warning.additional_properties = d
72
+ return scrape_warning
73
+
74
+ @property
75
+ def additional_keys(self) -> list[str]:
76
+ return list(self.additional_properties.keys())
77
+
78
+ def __getitem__(self, key: str) -> Any:
79
+ return self.additional_properties[key]
80
+
81
+ def __setitem__(self, key: str, value: Any) -> None:
82
+ self.additional_properties[key] = value
83
+
84
+ def __delitem__(self, key: str) -> None:
85
+ del self.additional_properties[key]
86
+
87
+ def __contains__(self, key: str) -> bool:
88
+ return key in self.additional_properties
@@ -0,0 +1,17 @@
1
+ from enum import Enum
2
+
3
+
4
+ class ScrapeWarningCode(str, Enum):
5
+ ARTIFACT_UNAVAILABLE = "artifact_unavailable"
6
+ COMPLEX_MATH = "complex_math"
7
+ EXTRACTION_FALLBACK = "extraction_fallback"
8
+ LLM_CLEAN_FAILED = "llm_clean_failed"
9
+ LLM_CLEAN_UNAVAILABLE = "llm_clean_unavailable"
10
+ LOSSY_TABLE = "lossy_table"
11
+ MODE_DISABLED_FALLBACK = "mode_disabled_fallback"
12
+ QUERY_NO_MATCH = "query_no_match"
13
+ TRUNCATED = "truncated"
14
+ UNSUPPORTED_ELEMENT = "unsupported_element"
15
+
16
+ def __str__(self) -> str:
17
+ return str(self.value)
@@ -0,0 +1,445 @@
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
+
12
+ from ..models.screenshot_request_device import ScreenshotRequestDevice
13
+ from ..models.screenshot_request_device_scale_factor_type_1 import (
14
+ ScreenshotRequestDeviceScaleFactorType1,
15
+ )
16
+ from ..models.screenshot_request_device_scale_factor_type_2_type_1 import (
17
+ ScreenshotRequestDeviceScaleFactorType2Type1,
18
+ )
19
+ from ..models.screenshot_request_device_scale_factor_type_3_type_1 import (
20
+ ScreenshotRequestDeviceScaleFactorType3Type1,
21
+ )
22
+ from ..models.screenshot_request_format import ScreenshotRequestFormat
23
+ from ..models.screenshot_request_wait_until import ScreenshotRequestWaitUntil
24
+ from ..types import UNSET, Unset
25
+
26
+ if TYPE_CHECKING:
27
+ from ..models.clip import Clip
28
+ from ..models.cookie import Cookie
29
+ from ..models.metadata import Metadata
30
+ from ..models.screenshot_request_headers import ScreenshotRequestHeaders
31
+ from ..models.viewport import Viewport
32
+
33
+
34
+ T = TypeVar("T", bound="ScreenshotRequest")
35
+
36
+
37
+ @_attrs_define
38
+ class ScreenshotRequest:
39
+ """
40
+ Attributes:
41
+ url (str):
42
+ device (Union[Unset, ScreenshotRequestDevice]):
43
+ viewport (Union['Viewport', None, Unset]):
44
+ full_page (Union[Unset, bool]):
45
+ format_ (Union[Unset, ScreenshotRequestFormat]):
46
+ quality (Union[Unset, int]):
47
+ block_ads (Union[Unset, bool]):
48
+ block_cookie_banners (Union[Unset, bool]):
49
+ wait_until (Union[Unset, ScreenshotRequestWaitUntil]):
50
+ wait_for_selector (Union[None, Unset, str]):
51
+ delay_ms (Union[Unset, int]):
52
+ scroll (Union[Unset, bool]):
53
+ clip (Union['Clip', None, Unset]):
54
+ headers (Union[Unset, ScreenshotRequestHeaders]):
55
+ cookies (Union[Unset, list['Cookie']]):
56
+ dark_mode (Union[Unset, bool]):
57
+ device_scale_factor (Union[None, ScreenshotRequestDeviceScaleFactorType1,
58
+ ScreenshotRequestDeviceScaleFactorType2Type1, ScreenshotRequestDeviceScaleFactorType3Type1, Unset]):
59
+ include_html (Union[Unset, bool]):
60
+ country (Union[Unset, str]):
61
+ language (Union[None, Unset, str]):
62
+ metadata (Union[Unset, Metadata]): Arbitrary key-value metadata. Max 4096 bytes when JSON-serialized.
63
+ """
64
+
65
+ url: str
66
+ device: Union[Unset, ScreenshotRequestDevice] = UNSET
67
+ viewport: Union["Viewport", None, Unset] = UNSET
68
+ full_page: Union[Unset, bool] = UNSET
69
+ format_: Union[Unset, ScreenshotRequestFormat] = UNSET
70
+ quality: Union[Unset, int] = UNSET
71
+ block_ads: Union[Unset, bool] = UNSET
72
+ block_cookie_banners: Union[Unset, bool] = UNSET
73
+ wait_until: Union[Unset, ScreenshotRequestWaitUntil] = UNSET
74
+ wait_for_selector: Union[None, Unset, str] = UNSET
75
+ delay_ms: Union[Unset, int] = UNSET
76
+ scroll: Union[Unset, bool] = UNSET
77
+ clip: Union["Clip", None, Unset] = UNSET
78
+ headers: Union[Unset, "ScreenshotRequestHeaders"] = UNSET
79
+ cookies: Union[Unset, list["Cookie"]] = UNSET
80
+ dark_mode: Union[Unset, bool] = UNSET
81
+ device_scale_factor: Union[
82
+ None,
83
+ ScreenshotRequestDeviceScaleFactorType1,
84
+ ScreenshotRequestDeviceScaleFactorType2Type1,
85
+ ScreenshotRequestDeviceScaleFactorType3Type1,
86
+ Unset,
87
+ ] = UNSET
88
+ include_html: Union[Unset, bool] = UNSET
89
+ country: Union[Unset, str] = UNSET
90
+ language: Union[None, Unset, str] = UNSET
91
+ metadata: Union[Unset, "Metadata"] = UNSET
92
+
93
+ def to_dict(self) -> dict[str, Any]:
94
+ from ..models.clip import Clip
95
+ from ..models.viewport import Viewport
96
+
97
+ url = self.url
98
+
99
+ device: Union[Unset, str] = UNSET
100
+ if not isinstance(self.device, Unset):
101
+ device = self.device.value
102
+
103
+ viewport: Union[None, Unset, dict[str, Any]]
104
+ if isinstance(self.viewport, Unset):
105
+ viewport = UNSET
106
+ elif isinstance(self.viewport, Viewport):
107
+ viewport = self.viewport.to_dict()
108
+ else:
109
+ viewport = self.viewport
110
+
111
+ full_page = self.full_page
112
+
113
+ format_: Union[Unset, str] = UNSET
114
+ if not isinstance(self.format_, Unset):
115
+ format_ = self.format_.value
116
+
117
+ quality = self.quality
118
+
119
+ block_ads = self.block_ads
120
+
121
+ block_cookie_banners = self.block_cookie_banners
122
+
123
+ wait_until: Union[Unset, str] = UNSET
124
+ if not isinstance(self.wait_until, Unset):
125
+ wait_until = self.wait_until.value
126
+
127
+ wait_for_selector: Union[None, Unset, str]
128
+ if isinstance(self.wait_for_selector, Unset):
129
+ wait_for_selector = UNSET
130
+ else:
131
+ wait_for_selector = self.wait_for_selector
132
+
133
+ delay_ms = self.delay_ms
134
+
135
+ scroll = self.scroll
136
+
137
+ clip: Union[None, Unset, dict[str, Any]]
138
+ if isinstance(self.clip, Unset):
139
+ clip = UNSET
140
+ elif isinstance(self.clip, Clip):
141
+ clip = self.clip.to_dict()
142
+ else:
143
+ clip = self.clip
144
+
145
+ headers: Union[Unset, dict[str, Any]] = UNSET
146
+ if not isinstance(self.headers, Unset):
147
+ headers = self.headers.to_dict()
148
+
149
+ cookies: Union[Unset, list[dict[str, Any]]] = UNSET
150
+ if not isinstance(self.cookies, Unset):
151
+ cookies = []
152
+ for cookies_item_data in self.cookies:
153
+ cookies_item = cookies_item_data.to_dict()
154
+ cookies.append(cookies_item)
155
+
156
+ dark_mode = self.dark_mode
157
+
158
+ device_scale_factor: Union[None, Unset, int]
159
+ if isinstance(self.device_scale_factor, Unset):
160
+ device_scale_factor = UNSET
161
+ elif isinstance(
162
+ self.device_scale_factor, ScreenshotRequestDeviceScaleFactorType1
163
+ ):
164
+ device_scale_factor = self.device_scale_factor.value
165
+ elif isinstance(
166
+ self.device_scale_factor, ScreenshotRequestDeviceScaleFactorType2Type1
167
+ ):
168
+ device_scale_factor = self.device_scale_factor.value
169
+ elif isinstance(
170
+ self.device_scale_factor, ScreenshotRequestDeviceScaleFactorType3Type1
171
+ ):
172
+ device_scale_factor = self.device_scale_factor.value
173
+ else:
174
+ device_scale_factor = self.device_scale_factor
175
+
176
+ include_html = self.include_html
177
+
178
+ country = self.country
179
+
180
+ language: Union[None, Unset, str]
181
+ if isinstance(self.language, Unset):
182
+ language = UNSET
183
+ else:
184
+ language = self.language
185
+
186
+ metadata: Union[Unset, dict[str, Any]] = UNSET
187
+ if not isinstance(self.metadata, Unset):
188
+ metadata = self.metadata.to_dict()
189
+
190
+ field_dict: dict[str, Any] = {}
191
+
192
+ field_dict.update(
193
+ {
194
+ "url": url,
195
+ }
196
+ )
197
+ if device is not UNSET:
198
+ field_dict["device"] = device
199
+ if viewport is not UNSET:
200
+ field_dict["viewport"] = viewport
201
+ if full_page is not UNSET:
202
+ field_dict["full_page"] = full_page
203
+ if format_ is not UNSET:
204
+ field_dict["format"] = format_
205
+ if quality is not UNSET:
206
+ field_dict["quality"] = quality
207
+ if block_ads is not UNSET:
208
+ field_dict["block_ads"] = block_ads
209
+ if block_cookie_banners is not UNSET:
210
+ field_dict["block_cookie_banners"] = block_cookie_banners
211
+ if wait_until is not UNSET:
212
+ field_dict["wait_until"] = wait_until
213
+ if wait_for_selector is not UNSET:
214
+ field_dict["wait_for_selector"] = wait_for_selector
215
+ if delay_ms is not UNSET:
216
+ field_dict["delay_ms"] = delay_ms
217
+ if scroll is not UNSET:
218
+ field_dict["scroll"] = scroll
219
+ if clip is not UNSET:
220
+ field_dict["clip"] = clip
221
+ if headers is not UNSET:
222
+ field_dict["headers"] = headers
223
+ if cookies is not UNSET:
224
+ field_dict["cookies"] = cookies
225
+ if dark_mode is not UNSET:
226
+ field_dict["dark_mode"] = dark_mode
227
+ if device_scale_factor is not UNSET:
228
+ field_dict["device_scale_factor"] = device_scale_factor
229
+ if include_html is not UNSET:
230
+ field_dict["include_html"] = include_html
231
+ if country is not UNSET:
232
+ field_dict["country"] = country
233
+ if language is not UNSET:
234
+ field_dict["language"] = language
235
+ if metadata is not UNSET:
236
+ field_dict["metadata"] = metadata
237
+
238
+ return field_dict
239
+
240
+ @classmethod
241
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
242
+ from ..models.clip import Clip
243
+ from ..models.cookie import Cookie
244
+ from ..models.metadata import Metadata
245
+ from ..models.screenshot_request_headers import ScreenshotRequestHeaders
246
+ from ..models.viewport import Viewport
247
+
248
+ d = dict(src_dict)
249
+ url = d.pop("url")
250
+
251
+ _device = d.pop("device", UNSET)
252
+ device: Union[Unset, ScreenshotRequestDevice]
253
+ if isinstance(_device, Unset):
254
+ device = UNSET
255
+ else:
256
+ device = ScreenshotRequestDevice(_device)
257
+
258
+ def _parse_viewport(data: object) -> Union["Viewport", None, Unset]:
259
+ if data is None:
260
+ return data
261
+ if isinstance(data, Unset):
262
+ return data
263
+ try:
264
+ if not isinstance(data, dict):
265
+ raise TypeError()
266
+ viewport_type_0 = Viewport.from_dict(data)
267
+
268
+ return viewport_type_0
269
+ except: # noqa: E722
270
+ pass
271
+ return cast(Union["Viewport", None, Unset], data)
272
+
273
+ viewport = _parse_viewport(d.pop("viewport", UNSET))
274
+
275
+ full_page = d.pop("full_page", UNSET)
276
+
277
+ _format_ = d.pop("format", UNSET)
278
+ format_: Union[Unset, ScreenshotRequestFormat]
279
+ if isinstance(_format_, Unset):
280
+ format_ = UNSET
281
+ else:
282
+ format_ = ScreenshotRequestFormat(_format_)
283
+
284
+ quality = d.pop("quality", UNSET)
285
+
286
+ block_ads = d.pop("block_ads", UNSET)
287
+
288
+ block_cookie_banners = d.pop("block_cookie_banners", UNSET)
289
+
290
+ _wait_until = d.pop("wait_until", UNSET)
291
+ wait_until: Union[Unset, ScreenshotRequestWaitUntil]
292
+ if isinstance(_wait_until, Unset):
293
+ wait_until = UNSET
294
+ else:
295
+ wait_until = ScreenshotRequestWaitUntil(_wait_until)
296
+
297
+ def _parse_wait_for_selector(data: object) -> Union[None, Unset, str]:
298
+ if data is None:
299
+ return data
300
+ if isinstance(data, Unset):
301
+ return data
302
+ return cast(Union[None, Unset, str], data)
303
+
304
+ wait_for_selector = _parse_wait_for_selector(d.pop("wait_for_selector", UNSET))
305
+
306
+ delay_ms = d.pop("delay_ms", UNSET)
307
+
308
+ scroll = d.pop("scroll", UNSET)
309
+
310
+ def _parse_clip(data: object) -> Union["Clip", None, Unset]:
311
+ if data is None:
312
+ return data
313
+ if isinstance(data, Unset):
314
+ return data
315
+ try:
316
+ if not isinstance(data, dict):
317
+ raise TypeError()
318
+ clip_type_0 = Clip.from_dict(data)
319
+
320
+ return clip_type_0
321
+ except: # noqa: E722
322
+ pass
323
+ return cast(Union["Clip", None, Unset], data)
324
+
325
+ clip = _parse_clip(d.pop("clip", UNSET))
326
+
327
+ _headers = d.pop("headers", UNSET)
328
+ headers: Union[Unset, ScreenshotRequestHeaders]
329
+ if isinstance(_headers, Unset):
330
+ headers = UNSET
331
+ else:
332
+ headers = ScreenshotRequestHeaders.from_dict(_headers)
333
+
334
+ cookies = []
335
+ _cookies = d.pop("cookies", UNSET)
336
+ for cookies_item_data in _cookies or []:
337
+ cookies_item = Cookie.from_dict(cookies_item_data)
338
+
339
+ cookies.append(cookies_item)
340
+
341
+ dark_mode = d.pop("dark_mode", UNSET)
342
+
343
+ def _parse_device_scale_factor(
344
+ data: object,
345
+ ) -> Union[
346
+ None,
347
+ ScreenshotRequestDeviceScaleFactorType1,
348
+ ScreenshotRequestDeviceScaleFactorType2Type1,
349
+ ScreenshotRequestDeviceScaleFactorType3Type1,
350
+ Unset,
351
+ ]:
352
+ if data is None:
353
+ return data
354
+ if isinstance(data, Unset):
355
+ return data
356
+ try:
357
+ if not isinstance(data, int):
358
+ raise TypeError()
359
+ device_scale_factor_type_1 = ScreenshotRequestDeviceScaleFactorType1(
360
+ data
361
+ )
362
+
363
+ return device_scale_factor_type_1
364
+ except: # noqa: E722
365
+ pass
366
+ try:
367
+ if not isinstance(data, int):
368
+ raise TypeError()
369
+ device_scale_factor_type_2_type_1 = (
370
+ ScreenshotRequestDeviceScaleFactorType2Type1(data)
371
+ )
372
+
373
+ return device_scale_factor_type_2_type_1
374
+ except: # noqa: E722
375
+ pass
376
+ try:
377
+ if not isinstance(data, int):
378
+ raise TypeError()
379
+ device_scale_factor_type_3_type_1 = (
380
+ ScreenshotRequestDeviceScaleFactorType3Type1(data)
381
+ )
382
+
383
+ return device_scale_factor_type_3_type_1
384
+ except: # noqa: E722
385
+ pass
386
+ return cast(
387
+ Union[
388
+ None,
389
+ ScreenshotRequestDeviceScaleFactorType1,
390
+ ScreenshotRequestDeviceScaleFactorType2Type1,
391
+ ScreenshotRequestDeviceScaleFactorType3Type1,
392
+ Unset,
393
+ ],
394
+ data,
395
+ )
396
+
397
+ device_scale_factor = _parse_device_scale_factor(
398
+ d.pop("device_scale_factor", UNSET)
399
+ )
400
+
401
+ include_html = d.pop("include_html", UNSET)
402
+
403
+ country = d.pop("country", UNSET)
404
+
405
+ def _parse_language(data: object) -> Union[None, Unset, str]:
406
+ if data is None:
407
+ return data
408
+ if isinstance(data, Unset):
409
+ return data
410
+ return cast(Union[None, Unset, str], data)
411
+
412
+ language = _parse_language(d.pop("language", UNSET))
413
+
414
+ _metadata = d.pop("metadata", UNSET)
415
+ metadata: Union[Unset, Metadata]
416
+ if isinstance(_metadata, Unset):
417
+ metadata = UNSET
418
+ else:
419
+ metadata = Metadata.from_dict(_metadata)
420
+
421
+ screenshot_request = cls(
422
+ url=url,
423
+ device=device,
424
+ viewport=viewport,
425
+ full_page=full_page,
426
+ format_=format_,
427
+ quality=quality,
428
+ block_ads=block_ads,
429
+ block_cookie_banners=block_cookie_banners,
430
+ wait_until=wait_until,
431
+ wait_for_selector=wait_for_selector,
432
+ delay_ms=delay_ms,
433
+ scroll=scroll,
434
+ clip=clip,
435
+ headers=headers,
436
+ cookies=cookies,
437
+ dark_mode=dark_mode,
438
+ device_scale_factor=device_scale_factor,
439
+ include_html=include_html,
440
+ country=country,
441
+ language=language,
442
+ metadata=metadata,
443
+ )
444
+
445
+ return screenshot_request
@@ -0,0 +1,9 @@
1
+ from enum import Enum
2
+
3
+
4
+ class ScreenshotRequestDevice(str, Enum):
5
+ DESKTOP = "desktop"
6
+ MOBILE = "mobile"
7
+
8
+ def __str__(self) -> str:
9
+ return str(self.value)
@@ -0,0 +1,9 @@
1
+ from enum import IntEnum
2
+
3
+
4
+ class ScreenshotRequestDeviceScaleFactorType1(IntEnum):
5
+ VALUE_1 = 1
6
+ VALUE_2 = 2
7
+
8
+ def __str__(self) -> str:
9
+ return str(self.value)