bytekit-sdk 0.9.2__tar.gz → 0.9.3__tar.gz

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 (279) hide show
  1. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/CHANGELOG.md +65 -0
  2. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/PKG-INFO +13 -19
  3. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/README.md +12 -18
  4. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/pyproject.toml +1 -1
  5. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/__init__.py +15 -0
  6. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/account/get_account.py +4 -0
  7. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/bulk/create_bulk.py +19 -10
  8. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/bulk/delete_bulk.py +4 -0
  9. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/bulk/get_bulk.py +48 -0
  10. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/bulk/list_bulk_screenshots.py +15 -10
  11. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/fetch/get_fetch.py +43 -12
  12. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/fetch/post_fetch.py +16 -4
  13. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/fetch_bulk/create_fetch_bulk.py +19 -10
  14. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/fetch_bulk/get_fetch_bulk.py +44 -0
  15. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/monitors/create_monitor.py +4 -0
  16. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/monitors/delete_monitor.py +4 -0
  17. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/monitors/get_monitor.py +4 -0
  18. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/monitors/list_monitor_captures.py +15 -10
  19. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/monitors/list_monitors.py +15 -10
  20. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/monitors/update_monitor.py +4 -0
  21. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/scrape/create_scrape.py +117 -25
  22. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/scrape/get_scrape.py +4 -0
  23. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/scrape_bulk/create_scrape_bulk.py +43 -10
  24. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/scrape_bulk/get_scrape_bulk.py +48 -0
  25. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/screenshots/create_screenshot.py +20 -4
  26. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/screenshots/get_screenshot.py +4 -0
  27. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/search/create_search.py +45 -11
  28. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/sitemap/create_sitemap.py +64 -0
  29. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/sitemap/get_sitemap.py +4 -0
  30. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/usage/get_usage.py +15 -10
  31. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/usage/get_usage_by_endpoint.py +15 -10
  32. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/usage/get_usage_daily.py +15 -10
  33. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/webhooks/list_webhook_deliveries.py +15 -10
  34. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/webhooks/retry_webhook_delivery.py +4 -0
  35. bytekit_sdk-0.9.3/src/bytekit/facade.py +248 -0
  36. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/__init__.py +68 -0
  37. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/account_session_response.py +16 -4
  38. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/billing_node.py +5 -4
  39. bytekit_sdk-0.9.3/src/bytekit/models/create_bulk_response_403.py +91 -0
  40. bytekit_sdk-0.9.3/src/bytekit/models/create_bulk_response_403_blocked_item.py +82 -0
  41. bytekit_sdk-0.9.3/src/bytekit/models/create_bulk_response_403_blocked_item_error_code.py +9 -0
  42. bytekit_sdk-0.9.3/src/bytekit/models/create_bulk_response_403_blocked_item_rule_type.py +11 -0
  43. bytekit_sdk-0.9.3/src/bytekit/models/create_bulk_response_403_error.py +69 -0
  44. bytekit_sdk-0.9.3/src/bytekit/models/create_bulk_response_403_error_code.py +8 -0
  45. bytekit_sdk-0.9.3/src/bytekit/models/create_fetch_bulk_response_403.py +97 -0
  46. bytekit_sdk-0.9.3/src/bytekit/models/create_fetch_bulk_response_403_blocked_item.py +82 -0
  47. bytekit_sdk-0.9.3/src/bytekit/models/create_fetch_bulk_response_403_blocked_item_error_code.py +9 -0
  48. bytekit_sdk-0.9.3/src/bytekit/models/create_fetch_bulk_response_403_blocked_item_rule_type.py +11 -0
  49. bytekit_sdk-0.9.3/src/bytekit/models/create_fetch_bulk_response_403_error.py +71 -0
  50. bytekit_sdk-0.9.3/src/bytekit/models/create_fetch_bulk_response_403_error_code.py +8 -0
  51. bytekit_sdk-0.9.3/src/bytekit/models/create_scrape_bulk_response_403.py +97 -0
  52. bytekit_sdk-0.9.3/src/bytekit/models/create_scrape_bulk_response_403_blocked_item.py +84 -0
  53. bytekit_sdk-0.9.3/src/bytekit/models/create_scrape_bulk_response_403_blocked_item_error_code.py +9 -0
  54. bytekit_sdk-0.9.3/src/bytekit/models/create_scrape_bulk_response_403_blocked_item_rule_type.py +11 -0
  55. bytekit_sdk-0.9.3/src/bytekit/models/create_scrape_bulk_response_403_error.py +71 -0
  56. bytekit_sdk-0.9.3/src/bytekit/models/create_scrape_bulk_response_403_error_code.py +8 -0
  57. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_search_body.py +1 -1
  58. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_search_response_503.py +1 -3
  59. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/fetch_request.py +1 -1
  60. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_error_envelope_error.py +14 -0
  61. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_error_envelope_error_code.py +1 -0
  62. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_formats.py +21 -0
  63. bytekit_sdk-0.9.3/src/bytekit/models/scrape_formats_json.py +112 -0
  64. bytekit_sdk-0.9.3/src/bytekit/models/scrape_formats_json_data_type_0.py +44 -0
  65. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_request.py +45 -9
  66. bytekit_sdk-0.9.3/src/bytekit/models/scrape_request_json_format.py +109 -0
  67. bytekit_sdk-0.9.3/src/bytekit/models/scrape_request_json_format_model.py +9 -0
  68. bytekit_sdk-0.9.3/src/bytekit/models/scrape_request_json_format_schema.py +49 -0
  69. bytekit_sdk-0.9.3/src/bytekit/models/scrape_request_json_format_type.py +8 -0
  70. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_success_envelope.py +2 -0
  71. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_warning.py +8 -1
  72. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_warning_code.py +7 -0
  73. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/screenshot_request.py +11 -0
  74. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/sitemap_request.py +18 -3
  75. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/sitemap_request_process_type_0.py +6 -4
  76. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/sitemap_response.py +31 -5
  77. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/sitemap_response_process_type_0.py +1 -1
  78. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/webhook_delivery_response_event_type.py +1 -0
  79. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/.gitignore +0 -0
  80. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/LICENSE +0 -0
  81. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/__init__.py +0 -0
  82. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/account/__init__.py +0 -0
  83. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/bulk/__init__.py +0 -0
  84. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/fetch/__init__.py +0 -0
  85. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/fetch_bulk/__init__.py +0 -0
  86. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/monitors/__init__.py +0 -0
  87. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/scrape/__init__.py +0 -0
  88. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/scrape_bulk/__init__.py +0 -0
  89. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/screenshots/__init__.py +0 -0
  90. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/search/__init__.py +0 -0
  91. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/sitemap/__init__.py +0 -0
  92. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/usage/__init__.py +0 -0
  93. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/api/webhooks/__init__.py +0 -0
  94. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/client.py +0 -0
  95. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/errors.py +0 -0
  96. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/account_bearer_response.py +0 -0
  97. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/account_bearer_response_api_key.py +0 -0
  98. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/account_bearer_response_api_key_environment.py +0 -0
  99. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/account_bearer_response_auto_topup.py +0 -0
  100. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/account_bearer_response_plan.py +0 -0
  101. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/account_bearer_response_subscription.py +0 -0
  102. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/account_bearer_response_subscription_plan.py +0 -0
  103. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/account_bearer_response_subscription_status.py +0 -0
  104. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/account_session_response_notifications.py +0 -0
  105. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/account_session_response_plan.py +0 -0
  106. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/bandwidth_balance.py +0 -0
  107. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/billing_factor.py +0 -0
  108. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/billing_factor_name.py +0 -0
  109. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/bulk_completed_webhook.py +0 -0
  110. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/bulk_job_counters.py +0 -0
  111. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/bulk_mandatory_scrape_item.py +0 -0
  112. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/bulk_mandatory_scrape_item_error.py +0 -0
  113. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/bulk_mandatory_scrape_item_formats.py +0 -0
  114. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/bulk_mandatory_scrape_item_terminal_outcome.py +0 -0
  115. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/bulk_mandatory_scrape_item_type.py +0 -0
  116. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/capture_response.py +0 -0
  117. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/capture_response_outcome.py +0 -0
  118. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/clip.py +0 -0
  119. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body.py +0 -0
  120. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_defaults.py +0 -0
  121. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_defaults_device.py +0 -0
  122. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_defaults_device_scale_factor_type_1.py +0 -0
  123. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_defaults_device_scale_factor_type_2_type_1.py +0 -0
  124. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_defaults_device_scale_factor_type_3_type_1.py +0 -0
  125. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_defaults_formats_item.py +0 -0
  126. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_defaults_type.py +0 -0
  127. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_defaults_viewport_type_0.py +0 -0
  128. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_defaults_wait_until.py +0 -0
  129. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_items_item.py +0 -0
  130. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_items_item_device.py +0 -0
  131. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_items_item_formats_item.py +0 -0
  132. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_items_item_scenario.py +0 -0
  133. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_items_item_type.py +0 -0
  134. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_items_item_viewport_type_0.py +0 -0
  135. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_body_items_item_wait_until.py +0 -0
  136. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_response_202.py +0 -0
  137. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_bulk_response_202_status.py +0 -0
  138. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_fetch_bulk_body.py +0 -0
  139. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_fetch_bulk_body_defaults.py +0 -0
  140. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_fetch_bulk_body_urls_item_type_1.py +0 -0
  141. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_fetch_bulk_response_202.py +0 -0
  142. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_fetch_bulk_response_202_status.py +0 -0
  143. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_scrape_bulk_body.py +0 -0
  144. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_scrape_bulk_body_custom.py +0 -0
  145. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_scrape_bulk_body_defaults.py +0 -0
  146. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_scrape_bulk_body_defaults_formats_item.py +0 -0
  147. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_scrape_bulk_body_items_item.py +0 -0
  148. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_scrape_bulk_body_items_item_custom.py +0 -0
  149. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_scrape_bulk_body_items_item_formats_item.py +0 -0
  150. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_scrape_bulk_response_202.py +0 -0
  151. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_scrape_bulk_response_202_status.py +0 -0
  152. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_search_body_date_range.py +0 -0
  153. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_search_body_type.py +0 -0
  154. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_search_response_200.py +0 -0
  155. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_search_response_200_results_item.py +0 -0
  156. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_search_response_200_results_item_image.py +0 -0
  157. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/create_search_response_503_error.py +0 -0
  158. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/credit_balance.py +0 -0
  159. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/delete_bulk_response_200.py +0 -0
  160. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/delete_bulk_response_200_status.py +0 -0
  161. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/error.py +0 -0
  162. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/error_error.py +0 -0
  163. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/error_status.py +0 -0
  164. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/fetch_request_cache_ttl_type_1.py +0 -0
  165. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/fetch_request_custom.py +0 -0
  166. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_bulk_response_200.py +0 -0
  167. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_bulk_response_200_status.py +0 -0
  168. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_bulk_response_202.py +0 -0
  169. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_bulk_response_202_status.py +0 -0
  170. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_response_200.py +0 -0
  171. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_response_200_items_item_type_0.py +0 -0
  172. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_response_200_items_item_type_0_status.py +0 -0
  173. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_response_200_items_item_type_1.py +0 -0
  174. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_response_200_items_item_type_1_terminal_outcome.py +0 -0
  175. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_response_200_items_item_type_1_type.py +0 -0
  176. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_response_200_status.py +0 -0
  177. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_response_202.py +0 -0
  178. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_response_202_items_item_type_0.py +0 -0
  179. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_response_202_items_item_type_0_status.py +0 -0
  180. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_response_202_items_item_type_1.py +0 -0
  181. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_response_202_items_item_type_1_terminal_outcome.py +0 -0
  182. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_response_202_items_item_type_1_type.py +0 -0
  183. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_response_202_status.py +0 -0
  184. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_bulk_status.py +0 -0
  185. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_fetch_cache_ttl_type_1.py +0 -0
  186. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_scrape_bulk_response_200.py +0 -0
  187. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_scrape_bulk_response_200_status.py +0 -0
  188. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_scrape_bulk_response_202.py +0 -0
  189. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_scrape_bulk_response_202_status.py +0 -0
  190. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_scrape_bulk_status.py +0 -0
  191. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_usage_by_endpoint_response_200.py +0 -0
  192. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_usage_by_endpoint_response_200_rows_item.py +0 -0
  193. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_usage_by_endpoint_response_200_rows_item_endpoint.py +0 -0
  194. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_usage_by_endpoint_response_200_totals.py +0 -0
  195. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_usage_daily_response_200.py +0 -0
  196. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_usage_daily_response_200_data_item.py +0 -0
  197. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_usage_response_200.py +0 -0
  198. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/get_usage_response_200_plan_type.py +0 -0
  199. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/list_bulk_screenshots_response_200.py +0 -0
  200. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/list_bulk_screenshots_response_200_items_item_type_0.py +0 -0
  201. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/list_bulk_screenshots_response_200_items_item_type_0_artifacts.py +0 -0
  202. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/list_bulk_screenshots_response_200_items_item_type_0_status.py +0 -0
  203. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/list_bulk_screenshots_response_200_items_item_type_0_type.py +0 -0
  204. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/list_bulk_screenshots_response_200_items_item_type_1.py +0 -0
  205. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/list_bulk_screenshots_response_200_items_item_type_1_terminal_outcome.py +0 -0
  206. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/list_bulk_screenshots_response_200_items_item_type_1_type.py +0 -0
  207. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/list_bulk_screenshots_status.py +0 -0
  208. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/list_monitor_captures_response_200.py +0 -0
  209. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/list_monitors_response_200.py +0 -0
  210. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/list_monitors_status.py +0 -0
  211. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/list_webhook_deliveries_response_200.py +0 -0
  212. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/list_webhook_deliveries_status.py +0 -0
  213. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/metadata.py +0 -0
  214. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_create_request.py +0 -0
  215. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_create_request_interval_type.py +0 -0
  216. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_create_request_notify_on.py +0 -0
  217. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_create_request_options.py +0 -0
  218. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_create_request_scrape_options.py +0 -0
  219. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_create_request_type.py +0 -0
  220. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_create_request_webhook_headers.py +0 -0
  221. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_create_response.py +0 -0
  222. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_response.py +0 -0
  223. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_response_interval_type.py +0 -0
  224. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_response_metadata_type_0.py +0 -0
  225. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_response_status.py +0 -0
  226. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_response_type.py +0 -0
  227. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_response_webhook_headers_type_0.py +0 -0
  228. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_update_request.py +0 -0
  229. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_update_request_interval_type.py +0 -0
  230. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_update_request_notify_on.py +0 -0
  231. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_update_request_options.py +0 -0
  232. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_update_request_scrape_options.py +0 -0
  233. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_update_request_status.py +0 -0
  234. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/monitor_update_request_webhook_headers.py +0 -0
  235. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_error_envelope.py +0 -0
  236. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_error_envelope_schema_version.py +0 -0
  237. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_error_envelope_status.py +0 -0
  238. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_markdown_tokens.py +0 -0
  239. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_metadata.py +0 -0
  240. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_queued_envelope.py +0 -0
  241. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_queued_envelope_schema_version.py +0 -0
  242. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_queued_envelope_status.py +0 -0
  243. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_request_cache_ttl_type_1.py +0 -0
  244. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_request_custom.py +0 -0
  245. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_request_events_item.py +0 -0
  246. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_request_formats_item.py +0 -0
  247. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_request_markdown_images.py +0 -0
  248. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_request_markdown_links.py +0 -0
  249. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_request_markdown_mode.py +0 -0
  250. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_request_token_encoding.py +0 -0
  251. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_request_x_internal_scrape_path.py +0 -0
  252. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_scored_image.py +0 -0
  253. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_scored_link.py +0 -0
  254. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_stats.py +0 -0
  255. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_success_envelope_cache.py +0 -0
  256. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_success_envelope_custom.py +0 -0
  257. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_success_envelope_schema_version.py +0 -0
  258. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_success_envelope_status.py +0 -0
  259. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_table.py +0 -0
  260. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/scrape_table_kind.py +0 -0
  261. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/screenshot_request_device.py +0 -0
  262. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/screenshot_request_device_scale_factor_type_1.py +0 -0
  263. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/screenshot_request_device_scale_factor_type_2_type_1.py +0 -0
  264. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/screenshot_request_device_scale_factor_type_3_type_1.py +0 -0
  265. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/screenshot_request_format.py +0 -0
  266. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/screenshot_request_wait_until.py +0 -0
  267. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/screenshot_response.py +0 -0
  268. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/screenshot_response_status.py +0 -0
  269. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/sitemap_request_process_type_0_options.py +0 -0
  270. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/sitemap_request_strategy.py +0 -0
  271. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/sitemap_response_cache.py +0 -0
  272. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/sitemap_response_metadata_type_0.py +0 -0
  273. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/sitemap_response_sources_type_0.py +0 -0
  274. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/sitemap_response_status.py +0 -0
  275. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/viewport.py +0 -0
  276. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/webhook_delivery_response.py +0 -0
  277. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/models/webhook_delivery_response_status.py +0 -0
  278. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/py.typed +0 -0
  279. {bytekit_sdk-0.9.2 → bytekit_sdk-0.9.3}/src/bytekit/types.py +0 -0
