kernel 0.67.0__tar.gz → 0.69.0__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 (340) hide show
  1. kernel-0.69.0/.release-please-manifest.json +3 -0
  2. {kernel-0.67.0 → kernel-0.69.0}/CHANGELOG.md +34 -0
  3. {kernel-0.67.0 → kernel-0.69.0}/PKG-INFO +3 -3
  4. {kernel-0.67.0 → kernel-0.69.0}/README.md +2 -2
  5. {kernel-0.67.0 → kernel-0.69.0}/api.md +2 -1
  6. {kernel-0.67.0 → kernel-0.69.0}/pyproject.toml +1 -1
  7. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_version.py +1 -1
  8. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/pagination.py +26 -10
  9. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/api_keys.py +165 -3
  10. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/auth/connections.py +8 -0
  11. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/browser_pools.py +8 -0
  12. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/credential_providers.py +8 -0
  13. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/credentials.py +8 -0
  14. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/deployments.py +8 -0
  15. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/extensions.py +8 -0
  16. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/invocations.py +8 -0
  17. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/proxies.py +8 -0
  18. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/__init__.py +2 -0
  19. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/api_key.py +6 -0
  20. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/api_key_list_params.py +15 -0
  21. kernel-0.69.0/src/kernel/types/api_key_retrieve_params.py +15 -0
  22. kernel-0.69.0/src/kernel/types/api_key_rotate_params.py +23 -0
  23. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/auth/connection_list_params.py +3 -0
  24. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_pool_list_params.py +3 -0
  25. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/credential_list_params.py +3 -0
  26. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/credential_provider_list_params.py +3 -0
  27. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/deployment_list_params.py +3 -0
  28. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/extension_list_params.py +3 -0
  29. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/invocation_list_params.py +3 -0
  30. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/proxy_list_params.py +3 -0
  31. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/auth/test_connections.py +2 -0
  32. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/test_api_keys.py +138 -9
  33. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/test_browser_pools.py +2 -0
  34. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/test_credential_providers.py +2 -0
  35. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/test_credentials.py +2 -0
  36. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/test_deployments.py +2 -0
  37. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/test_extensions.py +2 -0
  38. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/test_invocations.py +2 -0
  39. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/test_proxies.py +2 -0
  40. kernel-0.69.0/tests/test_pagination.py +66 -0
  41. kernel-0.67.0/.release-please-manifest.json +0 -3
  42. {kernel-0.67.0 → kernel-0.69.0}/.gitignore +0 -0
  43. {kernel-0.67.0 → kernel-0.69.0}/CONTRIBUTING.md +0 -0
  44. {kernel-0.67.0 → kernel-0.69.0}/LICENSE +0 -0
  45. {kernel-0.67.0 → kernel-0.69.0}/SECURITY.md +0 -0
  46. {kernel-0.67.0 → kernel-0.69.0}/bin/check-release-environment +0 -0
  47. {kernel-0.67.0 → kernel-0.69.0}/bin/publish-pypi +0 -0
  48. {kernel-0.67.0 → kernel-0.69.0}/examples/.keep +0 -0
  49. {kernel-0.67.0 → kernel-0.69.0}/examples/browser_routing.py +0 -0
  50. {kernel-0.67.0 → kernel-0.69.0}/examples/browser_telemetry.py +0 -0
  51. {kernel-0.67.0 → kernel-0.69.0}/noxfile.py +0 -0
  52. {kernel-0.67.0 → kernel-0.69.0}/release-please-config.json +0 -0
  53. {kernel-0.67.0 → kernel-0.69.0}/requirements-dev.lock +0 -0
  54. {kernel-0.67.0 → kernel-0.69.0}/requirements.lock +0 -0
  55. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/__init__.py +0 -0
  56. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_base_client.py +0 -0
  57. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_client.py +0 -0
  58. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_compat.py +0 -0
  59. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_constants.py +0 -0
  60. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_exceptions.py +0 -0
  61. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_files.py +0 -0
  62. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_models.py +0 -0
  63. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_qs.py +0 -0
  64. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_resource.py +0 -0
  65. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_response.py +0 -0
  66. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_streaming.py +0 -0
  67. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_types.py +0 -0
  68. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_utils/__init__.py +0 -0
  69. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_utils/_compat.py +0 -0
  70. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_utils/_datetime_parse.py +0 -0
  71. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_utils/_json.py +0 -0
  72. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_utils/_logs.py +0 -0
  73. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_utils/_path.py +0 -0
  74. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_utils/_proxy.py +0 -0
  75. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_utils/_reflection.py +0 -0
  76. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_utils/_resources_proxy.py +0 -0
  77. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_utils/_streams.py +0 -0
  78. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_utils/_sync.py +0 -0
  79. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_utils/_transform.py +0 -0
  80. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_utils/_typing.py +0 -0
  81. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/_utils/_utils.py +0 -0
  82. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/app_framework.py +0 -0
  83. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/lib/.keep +0 -0
  84. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/lib/browser_routing/__init__.py +0 -0
  85. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/lib/browser_routing/raw_http.py +0 -0
  86. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/lib/browser_routing/routing.py +0 -0
  87. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/lib/browser_routing/util.py +0 -0
  88. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/py.typed +0 -0
  89. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/__init__.py +0 -0
  90. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/apps.py +0 -0
  91. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/auth/__init__.py +0 -0
  92. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/auth/auth.py +0 -0
  93. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/browsers/__init__.py +0 -0
  94. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/browsers/browsers.py +0 -0
  95. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/browsers/computer.py +0 -0
  96. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/browsers/fs/__init__.py +0 -0
  97. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/browsers/fs/fs.py +0 -0
  98. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/browsers/fs/watch.py +0 -0
  99. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/browsers/logs.py +0 -0
  100. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/browsers/playwright.py +0 -0
  101. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/browsers/process.py +0 -0
  102. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/browsers/replays.py +0 -0
  103. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/browsers/telemetry.py +0 -0
  104. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/organization/__init__.py +0 -0
  105. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/organization/limits.py +0 -0
  106. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/organization/organization.py +0 -0
  107. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/profiles.py +0 -0
  108. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/projects/__init__.py +0 -0
  109. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/projects/limits.py +0 -0
  110. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/resources/projects/projects.py +0 -0
  111. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/api_key_create_params.py +0 -0
  112. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/api_key_update_params.py +0 -0
  113. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/app_list_params.py +0 -0
  114. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/app_list_response.py +0 -0
  115. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/auth/__init__.py +0 -0
  116. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/auth/connection_create_params.py +0 -0
  117. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/auth/connection_follow_response.py +0 -0
  118. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/auth/connection_login_params.py +0 -0
  119. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/auth/connection_submit_params.py +0 -0
  120. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/auth/connection_update_params.py +0 -0
  121. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/auth/login_response.py +0 -0
  122. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/auth/managed_auth.py +0 -0
  123. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/auth/submit_fields_response.py +0 -0
  124. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_create_params.py +0 -0
  125. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_create_response.py +0 -0
  126. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_curl_params.py +0 -0
  127. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_curl_response.py +0 -0
  128. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_list_params.py +0 -0
  129. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_list_response.py +0 -0
  130. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_load_extensions_params.py +0 -0
  131. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_pool.py +0 -0
  132. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_pool_acquire_params.py +0 -0
  133. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_pool_acquire_response.py +0 -0
  134. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_pool_create_params.py +0 -0
  135. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_pool_delete_params.py +0 -0
  136. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_pool_ref.py +0 -0
  137. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_pool_release_params.py +0 -0
  138. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_pool_update_params.py +0 -0
  139. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_retrieve_params.py +0 -0
  140. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_retrieve_response.py +0 -0
  141. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_update_params.py +0 -0
  142. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_update_response.py +0 -0
  143. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browser_usage.py +0 -0
  144. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/__init__.py +0 -0
  145. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_api_call_event.py +0 -0
  146. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_call_stack.py +0 -0
  147. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_captcha_solve_result_event.py +0 -0
  148. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_cdp_connect_event.py +0 -0
  149. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_cdp_disconnect_event.py +0 -0
  150. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_console_error_event.py +0 -0
  151. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_console_log_event.py +0 -0
  152. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_event_context.py +0 -0
  153. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_event_source.py +0 -0
  154. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_http_headers.py +0 -0
  155. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_interaction_click_event.py +0 -0
  156. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_interaction_key_event.py +0 -0
  157. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_interaction_scroll_settled_event.py +0 -0
  158. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_live_view_connect_event.py +0 -0
  159. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_live_view_disconnect_event.py +0 -0
  160. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_monitor_disconnected_event.py +0 -0
  161. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_monitor_init_failed_event.py +0 -0
  162. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_monitor_reconnect_failed_event.py +0 -0
  163. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_monitor_reconnected_event.py +0 -0
  164. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_monitor_screenshot_event.py +0 -0
  165. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_network_idle_event.py +0 -0
  166. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_network_loading_failed_event.py +0 -0
  167. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_network_request_event.py +0 -0
  168. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_network_response_event.py +0 -0
  169. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_page_dom_content_loaded_event.py +0 -0
  170. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_page_layout_settled_event.py +0 -0
  171. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_page_layout_shift_event.py +0 -0
  172. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_page_lcp_event.py +0 -0
  173. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_page_load_event.py +0 -0
  174. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_page_navigation_event.py +0 -0
  175. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_page_navigation_settled_event.py +0 -0
  176. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_page_tab_opened_event.py +0 -0
  177. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_service_crashed_event.py +0 -0
  178. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_system_oom_kill_event.py +0 -0
  179. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_telemetry_categories_config.py +0 -0
  180. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_telemetry_categories_config_param.py +0 -0
  181. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_telemetry_category_config.py +0 -0
  182. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_telemetry_category_config_param.py +0 -0
  183. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_telemetry_config.py +0 -0
  184. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/browser_telemetry_event.py +0 -0
  185. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/computer_batch_params.py +0 -0
  186. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/computer_capture_screenshot_params.py +0 -0
  187. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/computer_click_mouse_params.py +0 -0
  188. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/computer_drag_mouse_params.py +0 -0
  189. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/computer_get_mouse_position_response.py +0 -0
  190. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/computer_move_mouse_params.py +0 -0
  191. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/computer_press_key_params.py +0 -0
  192. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/computer_read_clipboard_response.py +0 -0
  193. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/computer_scroll_params.py +0 -0
  194. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/computer_set_cursor_visibility_params.py +0 -0
  195. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/computer_set_cursor_visibility_response.py +0 -0
  196. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/computer_type_text_params.py +0 -0
  197. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/computer_write_clipboard_params.py +0 -0
  198. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/f_create_directory_params.py +0 -0
  199. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/f_delete_directory_params.py +0 -0
  200. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/f_delete_file_params.py +0 -0
  201. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/f_download_dir_zip_params.py +0 -0
  202. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/f_file_info_params.py +0 -0
  203. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/f_file_info_response.py +0 -0
  204. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/f_list_files_params.py +0 -0
  205. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/f_list_files_response.py +0 -0
  206. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/f_move_params.py +0 -0
  207. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/f_read_file_params.py +0 -0
  208. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/f_set_file_permissions_params.py +0 -0
  209. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/f_upload_params.py +0 -0
  210. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/f_upload_zip_params.py +0 -0
  211. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/f_write_file_params.py +0 -0
  212. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/fs/__init__.py +0 -0
  213. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/fs/watch_events_response.py +0 -0
  214. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/fs/watch_start_params.py +0 -0
  215. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/fs/watch_start_response.py +0 -0
  216. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/log_stream_params.py +0 -0
  217. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/playwright_execute_params.py +0 -0
  218. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/playwright_execute_response.py +0 -0
  219. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/process_exec_params.py +0 -0
  220. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/process_exec_response.py +0 -0
  221. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/process_kill_params.py +0 -0
  222. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/process_kill_response.py +0 -0
  223. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/process_resize_params.py +0 -0
  224. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/process_resize_response.py +0 -0
  225. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/process_spawn_params.py +0 -0
  226. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/process_spawn_response.py +0 -0
  227. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/process_status_response.py +0 -0
  228. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/process_stdin_params.py +0 -0
  229. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/process_stdin_response.py +0 -0
  230. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/process_stdout_stream_response.py +0 -0
  231. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/replay_list_response.py +0 -0
  232. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/replay_start_params.py +0 -0
  233. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/replay_start_response.py +0 -0
  234. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/browsers/telemetry_stream_response.py +0 -0
  235. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/created_api_key.py +0 -0
  236. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/credential.py +0 -0
  237. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/credential_create_params.py +0 -0
  238. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/credential_provider.py +0 -0
  239. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/credential_provider_create_params.py +0 -0
  240. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/credential_provider_item.py +0 -0
  241. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/credential_provider_list_items_response.py +0 -0
  242. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/credential_provider_test_result.py +0 -0
  243. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/credential_provider_update_params.py +0 -0
  244. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/credential_totp_code_response.py +0 -0
  245. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/credential_update_params.py +0 -0
  246. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/deployment_create_params.py +0 -0
  247. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/deployment_create_response.py +0 -0
  248. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/deployment_follow_params.py +0 -0
  249. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/deployment_follow_response.py +0 -0
  250. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/deployment_list_response.py +0 -0
  251. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/deployment_retrieve_response.py +0 -0
  252. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/deployment_state_event.py +0 -0
  253. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/extension_download_from_chrome_store_params.py +0 -0
  254. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/extension_list_response.py +0 -0
  255. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/extension_upload_params.py +0 -0
  256. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/extension_upload_response.py +0 -0
  257. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/invocation_create_params.py +0 -0
  258. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/invocation_create_response.py +0 -0
  259. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/invocation_follow_params.py +0 -0
  260. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/invocation_follow_response.py +0 -0
  261. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/invocation_list_browsers_response.py +0 -0
  262. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/invocation_list_response.py +0 -0
  263. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/invocation_retrieve_response.py +0 -0
  264. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/invocation_state_event.py +0 -0
  265. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/invocation_update_params.py +0 -0
  266. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/invocation_update_response.py +0 -0
  267. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/organization/__init__.py +0 -0
  268. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/organization/limit_update_params.py +0 -0
  269. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/organization/org_limits.py +0 -0
  270. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/profile.py +0 -0
  271. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/profile_create_params.py +0 -0
  272. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/profile_list_params.py +0 -0
  273. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/project.py +0 -0
  274. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/project_create_params.py +0 -0
  275. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/project_list_params.py +0 -0
  276. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/project_update_params.py +0 -0
  277. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/projects/__init__.py +0 -0
  278. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/projects/limit_update_params.py +0 -0
  279. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/projects/project_limits.py +0 -0
  280. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/proxy_check_params.py +0 -0
  281. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/proxy_check_response.py +0 -0
  282. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/proxy_create_params.py +0 -0
  283. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/proxy_create_response.py +0 -0
  284. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/proxy_list_response.py +0 -0
  285. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/proxy_retrieve_response.py +0 -0
  286. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/shared/__init__.py +0 -0
  287. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/shared/app_action.py +0 -0
  288. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/shared/browser_extension.py +0 -0
  289. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/shared/browser_profile.py +0 -0
  290. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/shared/browser_viewport.py +0 -0
  291. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/shared/error_detail.py +0 -0
  292. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/shared/error_event.py +0 -0
  293. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/shared/error_model.py +0 -0
  294. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/shared/heartbeat_event.py +0 -0
  295. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/shared/log_event.py +0 -0
  296. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/shared_params/__init__.py +0 -0
  297. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/shared_params/browser_extension.py +0 -0
  298. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/shared_params/browser_profile.py +0 -0
  299. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/shared_params/browser_viewport.py +0 -0
  300. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/tags.py +0 -0
  301. {kernel-0.67.0 → kernel-0.69.0}/src/kernel/types/tags_param.py +0 -0
  302. {kernel-0.67.0 → kernel-0.69.0}/tests/__init__.py +0 -0
  303. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/__init__.py +0 -0
  304. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/auth/__init__.py +0 -0
  305. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/browsers/__init__.py +0 -0
  306. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/browsers/fs/__init__.py +0 -0
  307. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/browsers/fs/test_watch.py +0 -0
  308. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/browsers/test_computer.py +0 -0
  309. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/browsers/test_fs.py +0 -0
  310. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/browsers/test_logs.py +0 -0
  311. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/browsers/test_playwright.py +0 -0
  312. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/browsers/test_process.py +0 -0
  313. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/browsers/test_replays.py +0 -0
  314. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/browsers/test_telemetry.py +0 -0
  315. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/organization/__init__.py +0 -0
  316. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/organization/test_limits.py +0 -0
  317. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/projects/__init__.py +0 -0
  318. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/projects/test_limits.py +0 -0
  319. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/test_apps.py +0 -0
  320. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/test_browsers.py +0 -0
  321. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/test_profiles.py +0 -0
  322. {kernel-0.67.0 → kernel-0.69.0}/tests/api_resources/test_projects.py +0 -0
  323. {kernel-0.67.0 → kernel-0.69.0}/tests/conftest.py +0 -0
  324. {kernel-0.67.0 → kernel-0.69.0}/tests/sample_file.txt +0 -0
  325. {kernel-0.67.0 → kernel-0.69.0}/tests/test_browser_routing.py +0 -0
  326. {kernel-0.67.0 → kernel-0.69.0}/tests/test_client.py +0 -0
  327. {kernel-0.67.0 → kernel-0.69.0}/tests/test_extract_files.py +0 -0
  328. {kernel-0.67.0 → kernel-0.69.0}/tests/test_files.py +0 -0
  329. {kernel-0.67.0 → kernel-0.69.0}/tests/test_models.py +0 -0
  330. {kernel-0.67.0 → kernel-0.69.0}/tests/test_qs.py +0 -0
  331. {kernel-0.67.0 → kernel-0.69.0}/tests/test_required_args.py +0 -0
  332. {kernel-0.67.0 → kernel-0.69.0}/tests/test_response.py +0 -0
  333. {kernel-0.67.0 → kernel-0.69.0}/tests/test_streaming.py +0 -0
  334. {kernel-0.67.0 → kernel-0.69.0}/tests/test_transform.py +0 -0
  335. {kernel-0.67.0 → kernel-0.69.0}/tests/test_utils/test_datetime_parse.py +0 -0
  336. {kernel-0.67.0 → kernel-0.69.0}/tests/test_utils/test_json.py +0 -0
  337. {kernel-0.67.0 → kernel-0.69.0}/tests/test_utils/test_path.py +0 -0
  338. {kernel-0.67.0 → kernel-0.69.0}/tests/test_utils/test_proxy.py +0 -0
  339. {kernel-0.67.0 → kernel-0.69.0}/tests/test_utils/test_typing.py +0 -0
  340. {kernel-0.67.0 → kernel-0.69.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.69.0"
3
+ }
@@ -1,5 +1,39 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.69.0 (2026-06-18)
4
+
5
+ Full Changelog: [v0.68.0...v0.69.0](https://github.com/kernel/kernel-python-sdk/compare/v0.68.0...v0.69.0)
6
+
7
+ ### Features
8
+
9
+ * Add free-text search to remaining paginated list endpoints ([b34f843](https://github.com/kernel/kernel-python-sdk/commit/b34f843f664307beeb23ec96a1162ee70fd3df1e))
10
+
11
+ ## 0.68.0 (2026-06-15)
12
+
13
+ Full Changelog: [v0.67.0...v0.68.0](https://github.com/kernel/kernel-python-sdk/compare/v0.67.0...v0.68.0)
14
+
15
+ ### Features
16
+
17
+ * Add API key rotate endpoint ([e383f7d](https://github.com/kernel/kernel-python-sdk/commit/e383f7d4b6af4f2921200d4a0f6922e730f58e08))
18
+ * **api:** surface deleted/expired API keys for audit trail (KERNEL-1350) ([55e32db](https://github.com/kernel/kernel-python-sdk/commit/55e32dbaf07275c63623a31ec6df88c6aa128f8f))
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * **pagination:** correct type:ignore placement; stop on 0 sentinel ([5d2afd7](https://github.com/kernel/kernel-python-sdk/commit/5d2afd7df0f2d21d754ca936286ac3a92762e9db))
24
+ * **pagination:** fail loudly on contradictory headers; test both classes ([4554697](https://github.com/kernel/kernel-python-sdk/commit/4554697a9d850848b602a2422199fb2ce72d8efc))
25
+ * **pagination:** stop skipping a page per auto-pagination iteration ([c0a3e14](https://github.com/kernel/kernel-python-sdk/commit/c0a3e14b51e39dfdba37bacf023b2f98d4a3be69))
26
+
27
+
28
+ ### Styles
29
+
30
+ * ruff import-sort and format the pagination test ([843fade](https://github.com/kernel/kernel-python-sdk/commit/843fadeb07fb7cebd5d2689eb78511bb8ee0d293))
31
+
32
+
33
+ ### Refactors
34
+
35
+ * **api:** align API key audit surface with browser sibling (KERNEL-1350) ([12868d1](https://github.com/kernel/kernel-python-sdk/commit/12868d18dbb081c0e998299b799ac693dd878d0f))
36
+
3
37
  ## 0.67.0 (2026-06-11)
4
38
 
5
39
  Full Changelog: [v0.66.0...v0.67.0](https://github.com/kernel/kernel-python-sdk/compare/v0.66.0...v0.67.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: kernel
3
- Version: 0.67.0
3
+ Version: 0.69.0
4
4
  Summary: The official Python library for the kernel API
5
5
  Project-URL: Homepage, https://github.com/kernel/kernel-python-sdk
6
6
  Project-URL: Repository, https://github.com/kernel/kernel-python-sdk
@@ -220,8 +220,8 @@ first_page = await client.deployments.list(
220
220
  )
221
221
 
222
222
  print(
223
- f"the current start offset for this page: {first_page.next_offset}"
224
- ) # => "the current start offset for this page: 1"
223
+ f"the offset where the next page starts: {first_page.next_offset}"
224
+ ) # => "the offset where the next page starts: 2"
225
225
  for deployment in first_page.items:
226
226
  print(deployment.id)
227
227
 
@@ -185,8 +185,8 @@ first_page = await client.deployments.list(
185
185
  )
186
186
 
187
187
  print(
188
- f"the current start offset for this page: {first_page.next_offset}"
189
- ) # => "the current start offset for this page: 1"
188
+ f"the offset where the next page starts: {first_page.next_offset}"
189
+ ) # => "the offset where the next page starts: 2"
190
190
  for deployment in first_page.items:
191
191
  print(deployment.id)
192
192
 
@@ -449,10 +449,11 @@ from kernel.types import APIKey, CreatedAPIKey
449
449
  Methods:
450
450
 
451
451
  - <code title="post /org/api_keys">client.api_keys.<a href="./src/kernel/resources/api_keys.py">create</a>(\*\*<a href="src/kernel/types/api_key_create_params.py">params</a>) -> <a href="./src/kernel/types/created_api_key.py">CreatedAPIKey</a></code>
452
- - <code title="get /org/api_keys/{id}">client.api_keys.<a href="./src/kernel/resources/api_keys.py">retrieve</a>(id) -> <a href="./src/kernel/types/api_key.py">APIKey</a></code>
452
+ - <code title="get /org/api_keys/{id}">client.api_keys.<a href="./src/kernel/resources/api_keys.py">retrieve</a>(id, \*\*<a href="src/kernel/types/api_key_retrieve_params.py">params</a>) -> <a href="./src/kernel/types/api_key.py">APIKey</a></code>
453
453
  - <code title="patch /org/api_keys/{id}">client.api_keys.<a href="./src/kernel/resources/api_keys.py">update</a>(id, \*\*<a href="src/kernel/types/api_key_update_params.py">params</a>) -> <a href="./src/kernel/types/api_key.py">APIKey</a></code>
454
454
  - <code title="get /org/api_keys">client.api_keys.<a href="./src/kernel/resources/api_keys.py">list</a>(\*\*<a href="src/kernel/types/api_key_list_params.py">params</a>) -> <a href="./src/kernel/types/api_key.py">SyncOffsetPagination[APIKey]</a></code>
455
455
  - <code title="delete /org/api_keys/{id}">client.api_keys.<a href="./src/kernel/resources/api_keys.py">delete</a>(id) -> None</code>
456
+ - <code title="post /org/api_keys/{id}/rotate">client.api_keys.<a href="./src/kernel/resources/api_keys.py">rotate</a>(id, \*\*<a href="src/kernel/types/api_key_rotate_params.py">params</a>) -> <a href="./src/kernel/types/created_api_key.py">CreatedAPIKey</a></code>
456
457
 
457
458
  # CredentialProviders
458
459
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kernel"
3
- version = "0.67.0"
3
+ version = "0.69.0"
4
4
  description = "The official Python library for the kernel API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "kernel"
4
- __version__ = "0.67.0" # x-release-please-version
4
+ __version__ = "0.69.0" # x-release-please-version
@@ -40,12 +40,20 @@ class SyncOffsetPagination(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
40
40
  def next_page_info(self) -> Optional[PageInfo]:
41
41
  next_offset = self.next_offset
42
42
  if next_offset is None:
43
- return None # type: ignore[unreachable]
43
+ if self.has_more: # type: ignore[unreachable]
44
+ raise RuntimeError(
45
+ "Server reported X-Has-More: true without an X-Next-Offset header; "
46
+ "refusing to silently truncate pagination"
47
+ )
48
+ return None
44
49
 
45
- length = len(self._get_page_items())
46
- current_count = next_offset + length
50
+ # X-Next-Offset is the next page's absolute start, or 0 on the last page
51
+ # (the API's stop sentinel). Only a positive offset advances; the old code
52
+ # added the current page length on top, skipping a page per iteration.
53
+ if next_offset == 0:
54
+ return None
47
55
 
48
- return PageInfo(params={"offset": current_count})
56
+ return PageInfo(params={"offset": next_offset})
49
57
 
50
58
  @classmethod
51
59
  def build(cls: Type[_BaseModelT], *, response: Response, data: object) -> _BaseModelT: # noqa: ARG003
@@ -83,12 +91,20 @@ class AsyncOffsetPagination(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
83
91
  def next_page_info(self) -> Optional[PageInfo]:
84
92
  next_offset = self.next_offset
85
93
  if next_offset is None:
86
- return None # type: ignore[unreachable]
87
-
88
- length = len(self._get_page_items())
89
- current_count = next_offset + length
90
-
91
- return PageInfo(params={"offset": current_count})
94
+ if self.has_more: # type: ignore[unreachable]
95
+ raise RuntimeError(
96
+ "Server reported X-Has-More: true without an X-Next-Offset header; "
97
+ "refusing to silently truncate pagination"
98
+ )
99
+ return None
100
+
101
+ # X-Next-Offset is the next page's absolute start, or 0 on the last page
102
+ # (the API's stop sentinel). Only a positive offset advances; the old code
103
+ # added the current page length on top, skipping a page per iteration.
104
+ if next_offset == 0:
105
+ return None
106
+
107
+ return PageInfo(params={"offset": next_offset})
92
108
 
93
109
  @classmethod
94
110
  def build(cls: Type[_BaseModelT], *, response: Response, data: object) -> _BaseModelT: # noqa: ARG003
@@ -7,7 +7,13 @@ from typing_extensions import Literal
7
7
 
8
8
  import httpx
9
9
 
10
- from ..types import api_key_list_params, api_key_create_params, api_key_update_params
10
+ from ..types import (
11
+ api_key_list_params,
12
+ api_key_create_params,
13
+ api_key_rotate_params,
14
+ api_key_update_params,
15
+ api_key_retrieve_params,
16
+ )
11
17
  from .._types import Body, Omit, Query, Headers, NoneType, NotGiven, omit, not_given
12
18
  from .._utils import path_template, maybe_transform, async_maybe_transform
13
19
  from .._compat import cached_property
@@ -99,6 +105,7 @@ class APIKeysResource(SyncAPIResource):
99
105
  self,
100
106
  id: str,
101
107
  *,
108
+ include_deleted: bool | Omit = omit,
102
109
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
103
110
  # The extra values given here take precedence over values defined on the client or passed to this method.
104
111
  extra_headers: Headers | None = None,
@@ -112,6 +119,9 @@ class APIKeysResource(SyncAPIResource):
112
119
  masked.
113
120
 
114
121
  Args:
122
+ include_deleted: When true, return the API key even if it has been deleted (soft-deleted), for
123
+ audit purposes. Defaults to false, which returns 404 for a deleted key.
124
+
115
125
  extra_headers: Send extra headers
116
126
 
117
127
  extra_query: Add additional query parameters to the request
@@ -125,7 +135,13 @@ class APIKeysResource(SyncAPIResource):
125
135
  return self._get(
126
136
  path_template("/org/api_keys/{id}", id=id),
127
137
  options=make_request_options(
128
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
138
+ extra_headers=extra_headers,
139
+ extra_query=extra_query,
140
+ extra_body=extra_body,
141
+ timeout=timeout,
142
+ query=maybe_transform(
143
+ {"include_deleted": include_deleted}, api_key_retrieve_params.APIKeyRetrieveParams
144
+ ),
129
145
  ),
130
146
  cast_to=APIKey,
131
147
  )
@@ -170,11 +186,13 @@ class APIKeysResource(SyncAPIResource):
170
186
  def list(
171
187
  self,
172
188
  *,
189
+ include_deleted: bool | Omit = omit,
173
190
  limit: int | Omit = omit,
174
191
  offset: int | Omit = omit,
175
192
  query: str | Omit = omit,
176
193
  sort_by: Literal["created_at", "name", "expires_at"] | Omit = omit,
177
194
  sort_direction: Literal["asc", "desc"] | Omit = omit,
195
+ status: Literal["active", "deleted", "all"] | Omit = omit,
178
196
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
179
197
  # The extra values given here take precedence over values defined on the client or passed to this method.
180
198
  extra_headers: Headers | None = None,
@@ -187,6 +205,9 @@ class APIKeysResource(SyncAPIResource):
187
205
  API keys are masked.
188
206
 
189
207
  Args:
208
+ include_deleted: Deprecated: use status=all instead. When true, include deleted (soft-deleted)
209
+ API keys in the results for audit purposes.
210
+
190
211
  limit: Maximum number of results to return
191
212
 
192
213
  offset: Number of results to skip
@@ -198,6 +219,10 @@ class APIKeysResource(SyncAPIResource):
198
219
 
199
220
  sort_direction: Sort direction for API keys.
200
221
 
222
+ status: Filter API keys by status. "active" returns keys that are not deleted (default;
223
+ expired-but-not-deleted keys are still included), "deleted" returns only
224
+ soft-deleted keys, "all" returns both.
225
+
201
226
  extra_headers: Send extra headers
202
227
 
203
228
  extra_query: Add additional query parameters to the request
@@ -216,11 +241,13 @@ class APIKeysResource(SyncAPIResource):
216
241
  timeout=timeout,
217
242
  query=maybe_transform(
218
243
  {
244
+ "include_deleted": include_deleted,
219
245
  "limit": limit,
220
246
  "offset": offset,
221
247
  "query": query,
222
248
  "sort_by": sort_by,
223
249
  "sort_direction": sort_direction,
250
+ "status": status,
224
251
  },
225
252
  api_key_list_params.APIKeyListParams,
226
253
  ),
@@ -262,6 +289,57 @@ class APIKeysResource(SyncAPIResource):
262
289
  cast_to=NoneType,
263
290
  )
264
291
 
292
+ def rotate(
293
+ self,
294
+ id: str,
295
+ *,
296
+ days_to_expire: Optional[int] | Omit = omit,
297
+ expire_in_days: Optional[int] | Omit = omit,
298
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
299
+ # The extra values given here take precedence over values defined on the client or passed to this method.
300
+ extra_headers: Headers | None = None,
301
+ extra_query: Query | None = None,
302
+ extra_body: Body | None = None,
303
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
304
+ ) -> CreatedAPIKey:
305
+ """Rotate an API key.
306
+
307
+ Issues a new key that copies the name and project of the
308
+ rotated key, and schedules the rotated key to expire after a grace period so
309
+ in-flight callers can swap over. The new plaintext key is returned once.
310
+
311
+ Args:
312
+ days_to_expire: Lifetime in days for the new key, up to 3650. Omit to reuse the rotated key's
313
+ original lifetime, or never-expires if it had none.
314
+
315
+ expire_in_days: Grace period in days before the rotated key expires. Use 0 to expire it
316
+ immediately. Omit for the default grace period of 7 days.
317
+
318
+ extra_headers: Send extra headers
319
+
320
+ extra_query: Add additional query parameters to the request
321
+
322
+ extra_body: Add additional JSON properties to the request
323
+
324
+ timeout: Override the client-level default timeout for this request, in seconds
325
+ """
326
+ if not id:
327
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
328
+ return self._post(
329
+ path_template("/org/api_keys/{id}/rotate", id=id),
330
+ body=maybe_transform(
331
+ {
332
+ "days_to_expire": days_to_expire,
333
+ "expire_in_days": expire_in_days,
334
+ },
335
+ api_key_rotate_params.APIKeyRotateParams,
336
+ ),
337
+ options=make_request_options(
338
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
339
+ ),
340
+ cast_to=CreatedAPIKey,
341
+ )
342
+
265
343
 
266
344
  class AsyncAPIKeysResource(AsyncAPIResource):
267
345
  """Create and manage API keys for organization and project-scoped access."""
@@ -336,6 +414,7 @@ class AsyncAPIKeysResource(AsyncAPIResource):
336
414
  self,
337
415
  id: str,
338
416
  *,
417
+ include_deleted: bool | Omit = omit,
339
418
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
340
419
  # The extra values given here take precedence over values defined on the client or passed to this method.
341
420
  extra_headers: Headers | None = None,
@@ -349,6 +428,9 @@ class AsyncAPIKeysResource(AsyncAPIResource):
349
428
  masked.
350
429
 
351
430
  Args:
431
+ include_deleted: When true, return the API key even if it has been deleted (soft-deleted), for
432
+ audit purposes. Defaults to false, which returns 404 for a deleted key.
433
+
352
434
  extra_headers: Send extra headers
353
435
 
354
436
  extra_query: Add additional query parameters to the request
@@ -362,7 +444,13 @@ class AsyncAPIKeysResource(AsyncAPIResource):
362
444
  return await self._get(
363
445
  path_template("/org/api_keys/{id}", id=id),
364
446
  options=make_request_options(
365
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
447
+ extra_headers=extra_headers,
448
+ extra_query=extra_query,
449
+ extra_body=extra_body,
450
+ timeout=timeout,
451
+ query=await async_maybe_transform(
452
+ {"include_deleted": include_deleted}, api_key_retrieve_params.APIKeyRetrieveParams
453
+ ),
366
454
  ),
367
455
  cast_to=APIKey,
368
456
  )
@@ -407,11 +495,13 @@ class AsyncAPIKeysResource(AsyncAPIResource):
407
495
  def list(
408
496
  self,
409
497
  *,
498
+ include_deleted: bool | Omit = omit,
410
499
  limit: int | Omit = omit,
411
500
  offset: int | Omit = omit,
412
501
  query: str | Omit = omit,
413
502
  sort_by: Literal["created_at", "name", "expires_at"] | Omit = omit,
414
503
  sort_direction: Literal["asc", "desc"] | Omit = omit,
504
+ status: Literal["active", "deleted", "all"] | Omit = omit,
415
505
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
416
506
  # The extra values given here take precedence over values defined on the client or passed to this method.
417
507
  extra_headers: Headers | None = None,
@@ -424,6 +514,9 @@ class AsyncAPIKeysResource(AsyncAPIResource):
424
514
  API keys are masked.
425
515
 
426
516
  Args:
517
+ include_deleted: Deprecated: use status=all instead. When true, include deleted (soft-deleted)
518
+ API keys in the results for audit purposes.
519
+
427
520
  limit: Maximum number of results to return
428
521
 
429
522
  offset: Number of results to skip
@@ -435,6 +528,10 @@ class AsyncAPIKeysResource(AsyncAPIResource):
435
528
 
436
529
  sort_direction: Sort direction for API keys.
437
530
 
531
+ status: Filter API keys by status. "active" returns keys that are not deleted (default;
532
+ expired-but-not-deleted keys are still included), "deleted" returns only
533
+ soft-deleted keys, "all" returns both.
534
+
438
535
  extra_headers: Send extra headers
439
536
 
440
537
  extra_query: Add additional query parameters to the request
@@ -453,11 +550,13 @@ class AsyncAPIKeysResource(AsyncAPIResource):
453
550
  timeout=timeout,
454
551
  query=maybe_transform(
455
552
  {
553
+ "include_deleted": include_deleted,
456
554
  "limit": limit,
457
555
  "offset": offset,
458
556
  "query": query,
459
557
  "sort_by": sort_by,
460
558
  "sort_direction": sort_direction,
559
+ "status": status,
461
560
  },
462
561
  api_key_list_params.APIKeyListParams,
463
562
  ),
@@ -499,6 +598,57 @@ class AsyncAPIKeysResource(AsyncAPIResource):
499
598
  cast_to=NoneType,
500
599
  )
501
600
 
601
+ async def rotate(
602
+ self,
603
+ id: str,
604
+ *,
605
+ days_to_expire: Optional[int] | Omit = omit,
606
+ expire_in_days: Optional[int] | Omit = omit,
607
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
608
+ # The extra values given here take precedence over values defined on the client or passed to this method.
609
+ extra_headers: Headers | None = None,
610
+ extra_query: Query | None = None,
611
+ extra_body: Body | None = None,
612
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
613
+ ) -> CreatedAPIKey:
614
+ """Rotate an API key.
615
+
616
+ Issues a new key that copies the name and project of the
617
+ rotated key, and schedules the rotated key to expire after a grace period so
618
+ in-flight callers can swap over. The new plaintext key is returned once.
619
+
620
+ Args:
621
+ days_to_expire: Lifetime in days for the new key, up to 3650. Omit to reuse the rotated key's
622
+ original lifetime, or never-expires if it had none.
623
+
624
+ expire_in_days: Grace period in days before the rotated key expires. Use 0 to expire it
625
+ immediately. Omit for the default grace period of 7 days.
626
+
627
+ extra_headers: Send extra headers
628
+
629
+ extra_query: Add additional query parameters to the request
630
+
631
+ extra_body: Add additional JSON properties to the request
632
+
633
+ timeout: Override the client-level default timeout for this request, in seconds
634
+ """
635
+ if not id:
636
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
637
+ return await self._post(
638
+ path_template("/org/api_keys/{id}/rotate", id=id),
639
+ body=await async_maybe_transform(
640
+ {
641
+ "days_to_expire": days_to_expire,
642
+ "expire_in_days": expire_in_days,
643
+ },
644
+ api_key_rotate_params.APIKeyRotateParams,
645
+ ),
646
+ options=make_request_options(
647
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
648
+ ),
649
+ cast_to=CreatedAPIKey,
650
+ )
651
+
502
652
 
503
653
  class APIKeysResourceWithRawResponse:
504
654
  def __init__(self, api_keys: APIKeysResource) -> None:
@@ -519,6 +669,9 @@ class APIKeysResourceWithRawResponse:
519
669
  self.delete = to_raw_response_wrapper(
520
670
  api_keys.delete,
521
671
  )
672
+ self.rotate = to_raw_response_wrapper(
673
+ api_keys.rotate,
674
+ )
522
675
 
523
676
 
524
677
  class AsyncAPIKeysResourceWithRawResponse:
@@ -540,6 +693,9 @@ class AsyncAPIKeysResourceWithRawResponse:
540
693
  self.delete = async_to_raw_response_wrapper(
541
694
  api_keys.delete,
542
695
  )
696
+ self.rotate = async_to_raw_response_wrapper(
697
+ api_keys.rotate,
698
+ )
543
699
 
544
700
 
545
701
  class APIKeysResourceWithStreamingResponse:
@@ -561,6 +717,9 @@ class APIKeysResourceWithStreamingResponse:
561
717
  self.delete = to_streamed_response_wrapper(
562
718
  api_keys.delete,
563
719
  )
720
+ self.rotate = to_streamed_response_wrapper(
721
+ api_keys.rotate,
722
+ )
564
723
 
565
724
 
566
725
  class AsyncAPIKeysResourceWithStreamingResponse:
@@ -582,3 +741,6 @@ class AsyncAPIKeysResourceWithStreamingResponse:
582
741
  self.delete = async_to_streamed_response_wrapper(
583
742
  api_keys.delete,
584
743
  )
744
+ self.rotate = async_to_streamed_response_wrapper(
745
+ api_keys.rotate,
746
+ )
@@ -310,6 +310,7 @@ class ConnectionsResource(SyncAPIResource):
310
310
  limit: int | Omit = omit,
311
311
  offset: int | Omit = omit,
312
312
  profile_name: str | Omit = omit,
313
+ query: str | Omit = omit,
313
314
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
314
315
  # The extra values given here take precedence over values defined on the client or passed to this method.
315
316
  extra_headers: Headers | None = None,
@@ -329,6 +330,8 @@ class ConnectionsResource(SyncAPIResource):
329
330
 
330
331
  profile_name: Filter by profile name
331
332
 
333
+ query: Search auth connections by ID, domain, or profile name.
334
+
332
335
  extra_headers: Send extra headers
333
336
 
334
337
  extra_query: Add additional query parameters to the request
@@ -351,6 +354,7 @@ class ConnectionsResource(SyncAPIResource):
351
354
  "limit": limit,
352
355
  "offset": offset,
353
356
  "profile_name": profile_name,
357
+ "query": query,
354
358
  },
355
359
  connection_list_params.ConnectionListParams,
356
360
  ),
@@ -827,6 +831,7 @@ class AsyncConnectionsResource(AsyncAPIResource):
827
831
  limit: int | Omit = omit,
828
832
  offset: int | Omit = omit,
829
833
  profile_name: str | Omit = omit,
834
+ query: str | Omit = omit,
830
835
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
831
836
  # The extra values given here take precedence over values defined on the client or passed to this method.
832
837
  extra_headers: Headers | None = None,
@@ -846,6 +851,8 @@ class AsyncConnectionsResource(AsyncAPIResource):
846
851
 
847
852
  profile_name: Filter by profile name
848
853
 
854
+ query: Search auth connections by ID, domain, or profile name.
855
+
849
856
  extra_headers: Send extra headers
850
857
 
851
858
  extra_query: Add additional query parameters to the request
@@ -868,6 +875,7 @@ class AsyncConnectionsResource(AsyncAPIResource):
868
875
  "limit": limit,
869
876
  "offset": offset,
870
877
  "profile_name": profile_name,
878
+ "query": query,
871
879
  },
872
880
  connection_list_params.ConnectionListParams,
873
881
  ),
@@ -330,6 +330,7 @@ class BrowserPoolsResource(SyncAPIResource):
330
330
  *,
331
331
  limit: int | Omit = omit,
332
332
  offset: int | Omit = omit,
333
+ query: str | Omit = omit,
333
334
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
334
335
  # The extra values given here take precedence over values defined on the client or passed to this method.
335
336
  extra_headers: Headers | None = None,
@@ -345,6 +346,8 @@ class BrowserPoolsResource(SyncAPIResource):
345
346
 
346
347
  offset: Offset the number of browser pools to return.
347
348
 
349
+ query: Search browser pools by name or ID.
350
+
348
351
  extra_headers: Send extra headers
349
352
 
350
353
  extra_query: Add additional query parameters to the request
@@ -365,6 +368,7 @@ class BrowserPoolsResource(SyncAPIResource):
365
368
  {
366
369
  "limit": limit,
367
370
  "offset": offset,
371
+ "query": query,
368
372
  },
369
373
  browser_pool_list_params.BrowserPoolListParams,
370
374
  ),
@@ -851,6 +855,7 @@ class AsyncBrowserPoolsResource(AsyncAPIResource):
851
855
  *,
852
856
  limit: int | Omit = omit,
853
857
  offset: int | Omit = omit,
858
+ query: str | Omit = omit,
854
859
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
855
860
  # The extra values given here take precedence over values defined on the client or passed to this method.
856
861
  extra_headers: Headers | None = None,
@@ -866,6 +871,8 @@ class AsyncBrowserPoolsResource(AsyncAPIResource):
866
871
 
867
872
  offset: Offset the number of browser pools to return.
868
873
 
874
+ query: Search browser pools by name or ID.
875
+
869
876
  extra_headers: Send extra headers
870
877
 
871
878
  extra_query: Add additional query parameters to the request
@@ -886,6 +893,7 @@ class AsyncBrowserPoolsResource(AsyncAPIResource):
886
893
  {
887
894
  "limit": limit,
888
895
  "offset": offset,
896
+ "query": query,
889
897
  },
890
898
  browser_pool_list_params.BrowserPoolListParams,
891
899
  ),
@@ -200,6 +200,7 @@ class CredentialProvidersResource(SyncAPIResource):
200
200
  *,
201
201
  limit: int | Omit = omit,
202
202
  offset: int | Omit = omit,
203
+ query: str | Omit = omit,
203
204
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
204
205
  # The extra values given here take precedence over values defined on the client or passed to this method.
205
206
  extra_headers: Headers | None = None,
@@ -215,6 +216,8 @@ class CredentialProvidersResource(SyncAPIResource):
215
216
 
216
217
  offset: Offset the number of credential providers to return.
217
218
 
219
+ query: Search credential providers by name or ID.
220
+
218
221
  extra_headers: Send extra headers
219
222
 
220
223
  extra_query: Add additional query parameters to the request
@@ -235,6 +238,7 @@ class CredentialProvidersResource(SyncAPIResource):
235
238
  {
236
239
  "limit": limit,
237
240
  "offset": offset,
241
+ "query": query,
238
242
  },
239
243
  credential_provider_list_params.CredentialProviderListParams,
240
244
  ),
@@ -514,6 +518,7 @@ class AsyncCredentialProvidersResource(AsyncAPIResource):
514
518
  *,
515
519
  limit: int | Omit = omit,
516
520
  offset: int | Omit = omit,
521
+ query: str | Omit = omit,
517
522
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
518
523
  # The extra values given here take precedence over values defined on the client or passed to this method.
519
524
  extra_headers: Headers | None = None,
@@ -529,6 +534,8 @@ class AsyncCredentialProvidersResource(AsyncAPIResource):
529
534
 
530
535
  offset: Offset the number of credential providers to return.
531
536
 
537
+ query: Search credential providers by name or ID.
538
+
532
539
  extra_headers: Send extra headers
533
540
 
534
541
  extra_query: Add additional query parameters to the request
@@ -549,6 +556,7 @@ class AsyncCredentialProvidersResource(AsyncAPIResource):
549
556
  {
550
557
  "limit": limit,
551
558
  "offset": offset,
559
+ "query": query,
552
560
  },
553
561
  credential_provider_list_params.CredentialProviderListParams,
554
562
  ),