kernel 0.67.0__tar.gz → 0.68.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.
- kernel-0.68.0/.release-please-manifest.json +3 -0
- {kernel-0.67.0 → kernel-0.68.0}/CHANGELOG.md +26 -0
- {kernel-0.67.0 → kernel-0.68.0}/PKG-INFO +3 -3
- {kernel-0.67.0 → kernel-0.68.0}/README.md +2 -2
- {kernel-0.67.0 → kernel-0.68.0}/api.md +2 -1
- {kernel-0.67.0 → kernel-0.68.0}/pyproject.toml +1 -1
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_version.py +1 -1
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/pagination.py +26 -10
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/api_keys.py +165 -3
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/__init__.py +2 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/api_key.py +6 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/api_key_list_params.py +15 -0
- kernel-0.68.0/src/kernel/types/api_key_retrieve_params.py +15 -0
- kernel-0.68.0/src/kernel/types/api_key_rotate_params.py +23 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/test_api_keys.py +138 -9
- kernel-0.68.0/tests/test_pagination.py +66 -0
- kernel-0.67.0/.release-please-manifest.json +0 -3
- {kernel-0.67.0 → kernel-0.68.0}/.gitignore +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/CONTRIBUTING.md +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/LICENSE +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/SECURITY.md +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/bin/check-release-environment +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/bin/publish-pypi +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/examples/.keep +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/examples/browser_routing.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/examples/browser_telemetry.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/noxfile.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/release-please-config.json +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/requirements-dev.lock +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/requirements.lock +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_base_client.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_client.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_compat.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_constants.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_exceptions.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_files.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_models.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_qs.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_resource.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_streaming.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_types.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_utils/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_utils/_compat.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_utils/_datetime_parse.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_utils/_json.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_utils/_logs.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_utils/_path.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_utils/_proxy.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_utils/_reflection.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_utils/_resources_proxy.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_utils/_streams.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_utils/_sync.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_utils/_transform.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_utils/_typing.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/_utils/_utils.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/app_framework.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/lib/.keep +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/lib/browser_routing/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/lib/browser_routing/raw_http.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/lib/browser_routing/routing.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/lib/browser_routing/util.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/py.typed +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/apps.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/auth/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/auth/auth.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/auth/connections.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/browser_pools.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/browsers/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/browsers/browsers.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/browsers/computer.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/browsers/fs/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/browsers/fs/fs.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/browsers/fs/watch.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/browsers/logs.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/browsers/playwright.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/browsers/process.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/browsers/replays.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/browsers/telemetry.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/credential_providers.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/credentials.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/deployments.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/extensions.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/invocations.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/organization/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/organization/limits.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/organization/organization.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/profiles.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/projects/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/projects/limits.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/projects/projects.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/resources/proxies.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/api_key_create_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/api_key_update_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/app_list_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/app_list_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/auth/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/auth/connection_create_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/auth/connection_follow_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/auth/connection_list_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/auth/connection_login_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/auth/connection_submit_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/auth/connection_update_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/auth/login_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/auth/managed_auth.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/auth/submit_fields_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_create_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_create_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_curl_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_curl_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_list_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_list_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_load_extensions_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_pool.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_pool_acquire_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_pool_acquire_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_pool_create_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_pool_delete_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_pool_list_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_pool_ref.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_pool_release_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_pool_update_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_retrieve_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_retrieve_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_update_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_update_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browser_usage.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_api_call_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_call_stack.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_captcha_solve_result_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_cdp_connect_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_cdp_disconnect_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_console_error_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_console_log_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_event_context.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_event_source.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_http_headers.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_interaction_click_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_interaction_key_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_interaction_scroll_settled_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_live_view_connect_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_live_view_disconnect_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_monitor_disconnected_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_monitor_init_failed_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_monitor_reconnect_failed_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_monitor_reconnected_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_monitor_screenshot_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_network_idle_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_network_loading_failed_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_network_request_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_network_response_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_dom_content_loaded_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_layout_settled_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_layout_shift_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_lcp_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_load_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_navigation_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_navigation_settled_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_tab_opened_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_service_crashed_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_system_oom_kill_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_telemetry_categories_config.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_telemetry_categories_config_param.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_telemetry_category_config.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_telemetry_category_config_param.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_telemetry_config.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_telemetry_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_batch_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_capture_screenshot_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_click_mouse_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_drag_mouse_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_get_mouse_position_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_move_mouse_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_press_key_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_read_clipboard_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_scroll_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_set_cursor_visibility_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_set_cursor_visibility_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_type_text_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_write_clipboard_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/f_create_directory_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/f_delete_directory_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/f_delete_file_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/f_download_dir_zip_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/f_file_info_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/f_file_info_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/f_list_files_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/f_list_files_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/f_move_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/f_read_file_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/f_set_file_permissions_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/f_upload_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/f_upload_zip_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/f_write_file_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/fs/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/fs/watch_events_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/fs/watch_start_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/fs/watch_start_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/log_stream_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/playwright_execute_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/playwright_execute_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/process_exec_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/process_exec_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/process_kill_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/process_kill_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/process_resize_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/process_resize_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/process_spawn_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/process_spawn_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/process_status_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/process_stdin_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/process_stdin_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/process_stdout_stream_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/replay_list_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/replay_start_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/replay_start_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/browsers/telemetry_stream_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/created_api_key.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/credential.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/credential_create_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/credential_list_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/credential_provider.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/credential_provider_create_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/credential_provider_item.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/credential_provider_list_items_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/credential_provider_list_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/credential_provider_test_result.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/credential_provider_update_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/credential_totp_code_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/credential_update_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/deployment_create_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/deployment_create_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/deployment_follow_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/deployment_follow_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/deployment_list_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/deployment_list_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/deployment_retrieve_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/deployment_state_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/extension_download_from_chrome_store_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/extension_list_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/extension_list_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/extension_upload_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/extension_upload_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/invocation_create_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/invocation_create_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/invocation_follow_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/invocation_follow_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/invocation_list_browsers_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/invocation_list_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/invocation_list_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/invocation_retrieve_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/invocation_state_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/invocation_update_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/invocation_update_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/organization/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/organization/limit_update_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/organization/org_limits.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/profile.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/profile_create_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/profile_list_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/project.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/project_create_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/project_list_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/project_update_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/projects/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/projects/limit_update_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/projects/project_limits.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/proxy_check_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/proxy_check_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/proxy_create_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/proxy_create_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/proxy_list_params.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/proxy_list_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/proxy_retrieve_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/shared/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/shared/app_action.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/shared/browser_extension.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/shared/browser_profile.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/shared/browser_viewport.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/shared/error_detail.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/shared/error_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/shared/error_model.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/shared/heartbeat_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/shared/log_event.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/shared_params/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/shared_params/browser_extension.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/shared_params/browser_profile.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/shared_params/browser_viewport.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/tags.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/src/kernel/types/tags_param.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/auth/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/auth/test_connections.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/browsers/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/browsers/fs/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/browsers/fs/test_watch.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/browsers/test_computer.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/browsers/test_fs.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/browsers/test_logs.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/browsers/test_playwright.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/browsers/test_process.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/browsers/test_replays.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/browsers/test_telemetry.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/organization/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/organization/test_limits.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/projects/__init__.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/projects/test_limits.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/test_apps.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/test_browser_pools.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/test_browsers.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/test_credential_providers.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/test_credentials.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/test_deployments.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/test_extensions.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/test_invocations.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/test_profiles.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/test_projects.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/api_resources/test_proxies.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/conftest.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/sample_file.txt +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_browser_routing.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_client.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_extract_files.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_files.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_models.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_qs.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_required_args.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_response.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_streaming.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_transform.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_utils/test_json.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_utils/test_path.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_utils/test_proxy.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/test_utils/test_typing.py +0 -0
- {kernel-0.67.0 → kernel-0.68.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.68.0 (2026-06-15)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.67.0...v0.68.0](https://github.com/kernel/kernel-python-sdk/compare/v0.67.0...v0.68.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* Add API key rotate endpoint ([e383f7d](https://github.com/kernel/kernel-python-sdk/commit/e383f7d4b6af4f2921200d4a0f6922e730f58e08))
|
|
10
|
+
* **api:** surface deleted/expired API keys for audit trail (KERNEL-1350) ([55e32db](https://github.com/kernel/kernel-python-sdk/commit/55e32dbaf07275c63623a31ec6df88c6aa128f8f))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **pagination:** correct type:ignore placement; stop on 0 sentinel ([5d2afd7](https://github.com/kernel/kernel-python-sdk/commit/5d2afd7df0f2d21d754ca936286ac3a92762e9db))
|
|
16
|
+
* **pagination:** fail loudly on contradictory headers; test both classes ([4554697](https://github.com/kernel/kernel-python-sdk/commit/4554697a9d850848b602a2422199fb2ce72d8efc))
|
|
17
|
+
* **pagination:** stop skipping a page per auto-pagination iteration ([c0a3e14](https://github.com/kernel/kernel-python-sdk/commit/c0a3e14b51e39dfdba37bacf023b2f98d4a3be69))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Styles
|
|
21
|
+
|
|
22
|
+
* ruff import-sort and format the pagination test ([843fade](https://github.com/kernel/kernel-python-sdk/commit/843fadeb07fb7cebd5d2689eb78511bb8ee0d293))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Refactors
|
|
26
|
+
|
|
27
|
+
* **api:** align API key audit surface with browser sibling (KERNEL-1350) ([12868d1](https://github.com/kernel/kernel-python-sdk/commit/12868d18dbb081c0e998299b799ac693dd878d0f))
|
|
28
|
+
|
|
3
29
|
## 0.67.0 (2026-06-11)
|
|
4
30
|
|
|
5
31
|
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.
|
|
3
|
+
Version: 0.68.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
|
|
224
|
-
) # => "the
|
|
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
|
|
189
|
-
) # => "the
|
|
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
|
|
|
@@ -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
|
-
|
|
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
|
-
|
|
46
|
-
|
|
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":
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
|
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,
|
|
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,
|
|
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
|
+
)
|
|
@@ -39,6 +39,7 @@ from .proxy_create_params import ProxyCreateParams as ProxyCreateParams
|
|
|
39
39
|
from .proxy_list_response import ProxyListResponse as ProxyListResponse
|
|
40
40
|
from .proxy_check_response import ProxyCheckResponse as ProxyCheckResponse
|
|
41
41
|
from .api_key_create_params import APIKeyCreateParams as APIKeyCreateParams
|
|
42
|
+
from .api_key_rotate_params import APIKeyRotateParams as APIKeyRotateParams
|
|
42
43
|
from .api_key_update_params import APIKeyUpdateParams as APIKeyUpdateParams
|
|
43
44
|
from .browser_create_params import BrowserCreateParams as BrowserCreateParams
|
|
44
45
|
from .browser_curl_response import BrowserCurlResponse as BrowserCurlResponse
|
|
@@ -54,6 +55,7 @@ from .deployment_list_params import DeploymentListParams as DeploymentListParams
|
|
|
54
55
|
from .deployment_state_event import DeploymentStateEvent as DeploymentStateEvent
|
|
55
56
|
from .invocation_list_params import InvocationListParams as InvocationListParams
|
|
56
57
|
from .invocation_state_event import InvocationStateEvent as InvocationStateEvent
|
|
58
|
+
from .api_key_retrieve_params import APIKeyRetrieveParams as APIKeyRetrieveParams
|
|
57
59
|
from .browser_create_response import BrowserCreateResponse as BrowserCreateResponse
|
|
58
60
|
from .browser_retrieve_params import BrowserRetrieveParams as BrowserRetrieveParams
|
|
59
61
|
from .browser_update_response import BrowserUpdateResponse as BrowserUpdateResponse
|
|
@@ -28,6 +28,12 @@ class APIKey(BaseModel):
|
|
|
28
28
|
|
|
29
29
|
created_by: CreatedBy
|
|
30
30
|
|
|
31
|
+
deleted_at: Optional[datetime] = None
|
|
32
|
+
"""When the API key was deleted (soft-deleted).
|
|
33
|
+
|
|
34
|
+
Null for keys that have not been deleted.
|
|
35
|
+
"""
|
|
36
|
+
|
|
31
37
|
expires_at: Optional[datetime] = None
|
|
32
38
|
"""When the API key expires"""
|
|
33
39
|
|
|
@@ -8,6 +8,13 @@ __all__ = ["APIKeyListParams"]
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class APIKeyListParams(TypedDict, total=False):
|
|
11
|
+
include_deleted: bool
|
|
12
|
+
"""Deprecated: use status=all instead.
|
|
13
|
+
|
|
14
|
+
When true, include deleted (soft-deleted) API keys in the results for audit
|
|
15
|
+
purposes.
|
|
16
|
+
"""
|
|
17
|
+
|
|
11
18
|
limit: int
|
|
12
19
|
"""Maximum number of results to return"""
|
|
13
20
|
|
|
@@ -25,3 +32,11 @@ class APIKeyListParams(TypedDict, total=False):
|
|
|
25
32
|
|
|
26
33
|
sort_direction: Literal["asc", "desc"]
|
|
27
34
|
"""Sort direction for API keys."""
|
|
35
|
+
|
|
36
|
+
status: Literal["active", "deleted", "all"]
|
|
37
|
+
"""Filter API keys by status.
|
|
38
|
+
|
|
39
|
+
"active" returns keys that are not deleted (default; expired-but-not-deleted
|
|
40
|
+
keys are still included), "deleted" returns only soft-deleted keys, "all"
|
|
41
|
+
returns both.
|
|
42
|
+
"""
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing_extensions import TypedDict
|
|
6
|
+
|
|
7
|
+
__all__ = ["APIKeyRetrieveParams"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class APIKeyRetrieveParams(TypedDict, total=False):
|
|
11
|
+
include_deleted: bool
|
|
12
|
+
"""
|
|
13
|
+
When true, return the API key even if it has been deleted (soft-deleted), for
|
|
14
|
+
audit purposes. Defaults to false, which returns 404 for a deleted key.
|
|
15
|
+
"""
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from typing_extensions import TypedDict
|
|
7
|
+
|
|
8
|
+
__all__ = ["APIKeyRotateParams"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class APIKeyRotateParams(TypedDict, total=False):
|
|
12
|
+
days_to_expire: Optional[int]
|
|
13
|
+
"""Lifetime in days for the new key, up to 3650.
|
|
14
|
+
|
|
15
|
+
Omit to reuse the rotated key's original lifetime, or never-expires if it had
|
|
16
|
+
none.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
expire_in_days: Optional[int]
|
|
20
|
+
"""Grace period in days before the rotated key expires.
|
|
21
|
+
|
|
22
|
+
Use 0 to expire it immediately. Omit for the default grace period of 7 days.
|
|
23
|
+
"""
|