@@ -5,6 +5,71 @@ PyPI distribution: `bytekit-sdk`. Import name: `bytekit`.
5
5
 
6
6
  ## Unreleased
7
7
 
8
+ ## 0.9.3
9
+
10
+ _Release cut 2026-10-03._
11
+
12
+ ### Added
13
+
14
+ - **`bytekit.ByteKit` and `bytekit.ByteKitError`** (#5351) — a two-line entry point that raises on
15
+ any non-2xx, the way the TypeScript SDK does: `client = ByteKit(api_key=...)`, then
16
+ `client.scrape.create(url=..., formats=["markdown"])`. Every API operation is a method on a resource (`scrape`, `screenshots`,
17
+ `bulk`, `monitors`, `usage`, ...), delegated to the generated `bytekit.api.*` function. Any
18
+ non-2xx response, a `200` scrape carrying the `failed` envelope, and any response the generated
19
+ operation cannot parse (an undocumented status, a non-JSON or drifted body) raises `ByteKitError` with
20
+ `status_code`, `code` and `message`; it subclasses `UnexpectedStatus`, so existing handlers keep
21
+ catching it. A transport failure propagates as the `httpx` exception. `AuthenticatedClient`,
22
+ `bytekit.api.*` and the returned `Error` models are unchanged.
23
+
24
+ ### Changed
25
+
26
+ - **`BillingNode.raw_bytes` and `ScrapeSuccessEnvelope.content_length` docstrings name the
27
+ hosted-browser tier** (#5120) — a page served by that tier reports the browser's full measured
28
+ transfer as its byte basis. Docstring only, no model field changes. Regenerated from
29
+ `docs/api/openapi.yaml`.
30
+ - **`ScrapeWarningCode` gains the five extraction codes** (#5130) — `EXTRACT_VALIDATION_FAILED`,
31
+ `EXHAUSTED_RETRIES`, `CONTENT_TRUNCATED`, `MODEL_REFUSAL` and `EMPTY_EXTRACTION`, so a scrape
32
+ response carrying one of them parses instead of failing on an unknown enum member. Regenerated
33
+ from `docs/api/openapi.yaml`.
34
+ - **`ScreenshotRequest` gains `async_`, and `create_scrape` gains an `async_` query argument**
35
+ (#5349) — `async` is now accepted as a body field or a `?async=true` query parameter on both
36
+ `/v1/scrape` and `/v1/screenshots`; either one turns async on, and `false` in one never cancels
37
+ `true` in the other. Regenerated from `docs/api/openapi.yaml`.
38
+ - `WebhookDeliveryResponseEventType` gains `MONITOR_SUSPENDED = "monitor.suspended"` (#5408). The
39
+ worker sends that event when a monitor is suspended because the account ran out of balance, and
40
+ `GET /v1/webhook-deliveries` can return it; before, parsing such a delivery raised `ValueError`.
41
+ Regenerated from `docs/api/openapi.yaml`.
42
+ - The README quick start now uses the `ByteKit` facade (#5409), calling
43
+ `client.scrape.create(url=..., formats=["markdown"])` rather than `AuthenticatedClient` with
44
+ `create_scrape.sync(...)`, and the text under it says what the facade raises. The Error handling
45
+ section is unchanged. Documentation only, no code change.
46
+ - **Models and docstrings follow the corrected spec** (#5410) — `ScrapeRequest.formats` items are
47
+ `ScrapeRequestFormatsItem | ScrapeRequestJsonFormat` (the four string formats, or the `json`
48
+ object entry), and `ScrapeFormats` gains `json`. `create_screenshot`, `create_sitemap` and the
49
+ three bulk creates type a `403` response, `create_scrape` a `503`, and `get_fetch` gains a
50
+ `custom` argument (a JSON-encoded object). `create_search` documents that its `503` can be the
51
+ `Error` envelope (`billing_entitlement_missing`) as well as the vendor-masked
52
+ `CreateSearchResponse503`, and caps `query` at 2048 characters. **Behavior change:** a
53
+ `billing_entitlement_missing` `503` from `create_search` is now returned as an `Error` model
54
+ instead of raising `UnexpectedStatus`; the vendor-masked body parses as before. Regenerated from
55
+ `docs/api/openapi.yaml`.
56
+
57
+ ### Fixed
58
+
59
+ - `401 Unauthorized` now returns a typed `Error` instead of raising `UnexpectedStatus` on every
60
+ bearer-authenticated operation (#5114). The spec declared `401` on only one of them, so a
61
+ rejected API key hit the undocumented-status arm of the generated client — the same gap #3784
62
+ closed for `402`. A JSON `Error` envelope (`invalid_api_key`, or `unauthorized` when an operation
63
+ that also accepts a dashboard session gets no usable `Authorization` header) is now returned, and `sync_detailed(...).status_code` is `401`;
64
+ a non-JSON `401` still raises `UnexpectedStatus`, and `AuthenticatedClient.search()` still raises
65
+ on a `401`. Regenerated from the corrected spec:
66
+
67
+ ```python
68
+ result = create_scrape.sync(client=client, body=body)
69
+ if isinstance(result, Error):
70
+ print(result.error.code) # invalid_api_key | unauthorized
71
+ ```
72
+
8
73
  ## 0.9.2
9
74
 
10
75
  _Release cut 2026-10-02._
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: bytekit-sdk
3
- Version: 0.9.2
3
+ Version: 0.9.3
4
4
  Summary: Official Python SDK for the ByteKit API
5
5
  Project-URL: Homepage, https://bytekit.com
6
6
  Project-URL: Repository, https://github.com/Hunt-Labs-Inc/ByteKit
@@ -43,31 +43,25 @@ The installed version is available as `bytekit.__version__`.
43
43
  ## Quick start
44
44
 
45
45
  ```python
46
- from bytekit import AuthenticatedClient
47
- from bytekit.api.scrape import create_scrape
48
- from bytekit.models.scrape_request import ScrapeRequest
49
- from bytekit.models.scrape_request_formats_item import ScrapeRequestFormatsItem
50
- from bytekit.models.scrape_success_envelope import ScrapeSuccessEnvelope
46
+ from bytekit import ByteKit
47
+ from bytekit.models import ScrapeSuccessEnvelope
51
48
 
52
- # base_url defaults to https://api.bytekit.com, so only the token is required.
53
- client = AuthenticatedClient(token="sk_live_your_api_key_here")
49
+ # base_url defaults to https://api.bytekit.com, so only the API key is required.
50
+ client = ByteKit(api_key="sk_live_your_api_key_here")
54
51
 
55
- result = create_scrape.sync(
56
- client=client,
57
- body=ScrapeRequest(
58
- url="https://example.com",
59
- # Ask for markdown explicitly. `formats` is a list of enum members, not plain
60
- # strings. Omit it and the server returns raw HTML instead, leaving
61
- # `formats.markdown` unset.
62
- formats=[ScrapeRequestFormatsItem.MARKDOWN],
63
- ),
64
- )
52
+ # Ask for markdown explicitly. Omit `formats` and the server returns raw HTML, leaving
53
+ # `formats.markdown` unset.
54
+ result = client.scrape.create(url="https://example.com", formats=["markdown"])
65
55
 
66
56
  if isinstance(result, ScrapeSuccessEnvelope):
67
57
  print(result.formats.markdown)
68
58
  ```
69
59
 
70
- See [Error handling](#error-handling) for what `result` can be when the request fails.
60
+ `ByteKit` raises `ByteKitError` on any non-2xx response and on a scrape that comes back with the
61
+ `failed` envelope, so `result` here is either the `ScrapeSuccessEnvelope` or, for a request that
62
+ was queued, a `ScrapeQueuedEnvelope`. The generated operations the facade wraps
63
+ (`create_scrape.sync` and the rest) return a typed `Error` for a documented error status instead;
64
+ see [Error handling](#error-handling) for that contract.
71
65
 
72
66
  ### Error handling
73
67
 
@@ -17,31 +17,25 @@ The installed version is available as `bytekit.__version__`.
17
17
  ## Quick start
18
18
 
19
19
  ```python
20
- from bytekit import AuthenticatedClient
21
- from bytekit.api.scrape import create_scrape
22
- from bytekit.models.scrape_request import ScrapeRequest
23
- from bytekit.models.scrape_request_formats_item import ScrapeRequestFormatsItem
24
- from bytekit.models.scrape_success_envelope import ScrapeSuccessEnvelope
20
+ from bytekit import ByteKit
21
+ from bytekit.models import ScrapeSuccessEnvelope
25
22
 
26
- # base_url defaults to https://api.bytekit.com, so only the token is required.
27
- client = AuthenticatedClient(token="sk_live_your_api_key_here")
23
+ # base_url defaults to https://api.bytekit.com, so only the API key is required.
24
+ client = ByteKit(api_key="sk_live_your_api_key_here")
28
25
 
29
- result = create_scrape.sync(
30
- client=client,
31
- body=ScrapeRequest(
32
- url="https://example.com",
33
- # Ask for markdown explicitly. `formats` is a list of enum members, not plain
34
- # strings. Omit it and the server returns raw HTML instead, leaving
35
- # `formats.markdown` unset.
36
- formats=[ScrapeRequestFormatsItem.MARKDOWN],
37
- ),
38
- )
26
+ # Ask for markdown explicitly. Omit `formats` and the server returns raw HTML, leaving
27
+ # `formats.markdown` unset.
28
+ result = client.scrape.create(url="https://example.com", formats=["markdown"])
39
29
 
40
30
  if isinstance(result, ScrapeSuccessEnvelope):
41
31
  print(result.formats.markdown)
42
32
  ```
43
33
 
44
- See [Error handling](#error-handling) for what `result` can be when the request fails.
34
+ `ByteKit` raises `ByteKitError` on any non-2xx response and on a scrape that comes back with the
35
+ `failed` envelope, so `result` here is either the `ScrapeSuccessEnvelope` or, for a request that
36
+ was queued, a `ScrapeQueuedEnvelope`. The generated operations the facade wraps
37
+ (`create_scrape.sync` and the rest) return a typed `Error` for a documented error status instead;
38
+ see [Error handling](#error-handling) for that contract.
45
39
 
46
40
  ### Error handling
47
41
 
@@ -7,7 +7,7 @@
7
7
  # `pip install bytekit-sdk` yields a working `import bytekit`. Mirrors the npm sibling
8
8
  # @hunt-labs/bytekit-sdk.
9
9
  name = "bytekit-sdk"
10
- version = "0.9.2"
10
+ version = "0.9.3"
11
11
  description = "Official Python SDK for the ByteKit API"
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.10"
@@ -37,3 +37,18 @@ except PackageNotFoundError:
37
37
  # own test suite, which runs install-free via pyproject.toml's `pythonpath = ["src"]`.
38
38
  # A valid PEP 440 development version, never an empty string and never an import-time raise.
39
39
  __version__ = "0.0.0.dev0"
40
+
41
+
42
+ # BYTEKIT-HANDWRITTEN: ByteKit facade export (#5351, injected post-generation)
43
+ #
44
+ # This fragment is APPENDED to the generated src/bytekit/__init__.py by
45
+ # scripts/inject-handwritten.py, which installs the module itself as facade.py in the same run.
46
+ #
47
+ # Same shape as models_bulk_completed_webhook_export.py: `__all__` is a TUPLE the generator closed
48
+ # above, so an append extends it by rebinding rather than editing the generated block.
49
+ from .facade import ByteKit, ByteKitError
50
+
51
+ __all__ = __all__ + (
52
+ "ByteKit",
53
+ "ByteKitError",
54
+ )
@@ -44,6 +44,10 @@ def _parse_response(
44
44
  response_200 = errors.bytekit_parse(_parse_response_200, client=client, response=response)
45
45
 
46
46
  return response_200
47
+ if response.status_code == 401:
48
+ response_401 = errors.bytekit_parse(Error.from_dict, client=client, response=response)
49
+
50
+ return response_401
47
51
  if response.status_code == 429:
48
52
  response_429 = errors.bytekit_parse(Error.from_dict, client=client, response=response)
49
53
 
@@ -6,6 +6,7 @@ from ... import errors
6
6
  from ...client import AuthenticatedClient, Client
7
7
  from ...models.create_bulk_body import CreateBulkBody
8
8
  from ...models.create_bulk_response_202 import CreateBulkResponse202
9
+ from ...models.create_bulk_response_403 import CreateBulkResponse403
9
10
  from ...models.error import Error
10
11
  from ...types import Response
11
12
 
@@ -31,7 +32,7 @@ def _get_kwargs(
31
32
 
32
33
  def _parse_response(
33
34
  *, client: Union[AuthenticatedClient, Client], response: httpx.Response
34
- ) -> Optional[Union[CreateBulkResponse202, Error]]:
35
+ ) -> Optional[Union[CreateBulkResponse202, CreateBulkResponse403, Error]]:
35
36
  if response.status_code == 202:
36
37
  response_202 = errors.bytekit_parse(CreateBulkResponse202.from_dict, client=client, response=response)
37
38
 
@@ -40,10 +41,18 @@ def _parse_response(
40
41
  response_400 = errors.bytekit_parse(Error.from_dict, client=client, response=response)
41
42
 
42
43
  return response_400
44
+ if response.status_code == 401:
45
+ response_401 = errors.bytekit_parse(Error.from_dict, client=client, response=response)
46
+
47
+ return response_401
43
48
  if response.status_code == 402:
44
49
  response_402 = errors.bytekit_parse(Error.from_dict, client=client, response=response)
45
50
 
46
51
  return response_402
52
+ if response.status_code == 403:
53
+ response_403 = errors.bytekit_parse(CreateBulkResponse403.from_dict, client=client, response=response)
54
+
55
+ return response_403
47
56
  if response.status_code == 422:
48
57
  response_422 = errors.bytekit_parse(Error.from_dict, client=client, response=response)
49
58
 
@@ -56,7 +65,7 @@ def _parse_response(
56
65
 
57
66
  def _build_response(
58
67
  *, client: Union[AuthenticatedClient, Client], response: httpx.Response
59
- ) -> Response[Union[CreateBulkResponse202, Error]]:
68
+ ) -> Response[Union[CreateBulkResponse202, CreateBulkResponse403, Error]]:
60
69
  return Response(
61
70
  status_code=errors.bytekit_status_code(response.status_code), # BYTEKIT-STATUS-COERCE
62
71
  content=response.content,
@@ -69,7 +78,7 @@ def sync_detailed(
69
78
  *,
70
79
  client: Union[AuthenticatedClient, Client],
71
80
  body: CreateBulkBody,
72
- ) -> Response[Union[CreateBulkResponse202, Error]]:
81
+ ) -> Response[Union[CreateBulkResponse202, CreateBulkResponse403, Error]]:
73
82
  """Create mixed bulk job
74
83
 
75
84
  Enqueues screenshots or scrapes in a single batch.
@@ -118,7 +127,7 @@ def sync_detailed(
118
127
  httpx.TimeoutException: If the request takes longer than Client.timeout.
119
128
 
120
129
  Returns:
121
- Response[Union[CreateBulkResponse202, Error]]
130
+ Response[Union[CreateBulkResponse202, CreateBulkResponse403, Error]]
122
131
  """
123
132
 
124
133
  kwargs = _get_kwargs(
@@ -136,7 +145,7 @@ def sync(
136
145
  *,
137
146
  client: Union[AuthenticatedClient, Client],
138
147
  body: CreateBulkBody,
139
- ) -> Optional[Union[CreateBulkResponse202, Error]]:
148
+ ) -> Optional[Union[CreateBulkResponse202, CreateBulkResponse403, Error]]:
140
149
  """Create mixed bulk job
141
150
 
142
151
  Enqueues screenshots or scrapes in a single batch.
@@ -185,7 +194,7 @@ def sync(
185
194
  httpx.TimeoutException: If the request takes longer than Client.timeout.
186
195
 
187
196
  Returns:
188
- Union[CreateBulkResponse202, Error]
197
+ Union[CreateBulkResponse202, CreateBulkResponse403, Error]
189
198
  """
190
199
 
191
200
  return sync_detailed(
@@ -198,7 +207,7 @@ async def asyncio_detailed(
198
207
  *,
199
208
  client: Union[AuthenticatedClient, Client],
200
209
  body: CreateBulkBody,
201
- ) -> Response[Union[CreateBulkResponse202, Error]]:
210
+ ) -> Response[Union[CreateBulkResponse202, CreateBulkResponse403, Error]]:
202
211
  """Create mixed bulk job
203
212
 
204
213
  Enqueues screenshots or scrapes in a single batch.
@@ -247,7 +256,7 @@ async def asyncio_detailed(
247
256
  httpx.TimeoutException: If the request takes longer than Client.timeout.
248
257
 
249
258
  Returns:
250
- Response[Union[CreateBulkResponse202, Error]]
259
+ Response[Union[CreateBulkResponse202, CreateBulkResponse403, Error]]
251
260
  """
252
261
 
253
262
  kwargs = _get_kwargs(
@@ -263,7 +272,7 @@ async def asyncio(
263
272
  *,
264
273
  client: Union[AuthenticatedClient, Client],
265
274
  body: CreateBulkBody,
266
- ) -> Optional[Union[CreateBulkResponse202, Error]]:
275
+ ) -> Optional[Union[CreateBulkResponse202, CreateBulkResponse403, Error]]:
267
276
  """Create mixed bulk job
268
277
 
269
278
  Enqueues screenshots or scrapes in a single batch.
@@ -312,7 +321,7 @@ async def asyncio(
312
321
  httpx.TimeoutException: If the request takes longer than Client.timeout.
313
322
 
314
323
  Returns:
315
- Union[CreateBulkResponse202, Error]
324
+ Union[CreateBulkResponse202, CreateBulkResponse403, Error]
316
325
  """
317
326
 
318
327
  return (
@@ -28,6 +28,10 @@ def _parse_response(
28
28
  response_200 = errors.bytekit_parse(DeleteBulkResponse200.from_dict, client=client, response=response)
29
29
 
30
30
  return response_200
31
+ if response.status_code == 401:
32
+ response_401 = errors.bytekit_parse(Error.from_dict, client=client, response=response)
33
+
34
+ return response_401
31
35
  if response.status_code == 404:
32
36
  response_404 = errors.bytekit_parse(Error.from_dict, client=client, response=response)
33
37
 
@@ -33,6 +33,10 @@ def _parse_response(
33
33
  response_202 = errors.bytekit_parse(GetBulkResponse202.from_dict, client=client, response=response)
34
34
 
35
35
  return response_202
36
+ if response.status_code == 401:
37
+ response_401 = errors.bytekit_parse(Error.from_dict, client=client, response=response)
38
+
39
+ return response_401
36
40
  if response.status_code == 404:
37
41
  response_404 = errors.bytekit_parse(Error.from_dict, client=client, response=response)
38
42
 
@@ -61,6 +65,17 @@ def sync_detailed(
61
65
  ) -> Response[Union[Error, GetBulkResponse200, GetBulkResponse202]]:
62
66
  """Get bulk job status
63
67
 
68
+ Returns the job envelope. Items are listed by `GET /v1/bulk/{id}/screenshots`.
69
+
70
+ **Cancelled by the platform.** When the account can no longer spend (its bandwidth
71
+ balance is exhausted, or the account is deleted) while items are still pending, ByteKit
72
+ cancels the job itself. It then reads `status: cancelled` even though you never called
73
+ `DELETE /v1/bulk/{id}`, and the cancellation sends no webhook.
74
+
75
+ **Job ids from other create routes.** The job is looked up by account only, so the id
76
+ of a job created by `POST /v1/scrape/bulk` or `POST /v1/fetch/bulk` is found here too, not
77
+ a `404`, with that job's envelope. An id from another account answers `404`.
78
+
64
79
  Args:
65
80
  id (str):
66
81
 
@@ -90,6 +105,17 @@ def sync(
90
105
  ) -> Optional[Union[Error, GetBulkResponse200, GetBulkResponse202]]:
91
106
  """Get bulk job status
92
107
 
108
+ Returns the job envelope. Items are listed by `GET /v1/bulk/{id}/screenshots`.
109
+
110
+ **Cancelled by the platform.** When the account can no longer spend (its bandwidth
111
+ balance is exhausted, or the account is deleted) while items are still pending, ByteKit
112
+ cancels the job itself. It then reads `status: cancelled` even though you never called
113
+ `DELETE /v1/bulk/{id}`, and the cancellation sends no webhook.
114
+
115
+ **Job ids from other create routes.** The job is looked up by account only, so the id
116
+ of a job created by `POST /v1/scrape/bulk` or `POST /v1/fetch/bulk` is found here too, not
117
+ a `404`, with that job's envelope. An id from another account answers `404`.
118
+
93
119
  Args:
94
120
  id (str):
95
121
 
@@ -114,6 +140,17 @@ async def asyncio_detailed(
114
140
  ) -> Response[Union[Error, GetBulkResponse200, GetBulkResponse202]]:
115
141
  """Get bulk job status
116
142
 
143
+ Returns the job envelope. Items are listed by `GET /v1/bulk/{id}/screenshots`.
144
+
145
+ **Cancelled by the platform.** When the account can no longer spend (its bandwidth
146
+ balance is exhausted, or the account is deleted) while items are still pending, ByteKit
147
+ cancels the job itself. It then reads `status: cancelled` even though you never called
148
+ `DELETE /v1/bulk/{id}`, and the cancellation sends no webhook.
149
+
150
+ **Job ids from other create routes.** The job is looked up by account only, so the id
151
+ of a job created by `POST /v1/scrape/bulk` or `POST /v1/fetch/bulk` is found here too, not
152
+ a `404`, with that job's envelope. An id from another account answers `404`.
153
+
117
154
  Args:
118
155
  id (str):
119
156
 
@@ -141,6 +178,17 @@ async def asyncio(
141
178
  ) -> Optional[Union[Error, GetBulkResponse200, GetBulkResponse202]]:
142
179
  """Get bulk job status
143
180
 
181
+ Returns the job envelope. Items are listed by `GET /v1/bulk/{id}/screenshots`.
182
+
183
+ **Cancelled by the platform.** When the account can no longer spend (its bandwidth
184
+ balance is exhausted, or the account is deleted) while items are still pending, ByteKit
185
+ cancels the job itself. It then reads `status: cancelled` even though you never called
186
+ `DELETE /v1/bulk/{id}`, and the cancellation sends no webhook.
187
+
188
+ **Job ids from other create routes.** The job is looked up by account only, so the id
189
+ of a job created by `POST /v1/scrape/bulk` or `POST /v1/fetch/bulk` is found here too, not
190
+ a `404`, with that job's envelope. An id from another account answers `404`.
191
+
144
192
  Args:
145
193
  id (str):
146
194
 
@@ -5,6 +5,7 @@ import httpx
5
5
 
6
6
  from ... import errors
7
7
  from ...client import AuthenticatedClient, Client
8
+ from ...models.error import Error
8
9
  from ...models.list_bulk_screenshots_response_200 import ListBulkScreenshotsResponse200
9
10
  from ...models.list_bulk_screenshots_status import ListBulkScreenshotsStatus
10
11
  from ...types import UNSET, Response, Unset
@@ -42,11 +43,15 @@ def _get_kwargs(
42
43
 
43
44
  def _parse_response(
44
45
  *, client: Union[AuthenticatedClient, Client], response: httpx.Response
45
- ) -> Optional[ListBulkScreenshotsResponse200]:
46
+ ) -> Optional[Union[Error, ListBulkScreenshotsResponse200]]:
46
47
  if response.status_code == 200:
47
48
  response_200 = errors.bytekit_parse(ListBulkScreenshotsResponse200.from_dict, client=client, response=response)
48
49
 
49
50
  return response_200
51
+ if response.status_code == 401:
52
+ response_401 = errors.bytekit_parse(Error.from_dict, client=client, response=response)
53
+
54
+ return response_401
50
55
  if client.raise_on_unexpected_status:
51
56
  raise errors.bytekit_unexpected(response) # BYTEKIT-OP-GUARD
52
57
  else:
@@ -55,7 +60,7 @@ def _parse_response(
55
60
 
56
61
  def _build_response(
57
62
  *, client: Union[AuthenticatedClient, Client], response: httpx.Response
58
- ) -> Response[ListBulkScreenshotsResponse200]:
63
+ ) -> Response[Union[Error, ListBulkScreenshotsResponse200]]:
59
64
  return Response(
60
65
  status_code=errors.bytekit_status_code(response.status_code), # BYTEKIT-STATUS-COERCE
61
66
  content=response.content,
@@ -71,7 +76,7 @@ def sync_detailed(
71
76
  cursor: Union[Unset, str] = UNSET,
72
77
  limit: Union[Unset, int] = UNSET,
73
78
  status: Union[Unset, ListBulkScreenshotsStatus] = UNSET,
74
- ) -> Response[ListBulkScreenshotsResponse200]:
79
+ ) -> Response[Union[Error, ListBulkScreenshotsResponse200]]:
75
80
  """List bulk job items
76
81
 
77
82
  Returns the bulk job's items, discriminated by `type`.
@@ -107,7 +112,7 @@ def sync_detailed(
107
112
  httpx.TimeoutException: If the request takes longer than Client.timeout.
108
113
 
109
114
  Returns:
110
- Response[ListBulkScreenshotsResponse200]
115
+ Response[Union[Error, ListBulkScreenshotsResponse200]]
111
116
  """
112
117
 
113
118
  kwargs = _get_kwargs(
@@ -131,7 +136,7 @@ def sync(
131
136
  cursor: Union[Unset, str] = UNSET,
132
137
  limit: Union[Unset, int] = UNSET,
133
138
  status: Union[Unset, ListBulkScreenshotsStatus] = UNSET,
134
- ) -> Optional[ListBulkScreenshotsResponse200]:
139
+ ) -> Optional[Union[Error, ListBulkScreenshotsResponse200]]:
135
140
  """List bulk job items
136
141
 
137
142
  Returns the bulk job's items, discriminated by `type`.
@@ -167,7 +172,7 @@ def sync(
167
172
  httpx.TimeoutException: If the request takes longer than Client.timeout.
168
173
 
169
174
  Returns:
170
- ListBulkScreenshotsResponse200
175
+ Union[Error, ListBulkScreenshotsResponse200]
171
176
  """
172
177
 
173
178
  return sync_detailed(
@@ -186,7 +191,7 @@ async def asyncio_detailed(
186
191
  cursor: Union[Unset, str] = UNSET,
187
192
  limit: Union[Unset, int] = UNSET,
188
193
  status: Union[Unset, ListBulkScreenshotsStatus] = UNSET,
189
- ) -> Response[ListBulkScreenshotsResponse200]:
194
+ ) -> Response[Union[Error, ListBulkScreenshotsResponse200]]:
190
195
  """List bulk job items
191
196
 
192
197
  Returns the bulk job's items, discriminated by `type`.
@@ -222,7 +227,7 @@ async def asyncio_detailed(
222
227
  httpx.TimeoutException: If the request takes longer than Client.timeout.
223
228
 
224
229
  Returns:
225
- Response[ListBulkScreenshotsResponse200]
230
+ Response[Union[Error, ListBulkScreenshotsResponse200]]
226
231
  """
227
232
 
228
233
  kwargs = _get_kwargs(
@@ -244,7 +249,7 @@ async def asyncio(
244
249
  cursor: Union[Unset, str] = UNSET,
245
250
  limit: Union[Unset, int] = UNSET,
246
251
  status: Union[Unset, ListBulkScreenshotsStatus] = UNSET,
247
- ) -> Optional[ListBulkScreenshotsResponse200]:
252
+ ) -> Optional[Union[Error, ListBulkScreenshotsResponse200]]:
248
253
  """List bulk job items
249
254
 
250
255
  Returns the bulk job's items, discriminated by `type`.
@@ -280,7 +285,7 @@ async def asyncio(
280
285
  httpx.TimeoutException: If the request takes longer than Client.timeout.
281
286
 
282
287
  Returns:
283
- ListBulkScreenshotsResponse200
288
+ Union[Error, ListBulkScreenshotsResponse200]
284
289
  """
285
290
 
286
291
  return (