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,161 @@
1
+ from collections.abc import Mapping
2
+ from typing import (
3
+ TYPE_CHECKING,
4
+ Any,
5
+ TypeVar,
6
+ Union,
7
+ cast,
8
+ )
9
+
10
+ from attrs import define as _attrs_define
11
+ from attrs import field as _attrs_field
12
+
13
+ from ..types import UNSET, Unset
14
+
15
+ if TYPE_CHECKING:
16
+ from ..models.create_fetch_bulk_body_defaults import CreateFetchBulkBodyDefaults
17
+ from ..models.create_fetch_bulk_body_metadata import CreateFetchBulkBodyMetadata
18
+ from ..models.create_fetch_bulk_body_urls_item_type_1 import (
19
+ CreateFetchBulkBodyUrlsItemType1,
20
+ )
21
+
22
+
23
+ T = TypeVar("T", bound="CreateFetchBulkBody")
24
+
25
+
26
+ @_attrs_define
27
+ class CreateFetchBulkBody:
28
+ """
29
+ Attributes:
30
+ urls (list[Union['CreateFetchBulkBodyUrlsItemType1', str]]):
31
+ webhook_url (str): Webhook endpoint URL (HTTPS only; http:// rejected with 400 invalid_url, reason
32
+ scheme_unsupported)
33
+ defaults (Union[Unset, CreateFetchBulkBodyDefaults]):
34
+ webhook_secret (Union[Unset, str]):
35
+ metadata (Union[Unset, CreateFetchBulkBodyMetadata]):
36
+ """
37
+
38
+ urls: list[Union["CreateFetchBulkBodyUrlsItemType1", str]]
39
+ webhook_url: str
40
+ defaults: Union[Unset, "CreateFetchBulkBodyDefaults"] = UNSET
41
+ webhook_secret: Union[Unset, str] = UNSET
42
+ metadata: Union[Unset, "CreateFetchBulkBodyMetadata"] = UNSET
43
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
44
+
45
+ def to_dict(self) -> dict[str, Any]:
46
+ from ..models.create_fetch_bulk_body_urls_item_type_1 import (
47
+ CreateFetchBulkBodyUrlsItemType1,
48
+ )
49
+
50
+ urls = []
51
+ for urls_item_data in self.urls:
52
+ urls_item: Union[dict[str, Any], str]
53
+ if isinstance(urls_item_data, CreateFetchBulkBodyUrlsItemType1):
54
+ urls_item = urls_item_data.to_dict()
55
+ else:
56
+ urls_item = urls_item_data
57
+ urls.append(urls_item)
58
+
59
+ webhook_url = self.webhook_url
60
+
61
+ defaults: Union[Unset, dict[str, Any]] = UNSET
62
+ if not isinstance(self.defaults, Unset):
63
+ defaults = self.defaults.to_dict()
64
+
65
+ webhook_secret = self.webhook_secret
66
+
67
+ metadata: Union[Unset, dict[str, Any]] = UNSET
68
+ if not isinstance(self.metadata, Unset):
69
+ metadata = self.metadata.to_dict()
70
+
71
+ field_dict: dict[str, Any] = {}
72
+ field_dict.update(self.additional_properties)
73
+ field_dict.update(
74
+ {
75
+ "urls": urls,
76
+ "webhook_url": webhook_url,
77
+ }
78
+ )
79
+ if defaults is not UNSET:
80
+ field_dict["defaults"] = defaults
81
+ if webhook_secret is not UNSET:
82
+ field_dict["webhook_secret"] = webhook_secret
83
+ if metadata is not UNSET:
84
+ field_dict["metadata"] = metadata
85
+
86
+ return field_dict
87
+
88
+ @classmethod
89
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
90
+ from ..models.create_fetch_bulk_body_defaults import CreateFetchBulkBodyDefaults
91
+ from ..models.create_fetch_bulk_body_metadata import CreateFetchBulkBodyMetadata
92
+ from ..models.create_fetch_bulk_body_urls_item_type_1 import (
93
+ CreateFetchBulkBodyUrlsItemType1,
94
+ )
95
+
96
+ d = dict(src_dict)
97
+ urls = []
98
+ _urls = d.pop("urls")
99
+ for urls_item_data in _urls:
100
+
101
+ def _parse_urls_item(
102
+ data: object,
103
+ ) -> Union["CreateFetchBulkBodyUrlsItemType1", str]:
104
+ try:
105
+ if not isinstance(data, dict):
106
+ raise TypeError()
107
+ urls_item_type_1 = CreateFetchBulkBodyUrlsItemType1.from_dict(data)
108
+
109
+ return urls_item_type_1
110
+ except: # noqa: E722
111
+ pass
112
+ return cast(Union["CreateFetchBulkBodyUrlsItemType1", str], data)
113
+
114
+ urls_item = _parse_urls_item(urls_item_data)
115
+
116
+ urls.append(urls_item)
117
+
118
+ webhook_url = d.pop("webhook_url")
119
+
120
+ _defaults = d.pop("defaults", UNSET)
121
+ defaults: Union[Unset, CreateFetchBulkBodyDefaults]
122
+ if isinstance(_defaults, Unset):
123
+ defaults = UNSET
124
+ else:
125
+ defaults = CreateFetchBulkBodyDefaults.from_dict(_defaults)
126
+
127
+ webhook_secret = d.pop("webhook_secret", UNSET)
128
+
129
+ _metadata = d.pop("metadata", UNSET)
130
+ metadata: Union[Unset, CreateFetchBulkBodyMetadata]
131
+ if isinstance(_metadata, Unset):
132
+ metadata = UNSET
133
+ else:
134
+ metadata = CreateFetchBulkBodyMetadata.from_dict(_metadata)
135
+
136
+ create_fetch_bulk_body = cls(
137
+ urls=urls,
138
+ webhook_url=webhook_url,
139
+ defaults=defaults,
140
+ webhook_secret=webhook_secret,
141
+ metadata=metadata,
142
+ )
143
+
144
+ create_fetch_bulk_body.additional_properties = d
145
+ return create_fetch_bulk_body
146
+
147
+ @property
148
+ def additional_keys(self) -> list[str]:
149
+ return list(self.additional_properties.keys())
150
+
151
+ def __getitem__(self, key: str) -> Any:
152
+ return self.additional_properties[key]
153
+
154
+ def __setitem__(self, key: str, value: Any) -> None:
155
+ self.additional_properties[key] = value
156
+
157
+ def __delitem__(self, key: str) -> None:
158
+ del self.additional_properties[key]
159
+
160
+ def __contains__(self, key: str) -> bool:
161
+ return key in self.additional_properties
@@ -0,0 +1,91 @@
1
+ from collections.abc import Mapping
2
+ from typing import (
3
+ Any,
4
+ TypeVar,
5
+ Union,
6
+ )
7
+
8
+ from attrs import define as _attrs_define
9
+ from attrs import field as _attrs_field
10
+
11
+ from ..models.create_fetch_bulk_body_defaults_format import (
12
+ CreateFetchBulkBodyDefaultsFormat,
13
+ )
14
+ from ..types import UNSET, Unset
15
+
16
+ T = TypeVar("T", bound="CreateFetchBulkBodyDefaults")
17
+
18
+
19
+ @_attrs_define
20
+ class CreateFetchBulkBodyDefaults:
21
+ """
22
+ Attributes:
23
+ format_ (Union[Unset, CreateFetchBulkBodyDefaultsFormat]):
24
+ country (Union[Unset, str]): Default: 'US'.
25
+ cache_ttl (Union[Unset, str]): Default: '48h'.
26
+ """
27
+
28
+ format_: Union[Unset, CreateFetchBulkBodyDefaultsFormat] = UNSET
29
+ country: Union[Unset, str] = "US"
30
+ cache_ttl: Union[Unset, str] = "48h"
31
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
32
+
33
+ def to_dict(self) -> dict[str, Any]:
34
+ format_: Union[Unset, str] = UNSET
35
+ if not isinstance(self.format_, Unset):
36
+ format_ = self.format_.value
37
+
38
+ country = self.country
39
+
40
+ cache_ttl = self.cache_ttl
41
+
42
+ field_dict: dict[str, Any] = {}
43
+ field_dict.update(self.additional_properties)
44
+ field_dict.update({})
45
+ if format_ is not UNSET:
46
+ field_dict["format"] = format_
47
+ if country is not UNSET:
48
+ field_dict["country"] = country
49
+ if cache_ttl is not UNSET:
50
+ field_dict["cache_ttl"] = cache_ttl
51
+
52
+ return field_dict
53
+
54
+ @classmethod
55
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
56
+ d = dict(src_dict)
57
+ _format_ = d.pop("format", UNSET)
58
+ format_: Union[Unset, CreateFetchBulkBodyDefaultsFormat]
59
+ if isinstance(_format_, Unset):
60
+ format_ = UNSET
61
+ else:
62
+ format_ = CreateFetchBulkBodyDefaultsFormat(_format_)
63
+
64
+ country = d.pop("country", UNSET)
65
+
66
+ cache_ttl = d.pop("cache_ttl", UNSET)
67
+
68
+ create_fetch_bulk_body_defaults = cls(
69
+ format_=format_,
70
+ country=country,
71
+ cache_ttl=cache_ttl,
72
+ )
73
+
74
+ create_fetch_bulk_body_defaults.additional_properties = d
75
+ return create_fetch_bulk_body_defaults
76
+
77
+ @property
78
+ def additional_keys(self) -> list[str]:
79
+ return list(self.additional_properties.keys())
80
+
81
+ def __getitem__(self, key: str) -> Any:
82
+ return self.additional_properties[key]
83
+
84
+ def __setitem__(self, key: str, value: Any) -> None:
85
+ self.additional_properties[key] = value
86
+
87
+ def __delitem__(self, key: str) -> None:
88
+ del self.additional_properties[key]
89
+
90
+ def __contains__(self, key: str) -> bool:
91
+ return key in self.additional_properties
@@ -0,0 +1,9 @@
1
+ from enum import Enum
2
+
3
+
4
+ class CreateFetchBulkBodyDefaultsFormat(str, Enum):
5
+ HTML = "html"
6
+ MARKDOWN = "markdown"
7
+
8
+ def __str__(self) -> str:
9
+ return str(self.value)
@@ -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="CreateFetchBulkBodyMetadata")
8
+
9
+
10
+ @_attrs_define
11
+ class CreateFetchBulkBodyMetadata:
12
+ """ """
13
+
14
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
15
+
16
+ def to_dict(self) -> dict[str, Any]:
17
+ field_dict: dict[str, Any] = {}
18
+ field_dict.update(self.additional_properties)
19
+
20
+ return field_dict
21
+
22
+ @classmethod
23
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
24
+ d = dict(src_dict)
25
+ create_fetch_bulk_body_metadata = cls()
26
+
27
+ create_fetch_bulk_body_metadata.additional_properties = d
28
+ return create_fetch_bulk_body_metadata
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,102 @@
1
+ from collections.abc import Mapping
2
+ from typing import (
3
+ Any,
4
+ TypeVar,
5
+ Union,
6
+ )
7
+
8
+ from attrs import define as _attrs_define
9
+ from attrs import field as _attrs_field
10
+
11
+ from ..models.create_fetch_bulk_body_urls_item_type_1_format import (
12
+ CreateFetchBulkBodyUrlsItemType1Format,
13
+ )
14
+ from ..types import UNSET, Unset
15
+
16
+ T = TypeVar("T", bound="CreateFetchBulkBodyUrlsItemType1")
17
+
18
+
19
+ @_attrs_define
20
+ class CreateFetchBulkBodyUrlsItemType1:
21
+ """
22
+ Attributes:
23
+ url (str):
24
+ format_ (Union[Unset, CreateFetchBulkBodyUrlsItemType1Format]):
25
+ country (Union[Unset, str]):
26
+ cache_ttl (Union[Unset, str]):
27
+ """
28
+
29
+ url: str
30
+ format_: Union[Unset, CreateFetchBulkBodyUrlsItemType1Format] = UNSET
31
+ country: Union[Unset, str] = UNSET
32
+ cache_ttl: Union[Unset, str] = UNSET
33
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
34
+
35
+ def to_dict(self) -> dict[str, Any]:
36
+ url = self.url
37
+
38
+ format_: Union[Unset, str] = UNSET
39
+ if not isinstance(self.format_, Unset):
40
+ format_ = self.format_.value
41
+
42
+ country = self.country
43
+
44
+ cache_ttl = self.cache_ttl
45
+
46
+ field_dict: dict[str, Any] = {}
47
+ field_dict.update(self.additional_properties)
48
+ field_dict.update(
49
+ {
50
+ "url": url,
51
+ }
52
+ )
53
+ if format_ is not UNSET:
54
+ field_dict["format"] = format_
55
+ if country is not UNSET:
56
+ field_dict["country"] = country
57
+ if cache_ttl is not UNSET:
58
+ field_dict["cache_ttl"] = cache_ttl
59
+
60
+ return field_dict
61
+
62
+ @classmethod
63
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
64
+ d = dict(src_dict)
65
+ url = d.pop("url")
66
+
67
+ _format_ = d.pop("format", UNSET)
68
+ format_: Union[Unset, CreateFetchBulkBodyUrlsItemType1Format]
69
+ if isinstance(_format_, Unset):
70
+ format_ = UNSET
71
+ else:
72
+ format_ = CreateFetchBulkBodyUrlsItemType1Format(_format_)
73
+
74
+ country = d.pop("country", UNSET)
75
+
76
+ cache_ttl = d.pop("cache_ttl", UNSET)
77
+
78
+ create_fetch_bulk_body_urls_item_type_1 = cls(
79
+ url=url,
80
+ format_=format_,
81
+ country=country,
82
+ cache_ttl=cache_ttl,
83
+ )
84
+
85
+ create_fetch_bulk_body_urls_item_type_1.additional_properties = d
86
+ return create_fetch_bulk_body_urls_item_type_1
87
+
88
+ @property
89
+ def additional_keys(self) -> list[str]:
90
+ return list(self.additional_properties.keys())
91
+
92
+ def __getitem__(self, key: str) -> Any:
93
+ return self.additional_properties[key]
94
+
95
+ def __setitem__(self, key: str, value: Any) -> None:
96
+ self.additional_properties[key] = value
97
+
98
+ def __delitem__(self, key: str) -> None:
99
+ del self.additional_properties[key]
100
+
101
+ def __contains__(self, key: str) -> bool:
102
+ return key in self.additional_properties
@@ -0,0 +1,9 @@
1
+ from enum import Enum
2
+
3
+
4
+ class CreateFetchBulkBodyUrlsItemType1Format(str, Enum):
5
+ HTML = "html"
6
+ MARKDOWN = "markdown"
7
+
8
+ def __str__(self) -> str:
9
+ return str(self.value)
@@ -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="CreateFetchBulkResponse202")
8
+
9
+
10
+ @_attrs_define
11
+ class CreateFetchBulkResponse202:
12
+ """ """
13
+
14
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
15
+
16
+ def to_dict(self) -> dict[str, Any]:
17
+ field_dict: dict[str, Any] = {}
18
+ field_dict.update(self.additional_properties)
19
+
20
+ return field_dict
21
+
22
+ @classmethod
23
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
24
+ d = dict(src_dict)
25
+ create_fetch_bulk_response_202 = cls()
26
+
27
+ create_fetch_bulk_response_202.additional_properties = d
28
+ return create_fetch_bulk_response_202
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,179 @@
1
+ from collections.abc import Mapping
2
+ from typing import (
3
+ TYPE_CHECKING,
4
+ Any,
5
+ TypeVar,
6
+ Union,
7
+ cast,
8
+ )
9
+
10
+ from attrs import define as _attrs_define
11
+ from attrs import field as _attrs_field
12
+
13
+ from ..types import UNSET, Unset
14
+
15
+ if TYPE_CHECKING:
16
+ from ..models.create_scrape_bulk_body_custom import CreateScrapeBulkBodyCustom
17
+ from ..models.create_scrape_bulk_body_defaults import CreateScrapeBulkBodyDefaults
18
+ from ..models.create_scrape_bulk_body_items_item import (
19
+ CreateScrapeBulkBodyItemsItem,
20
+ )
21
+ from ..models.metadata import Metadata
22
+
23
+
24
+ T = TypeVar("T", bound="CreateScrapeBulkBody")
25
+
26
+
27
+ @_attrs_define
28
+ class CreateScrapeBulkBody:
29
+ """
30
+ Attributes:
31
+ webhook_url (str): Webhook endpoint URL (HTTPS only; http:// rejected with 400 invalid_url, reason
32
+ scheme_unsupported)
33
+ urls (Union[Unset, list[str]]): Simple URL list. Provide urls OR items, not both.
34
+ items (Union[Unset, list['CreateScrapeBulkBodyItemsItem']]): Per-item configs. Provide urls OR items, not both.
35
+ defaults (Union[Unset, CreateScrapeBulkBodyDefaults]):
36
+ webhook_secret (Union[Unset, str]):
37
+ metadata (Union[Unset, Metadata]): Arbitrary key-value metadata. Max 4096 bytes when JSON-serialized.
38
+ custom (Union[Unset, CreateScrapeBulkBodyCustom]): Top-level user-supplied JSON payload, capped at 4096 UTF-8
39
+ bytes. Applied to every scrape-type entry that does not
40
+ provide its own per-entry `custom` (the per-entry value wins).
41
+ Echoed on each entry's success envelope in the bulk results
42
+ response (the key is omitted when no `custom` was supplied at
43
+ either level). Distinct from the system-owned `metadata`
44
+ column and never used as a cache-key input.
45
+ """
46
+
47
+ webhook_url: str
48
+ urls: Union[Unset, list[str]] = UNSET
49
+ items: Union[Unset, list["CreateScrapeBulkBodyItemsItem"]] = UNSET
50
+ defaults: Union[Unset, "CreateScrapeBulkBodyDefaults"] = UNSET
51
+ webhook_secret: Union[Unset, str] = UNSET
52
+ metadata: Union[Unset, "Metadata"] = UNSET
53
+ custom: Union[Unset, "CreateScrapeBulkBodyCustom"] = UNSET
54
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
55
+
56
+ def to_dict(self) -> dict[str, Any]:
57
+ webhook_url = self.webhook_url
58
+
59
+ urls: Union[Unset, list[str]] = UNSET
60
+ if not isinstance(self.urls, Unset):
61
+ urls = self.urls
62
+
63
+ items: Union[Unset, list[dict[str, Any]]] = UNSET
64
+ if not isinstance(self.items, Unset):
65
+ items = []
66
+ for items_item_data in self.items:
67
+ items_item = items_item_data.to_dict()
68
+ items.append(items_item)
69
+
70
+ defaults: Union[Unset, dict[str, Any]] = UNSET
71
+ if not isinstance(self.defaults, Unset):
72
+ defaults = self.defaults.to_dict()
73
+
74
+ webhook_secret = self.webhook_secret
75
+
76
+ metadata: Union[Unset, dict[str, Any]] = UNSET
77
+ if not isinstance(self.metadata, Unset):
78
+ metadata = self.metadata.to_dict()
79
+
80
+ custom: Union[Unset, dict[str, Any]] = UNSET
81
+ if not isinstance(self.custom, Unset):
82
+ custom = self.custom.to_dict()
83
+
84
+ field_dict: dict[str, Any] = {}
85
+ field_dict.update(self.additional_properties)
86
+ field_dict.update(
87
+ {
88
+ "webhook_url": webhook_url,
89
+ }
90
+ )
91
+ if urls is not UNSET:
92
+ field_dict["urls"] = urls
93
+ if items is not UNSET:
94
+ field_dict["items"] = items
95
+ if defaults is not UNSET:
96
+ field_dict["defaults"] = defaults
97
+ if webhook_secret is not UNSET:
98
+ field_dict["webhook_secret"] = webhook_secret
99
+ if metadata is not UNSET:
100
+ field_dict["metadata"] = metadata
101
+ if custom is not UNSET:
102
+ field_dict["custom"] = custom
103
+
104
+ return field_dict
105
+
106
+ @classmethod
107
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
108
+ from ..models.create_scrape_bulk_body_custom import CreateScrapeBulkBodyCustom
109
+ from ..models.create_scrape_bulk_body_defaults import (
110
+ CreateScrapeBulkBodyDefaults,
111
+ )
112
+ from ..models.create_scrape_bulk_body_items_item import (
113
+ CreateScrapeBulkBodyItemsItem,
114
+ )
115
+ from ..models.metadata import Metadata
116
+
117
+ d = dict(src_dict)
118
+ webhook_url = d.pop("webhook_url")
119
+
120
+ urls = cast(list[str], d.pop("urls", UNSET))
121
+
122
+ items = []
123
+ _items = d.pop("items", UNSET)
124
+ for items_item_data in _items or []:
125
+ items_item = CreateScrapeBulkBodyItemsItem.from_dict(items_item_data)
126
+
127
+ items.append(items_item)
128
+
129
+ _defaults = d.pop("defaults", UNSET)
130
+ defaults: Union[Unset, CreateScrapeBulkBodyDefaults]
131
+ if isinstance(_defaults, Unset):
132
+ defaults = UNSET
133
+ else:
134
+ defaults = CreateScrapeBulkBodyDefaults.from_dict(_defaults)
135
+
136
+ webhook_secret = d.pop("webhook_secret", UNSET)
137
+
138
+ _metadata = d.pop("metadata", UNSET)
139
+ metadata: Union[Unset, Metadata]
140
+ if isinstance(_metadata, Unset):
141
+ metadata = UNSET
142
+ else:
143
+ metadata = Metadata.from_dict(_metadata)
144
+
145
+ _custom = d.pop("custom", UNSET)
146
+ custom: Union[Unset, CreateScrapeBulkBodyCustom]
147
+ if isinstance(_custom, Unset):
148
+ custom = UNSET
149
+ else:
150
+ custom = CreateScrapeBulkBodyCustom.from_dict(_custom)
151
+
152
+ create_scrape_bulk_body = cls(
153
+ webhook_url=webhook_url,
154
+ urls=urls,
155
+ items=items,
156
+ defaults=defaults,
157
+ webhook_secret=webhook_secret,
158
+ metadata=metadata,
159
+ custom=custom,
160
+ )
161
+
162
+ create_scrape_bulk_body.additional_properties = d
163
+ return create_scrape_bulk_body
164
+
165
+ @property
166
+ def additional_keys(self) -> list[str]:
167
+ return list(self.additional_properties.keys())
168
+
169
+ def __getitem__(self, key: str) -> Any:
170
+ return self.additional_properties[key]
171
+
172
+ def __setitem__(self, key: str, value: Any) -> None:
173
+ self.additional_properties[key] = value
174
+
175
+ def __delitem__(self, key: str) -> None:
176
+ del self.additional_properties[key]
177
+
178
+ def __contains__(self, key: str) -> bool:
179
+ return key in self.additional_properties
@@ -0,0 +1,52 @@
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="CreateScrapeBulkBodyCustom")
8
+
9
+
10
+ @_attrs_define
11
+ class CreateScrapeBulkBodyCustom:
12
+ """Top-level user-supplied JSON payload, capped at 4096 UTF-8
13
+ bytes. Applied to every scrape-type entry that does not
14
+ provide its own per-entry `custom` (the per-entry value wins).
15
+ Echoed on each entry's success envelope in the bulk results
16
+ response (the key is omitted when no `custom` was supplied at
17
+ either level). Distinct from the system-owned `metadata`
18
+ column and never used as a cache-key input.
19
+
20
+ """
21
+
22
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
+
24
+ def to_dict(self) -> dict[str, Any]:
25
+ field_dict: dict[str, Any] = {}
26
+ field_dict.update(self.additional_properties)
27
+
28
+ return field_dict
29
+
30
+ @classmethod
31
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
32
+ d = dict(src_dict)
33
+ create_scrape_bulk_body_custom = cls()
34
+
35
+ create_scrape_bulk_body_custom.additional_properties = d
36
+ return create_scrape_bulk_body_custom
37
+
38
+ @property
39
+ def additional_keys(self) -> list[str]:
40
+ return list(self.additional_properties.keys())
41
+
42
+ def __getitem__(self, key: str) -> Any:
43
+ return self.additional_properties[key]
44
+
45
+ def __setitem__(self, key: str, value: Any) -> None:
46
+ self.additional_properties[key] = value
47
+
48
+ def __delitem__(self, key: str) -> None:
49
+ del self.additional_properties[key]
50
+
51
+ def __contains__(self, key: str) -> bool:
52
+ return key in self.additional_properties