diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 2fbefb9..85c3118 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.58.0"
+ ".": "0.59.0"
}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index 3cfc09d..5a5e563 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 117
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-3b34d85c005a4058ac1faaea092615af577d12cee6e420f102de57339251672d.yml
-openapi_spec_hash: fad386b8e8712e6639ed9689e9dfc070
-config_hash: 0f222358f24700d1811c5d27078a3849
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-1acd8f0b76ab00e36b53cc3ca90b72b2199f3388b3e307890adb464b87f9a2d8.yml
+openapi_spec_hash: 82003125c1c2c5d82d19270bafb4a6ca
+config_hash: ede72e4ae65cc5a6d6927938b3455c46
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ba1969b..1da0039 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,20 @@
# Changelog
+## 0.59.0 (2026-06-03)
+
+Full Changelog: [v0.58.0...v0.59.0](https://github.com/kernel/kernel-python-sdk/compare/v0.58.0...v0.59.0)
+
+### Features
+
+* api: surface category field on browser telemetry events ([06a2f7b](https://github.com/kernel/kernel-python-sdk/commit/06a2f7babbc8f6ea31e46f3dfeb8d09dbaae88f0))
+* **api:** move browser telemetry SSE stream to /browsers/{id}/telemetry/stream ([5de851a](https://github.com/kernel/kernel-python-sdk/commit/5de851a5ff708a3e42e276e3cf9e2fe7ef0f2ed6))
+* Support Byteful mobile proxies ([8c0ce1c](https://github.com/kernel/kernel-python-sdk/commit/8c0ce1c1533a538483419f4da0937a6153eb5273))
+
+
+### Bug Fixes
+
+* **api:** move batch + get_mouse_position into Browser Computer Controls tag ([7cbc848](https://github.com/kernel/kernel-python-sdk/commit/7cbc848fe33394ee05f5eb96d62cdc8b5b9b9d9c))
+
## 0.58.0 (2026-05-27)
Full Changelog: [v0.57.0...v0.58.0](https://github.com/kernel/kernel-python-sdk/compare/v0.57.0...v0.58.0)
diff --git a/api.md b/api.md
index c9e1b29..a7fda47 100644
--- a/api.md
+++ b/api.md
@@ -143,7 +143,7 @@ from kernel.types.browsers import (
Methods:
-- client.browsers.telemetry.stream(id) -> TelemetryStreamResponse
+- client.browsers.telemetry.stream(id) -> TelemetryStreamResponse
## Replays
diff --git a/pyproject.toml b/pyproject.toml
index 3ff0ba8..24264fb 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "kernel"
-version = "0.58.0"
+version = "0.59.0"
description = "The official Python library for the kernel API"
dynamic = ["readme"]
license = "Apache-2.0"
diff --git a/src/kernel/_version.py b/src/kernel/_version.py
index 9422de8..86fdb65 100644
--- a/src/kernel/_version.py
+++ b/src/kernel/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "kernel"
-__version__ = "0.58.0" # x-release-please-version
+__version__ = "0.59.0" # x-release-please-version
diff --git a/src/kernel/resources/browsers/browsers.py b/src/kernel/resources/browsers/browsers.py
index c020c28..801cd15 100644
--- a/src/kernel/resources/browsers/browsers.py
+++ b/src/kernel/resources/browsers/browsers.py
@@ -133,6 +133,7 @@ def logs(self) -> LogsResource:
@cached_property
def computer(self) -> ComputerResource:
+ """Control mouse, keyboard, and screen on the browser instance."""
return ComputerResource(self._client)
@cached_property
@@ -680,6 +681,7 @@ def logs(self) -> AsyncLogsResource:
@cached_property
def computer(self) -> AsyncComputerResource:
+ """Control mouse, keyboard, and screen on the browser instance."""
return AsyncComputerResource(self._client)
@cached_property
@@ -1250,6 +1252,7 @@ def logs(self) -> LogsResourceWithRawResponse:
@cached_property
def computer(self) -> ComputerResourceWithRawResponse:
+ """Control mouse, keyboard, and screen on the browser instance."""
return ComputerResourceWithRawResponse(self._browsers.computer)
@cached_property
@@ -1311,6 +1314,7 @@ def logs(self) -> AsyncLogsResourceWithRawResponse:
@cached_property
def computer(self) -> AsyncComputerResourceWithRawResponse:
+ """Control mouse, keyboard, and screen on the browser instance."""
return AsyncComputerResourceWithRawResponse(self._browsers.computer)
@cached_property
@@ -1372,6 +1376,7 @@ def logs(self) -> LogsResourceWithStreamingResponse:
@cached_property
def computer(self) -> ComputerResourceWithStreamingResponse:
+ """Control mouse, keyboard, and screen on the browser instance."""
return ComputerResourceWithStreamingResponse(self._browsers.computer)
@cached_property
@@ -1433,6 +1438,7 @@ def logs(self) -> AsyncLogsResourceWithStreamingResponse:
@cached_property
def computer(self) -> AsyncComputerResourceWithStreamingResponse:
+ """Control mouse, keyboard, and screen on the browser instance."""
return AsyncComputerResourceWithStreamingResponse(self._browsers.computer)
@cached_property
diff --git a/src/kernel/resources/browsers/computer.py b/src/kernel/resources/browsers/computer.py
index 54b638e..d2b5730 100644
--- a/src/kernel/resources/browsers/computer.py
+++ b/src/kernel/resources/browsers/computer.py
@@ -46,6 +46,8 @@
class ComputerResource(SyncAPIResource):
+ """Control mouse, keyboard, and screen on the browser instance."""
+
@cached_property
def with_raw_response(self) -> ComputerResourceWithRawResponse:
"""
@@ -649,6 +651,8 @@ def write_clipboard(
class AsyncComputerResource(AsyncAPIResource):
+ """Control mouse, keyboard, and screen on the browser instance."""
+
@cached_property
def with_raw_response(self) -> AsyncComputerResourceWithRawResponse:
"""
diff --git a/src/kernel/resources/browsers/telemetry.py b/src/kernel/resources/browsers/telemetry.py
index cb95b2d..008b1d2 100644
--- a/src/kernel/resources/browsers/telemetry.py
+++ b/src/kernel/resources/browsers/telemetry.py
@@ -80,7 +80,7 @@ def stream(
extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
extra_headers = {**strip_not_given({"Last-Event-ID": last_event_id}), **(extra_headers or {})}
return self._get(
- path_template("/browsers/{id}/telemetry", id=id),
+ path_template("/browsers/{id}/telemetry/stream", id=id),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
@@ -149,7 +149,7 @@ async def stream(
extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
extra_headers = {**strip_not_given({"Last-Event-ID": last_event_id}), **(extra_headers or {})}
return await self._get(
- path_template("/browsers/{id}/telemetry", id=id),
+ path_template("/browsers/{id}/telemetry/stream", id=id),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
diff --git a/src/kernel/types/browsers/browser_console_error_event.py b/src/kernel/types/browsers/browser_console_error_event.py
index a152f94..72a93ed 100644
--- a/src/kernel/types/browsers/browser_console_error_event.py
+++ b/src/kernel/types/browsers/browser_console_error_event.py
@@ -65,6 +65,8 @@ class BrowserConsoleErrorEvent(BaseModel):
Emitted from two distinct CDP sources with different data shapes. Runtime.consoleAPICalled (console.error calls) produces level, text, args, and stack_trace. Runtime.exceptionThrown (uncaught exceptions) produces text, line, column, source_url, and stack_trace. Fields not applicable to the source are absent.
"""
+ category: Literal["console"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_console_log_event.py b/src/kernel/types/browsers/browser_console_log_event.py
index 5994c0b..338f6c8 100644
--- a/src/kernel/types/browsers/browser_console_log_event.py
+++ b/src/kernel/types/browsers/browser_console_log_event.py
@@ -42,6 +42,8 @@ class Data(BrowserEventContext):
class BrowserConsoleLogEvent(BaseModel):
"""A browser console log event (console.log, console.info, console.warn, etc.)."""
+ category: Literal["console"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_interaction_click_event.py b/src/kernel/types/browsers/browser_interaction_click_event.py
index efc76b3..7c4f611 100644
--- a/src/kernel/types/browsers/browser_interaction_click_event.py
+++ b/src/kernel/types/browsers/browser_interaction_click_event.py
@@ -35,6 +35,8 @@ class Data(BrowserEventContext):
class BrowserInteractionClickEvent(BaseModel):
"""A browser user click event captured via injected page script."""
+ category: Literal["interaction"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_interaction_key_event.py b/src/kernel/types/browsers/browser_interaction_key_event.py
index e886033..93f2c43 100644
--- a/src/kernel/types/browsers/browser_interaction_key_event.py
+++ b/src/kernel/types/browsers/browser_interaction_key_event.py
@@ -29,6 +29,8 @@ class Data(BrowserEventContext):
class BrowserInteractionKeyEvent(BaseModel):
"""A browser keyboard event captured via injected page script."""
+ category: Literal["interaction"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_interaction_scroll_settled_event.py b/src/kernel/types/browsers/browser_interaction_scroll_settled_event.py
index 16b7536..2c7ee24 100644
--- a/src/kernel/types/browsers/browser_interaction_scroll_settled_event.py
+++ b/src/kernel/types/browsers/browser_interaction_scroll_settled_event.py
@@ -37,6 +37,8 @@ class BrowserInteractionScrollSettledEvent(BaseModel):
A browser scroll settled event emitted after scroll position stops changing, captured via injected page script.
"""
+ category: Literal["interaction"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_monitor_disconnected_event.py b/src/kernel/types/browsers/browser_monitor_disconnected_event.py
index b329ab1..ac37ec6 100644
--- a/src/kernel/types/browsers/browser_monitor_disconnected_event.py
+++ b/src/kernel/types/browsers/browser_monitor_disconnected_event.py
@@ -20,6 +20,8 @@ class BrowserMonitorDisconnectedEvent(BaseModel):
Telemetry events may be dropped until monitor_reconnected arrives. Treat any in-progress computed state (network_idle, page_layout_settled) as unreliable until then.
"""
+ category: Literal["system"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_monitor_init_failed_event.py b/src/kernel/types/browsers/browser_monitor_init_failed_event.py
index a745fb8..dba0e5d 100644
--- a/src/kernel/types/browsers/browser_monitor_init_failed_event.py
+++ b/src/kernel/types/browsers/browser_monitor_init_failed_event.py
@@ -17,6 +17,8 @@ class Data(BaseModel):
class BrowserMonitorInitFailedEvent(BaseModel):
"""The CDP session could not be initialized."""
+ category: Literal["system"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_monitor_reconnect_failed_event.py b/src/kernel/types/browsers/browser_monitor_reconnect_failed_event.py
index 79308d2..57eec69 100644
--- a/src/kernel/types/browsers/browser_monitor_reconnect_failed_event.py
+++ b/src/kernel/types/browsers/browser_monitor_reconnect_failed_event.py
@@ -23,6 +23,8 @@ class BrowserMonitorReconnectFailedEvent(BaseModel):
The CDP connection to Chrome could not be re-established after exhausting all reconnection attempts. No further telemetry events will arrive on this session.
"""
+ category: Literal["system"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_monitor_reconnected_event.py b/src/kernel/types/browsers/browser_monitor_reconnected_event.py
index a49ad35..3936336 100644
--- a/src/kernel/types/browsers/browser_monitor_reconnected_event.py
+++ b/src/kernel/types/browsers/browser_monitor_reconnected_event.py
@@ -19,6 +19,8 @@ class BrowserMonitorReconnectedEvent(BaseModel):
The CDP connection to Chrome was successfully re-established after a disconnection. Events emitted during the gap are lost. Computed state is reset, so navigation and network tracking restart fresh from this point.
"""
+ category: Literal["system"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_monitor_screenshot_event.py b/src/kernel/types/browsers/browser_monitor_screenshot_event.py
index 9b446fa..bd2dc65 100644
--- a/src/kernel/types/browsers/browser_monitor_screenshot_event.py
+++ b/src/kernel/types/browsers/browser_monitor_screenshot_event.py
@@ -17,6 +17,8 @@ class Data(BaseModel):
class BrowserMonitorScreenshotEvent(BaseModel):
"""A periodic screenshot of the browser viewport."""
+ category: Literal["system"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_network_idle_event.py b/src/kernel/types/browsers/browser_network_idle_event.py
index 4b4fae6..b187711 100644
--- a/src/kernel/types/browsers/browser_network_idle_event.py
+++ b/src/kernel/types/browsers/browser_network_idle_event.py
@@ -15,6 +15,8 @@ class BrowserNetworkIdleEvent(BaseModel):
A browser network idle event emitted after a 500ms quiet period with no in-flight HTTP requests.
"""
+ category: Literal["network"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_network_loading_failed_event.py b/src/kernel/types/browsers/browser_network_loading_failed_event.py
index bf566a6..ac6b796 100644
--- a/src/kernel/types/browsers/browser_network_loading_failed_event.py
+++ b/src/kernel/types/browsers/browser_network_loading_failed_event.py
@@ -39,6 +39,8 @@ class BrowserNetworkLoadingFailedEvent(BaseModel):
If the request was already in flight when CDP attached (no prior network_request was emitted for it), url, frame_id, loader_id, and resource_type are absent; BrowserEventContext is partially populated in that case.
"""
+ category: Literal["network"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_network_request_event.py b/src/kernel/types/browsers/browser_network_request_event.py
index e1bd942..efea950 100644
--- a/src/kernel/types/browsers/browser_network_request_event.py
+++ b/src/kernel/types/browsers/browser_network_request_event.py
@@ -55,6 +55,8 @@ class Data(BrowserEventContext):
class BrowserNetworkRequestEvent(BaseModel):
"""A browser network request sent event."""
+ category: Literal["network"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_network_response_event.py b/src/kernel/types/browsers/browser_network_response_event.py
index 8a71d24..b39fefb 100644
--- a/src/kernel/types/browsers/browser_network_response_event.py
+++ b/src/kernel/types/browsers/browser_network_response_event.py
@@ -52,6 +52,8 @@ class BrowserNetworkResponseEvent(BaseModel):
Fired after the response body is fully received, not when headers arrive.
"""
+ category: Literal["network"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_page_dom_content_loaded_event.py b/src/kernel/types/browsers/browser_page_dom_content_loaded_event.py
index e917ca3..99393cc 100644
--- a/src/kernel/types/browsers/browser_page_dom_content_loaded_event.py
+++ b/src/kernel/types/browsers/browser_page_dom_content_loaded_event.py
@@ -26,6 +26,8 @@ class Data(BrowserEventContext):
class BrowserPageDomContentLoadedEvent(BaseModel):
"""A browser DOMContentLoaded event (CDP Page.domContentEventFired)."""
+ category: Literal["page"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_page_layout_settled_event.py b/src/kernel/types/browsers/browser_page_layout_settled_event.py
index 289b53a..f0558f1 100644
--- a/src/kernel/types/browsers/browser_page_layout_settled_event.py
+++ b/src/kernel/types/browsers/browser_page_layout_settled_event.py
@@ -15,6 +15,8 @@ class BrowserPageLayoutSettledEvent(BaseModel):
A browser layout settled event emitted 1 second after page load with no intervening layout shifts, indicating visual stability. Each layout shift resets the 1-second timer.
"""
+ category: Literal["page"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_page_layout_shift_event.py b/src/kernel/types/browsers/browser_page_layout_shift_event.py
index 336bfce..fb578ac 100644
--- a/src/kernel/types/browsers/browser_page_layout_shift_event.py
+++ b/src/kernel/types/browsers/browser_page_layout_shift_event.py
@@ -50,6 +50,8 @@ class BrowserPageLayoutShiftEvent(BaseModel):
A browser cumulative layout shift (CLS) event from the Performance Timeline API.
"""
+ category: Literal["page"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_page_lcp_event.py b/src/kernel/types/browsers/browser_page_lcp_event.py
index 13b9c27..0bcbdda 100644
--- a/src/kernel/types/browsers/browser_page_lcp_event.py
+++ b/src/kernel/types/browsers/browser_page_lcp_event.py
@@ -56,6 +56,8 @@ class BrowserPageLcpEvent(BaseModel):
A browser Largest Contentful Paint (LCP) event from the Performance Timeline API.
"""
+ category: Literal["page"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_page_load_event.py b/src/kernel/types/browsers/browser_page_load_event.py
index b4d85c8..f27658f 100644
--- a/src/kernel/types/browsers/browser_page_load_event.py
+++ b/src/kernel/types/browsers/browser_page_load_event.py
@@ -26,6 +26,8 @@ class Data(BrowserEventContext):
class BrowserPageLoadEvent(BaseModel):
"""A browser page load event (CDP Page.loadEventFired)."""
+ category: Literal["page"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_page_navigation_event.py b/src/kernel/types/browsers/browser_page_navigation_event.py
index f857398..5835d6d 100644
--- a/src/kernel/types/browsers/browser_page_navigation_event.py
+++ b/src/kernel/types/browsers/browser_page_navigation_event.py
@@ -41,6 +41,8 @@ class BrowserPageNavigationEvent(BaseModel):
Carries nav context fields inline but not nav_seq, as this event resets the navigation epoch.
"""
+ category: Literal["page"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_page_navigation_settled_event.py b/src/kernel/types/browsers/browser_page_navigation_settled_event.py
index b5227ff..6e5d31c 100644
--- a/src/kernel/types/browsers/browser_page_navigation_settled_event.py
+++ b/src/kernel/types/browsers/browser_page_navigation_settled_event.py
@@ -15,6 +15,8 @@ class BrowserPageNavigationSettledEvent(BaseModel):
Emitted when page_dom_content_loaded and page_layout_settled have both fired for the same navigation, indicating the page is loaded and visually stable. Independent of network_idle; a single pending request does not block it.
"""
+ category: Literal["page"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/browsers/browser_page_tab_opened_event.py b/src/kernel/types/browsers/browser_page_tab_opened_event.py
index 9831aee..144be47 100644
--- a/src/kernel/types/browsers/browser_page_tab_opened_event.py
+++ b/src/kernel/types/browsers/browser_page_tab_opened_event.py
@@ -31,6 +31,8 @@ class BrowserPageTabOpenedEvent(BaseModel):
A new browser tab or target was opened (CDP Target.attachedToTarget for page targets). Fires before a CDP session is attached to the new target, so session_id, frame_id, loader_id, and nav_seq are absent; this event does not compose BrowserEventContext. Consumers reading context fields generically should treat it as a special case.
"""
+ category: Literal["page"]
+
source: BrowserEventSource
"""Provenance metadata identifying which producer emitted the event."""
diff --git a/src/kernel/types/proxy_check_response.py b/src/kernel/types/proxy_check_response.py
index c26d665..f3cdab8 100644
--- a/src/kernel/types/proxy_check_response.py
+++ b/src/kernel/types/proxy_check_response.py
@@ -59,87 +59,14 @@ class ConfigResidentialProxyConfig(BaseModel):
class ConfigMobileProxyConfig(BaseModel):
"""Configuration for mobile proxies."""
- asn: Optional[str] = None
- """Autonomous system number. See https://bgp.potaroo.net/cidr/autnums.html"""
-
- carrier: Optional[
- Literal[
- "a1",
- "aircel",
- "airtel",
- "att",
- "celcom",
- "chinamobile",
- "claro",
- "comcast",
- "cox",
- "digi",
- "dt",
- "docomo",
- "dtac",
- "etisalat",
- "idea",
- "kyivstar",
- "meo",
- "megafon",
- "mtn",
- "mtnza",
- "mts",
- "optus",
- "orange",
- "qwest",
- "reliance_jio",
- "robi",
- "sprint",
- "telefonica",
- "telstra",
- "tmobile",
- "tigo",
- "tim",
- "verizon",
- "vimpelcom",
- "vodacomza",
- "vodafone",
- "vivo",
- "zain",
- "vivabo",
- "telenormyanmar",
- "kcelljsc",
- "swisscom",
- "singtel",
- "asiacell",
- "windit",
- "cellc",
- "ooredoo",
- "drei",
- "umobile",
- "cableone",
- "proximus",
- "tele2",
- "mobitel",
- "o2",
- "bouygues",
- "free",
- "sfr",
- "digicel",
- ]
- ] = None
- """Mobile carrier."""
-
city: Optional[str] = None
- """City name (no spaces, e.g.
-
- `sanfrancisco`). If provided, `country` must also be provided.
- """
+ """Provider city alias. Mobile carrier routing can make observed geo vary."""
country: Optional[str] = None
"""ISO 3166 country code"""
state: Optional[str] = None
- """Two-letter state code."""
-
- zip: Optional[str] = None
- """US ZIP code."""
+ """US-only state code. Mobile carrier routing can make observed geo vary."""
class ConfigCustomProxyConfig(BaseModel):
diff --git a/src/kernel/types/proxy_create_params.py b/src/kernel/types/proxy_create_params.py
index 175b95f..331bd77 100644
--- a/src/kernel/types/proxy_create_params.py
+++ b/src/kernel/types/proxy_create_params.py
@@ -81,85 +81,14 @@ class ConfigResidentialProxyConfig(TypedDict, total=False):
class ConfigMobileProxyConfig(TypedDict, total=False):
"""Configuration for mobile proxies."""
- asn: str
- """Autonomous system number. See https://bgp.potaroo.net/cidr/autnums.html"""
-
- carrier: Literal[
- "a1",
- "aircel",
- "airtel",
- "att",
- "celcom",
- "chinamobile",
- "claro",
- "comcast",
- "cox",
- "digi",
- "dt",
- "docomo",
- "dtac",
- "etisalat",
- "idea",
- "kyivstar",
- "meo",
- "megafon",
- "mtn",
- "mtnza",
- "mts",
- "optus",
- "orange",
- "qwest",
- "reliance_jio",
- "robi",
- "sprint",
- "telefonica",
- "telstra",
- "tmobile",
- "tigo",
- "tim",
- "verizon",
- "vimpelcom",
- "vodacomza",
- "vodafone",
- "vivo",
- "zain",
- "vivabo",
- "telenormyanmar",
- "kcelljsc",
- "swisscom",
- "singtel",
- "asiacell",
- "windit",
- "cellc",
- "ooredoo",
- "drei",
- "umobile",
- "cableone",
- "proximus",
- "tele2",
- "mobitel",
- "o2",
- "bouygues",
- "free",
- "sfr",
- "digicel",
- ]
- """Mobile carrier."""
-
city: str
- """City name (no spaces, e.g.
-
- `sanfrancisco`). If provided, `country` must also be provided.
- """
+ """Provider city alias. Mobile carrier routing can make observed geo vary."""
country: str
"""ISO 3166 country code"""
state: str
- """Two-letter state code."""
-
- zip: str
- """US ZIP code."""
+ """US-only state code. Mobile carrier routing can make observed geo vary."""
class ConfigCreateCustomProxyConfig(TypedDict, total=False):
diff --git a/src/kernel/types/proxy_create_response.py b/src/kernel/types/proxy_create_response.py
index d317662..d71656c 100644
--- a/src/kernel/types/proxy_create_response.py
+++ b/src/kernel/types/proxy_create_response.py
@@ -59,87 +59,14 @@ class ConfigResidentialProxyConfig(BaseModel):
class ConfigMobileProxyConfig(BaseModel):
"""Configuration for mobile proxies."""
- asn: Optional[str] = None
- """Autonomous system number. See https://bgp.potaroo.net/cidr/autnums.html"""
-
- carrier: Optional[
- Literal[
- "a1",
- "aircel",
- "airtel",
- "att",
- "celcom",
- "chinamobile",
- "claro",
- "comcast",
- "cox",
- "digi",
- "dt",
- "docomo",
- "dtac",
- "etisalat",
- "idea",
- "kyivstar",
- "meo",
- "megafon",
- "mtn",
- "mtnza",
- "mts",
- "optus",
- "orange",
- "qwest",
- "reliance_jio",
- "robi",
- "sprint",
- "telefonica",
- "telstra",
- "tmobile",
- "tigo",
- "tim",
- "verizon",
- "vimpelcom",
- "vodacomza",
- "vodafone",
- "vivo",
- "zain",
- "vivabo",
- "telenormyanmar",
- "kcelljsc",
- "swisscom",
- "singtel",
- "asiacell",
- "windit",
- "cellc",
- "ooredoo",
- "drei",
- "umobile",
- "cableone",
- "proximus",
- "tele2",
- "mobitel",
- "o2",
- "bouygues",
- "free",
- "sfr",
- "digicel",
- ]
- ] = None
- """Mobile carrier."""
-
city: Optional[str] = None
- """City name (no spaces, e.g.
-
- `sanfrancisco`). If provided, `country` must also be provided.
- """
+ """Provider city alias. Mobile carrier routing can make observed geo vary."""
country: Optional[str] = None
"""ISO 3166 country code"""
state: Optional[str] = None
- """Two-letter state code."""
-
- zip: Optional[str] = None
- """US ZIP code."""
+ """US-only state code. Mobile carrier routing can make observed geo vary."""
class ConfigCustomProxyConfig(BaseModel):
diff --git a/src/kernel/types/proxy_list_response.py b/src/kernel/types/proxy_list_response.py
index bbbe17c..d1ddc07 100644
--- a/src/kernel/types/proxy_list_response.py
+++ b/src/kernel/types/proxy_list_response.py
@@ -60,87 +60,14 @@ class ProxyListResponseItemConfigResidentialProxyConfig(BaseModel):
class ProxyListResponseItemConfigMobileProxyConfig(BaseModel):
"""Configuration for mobile proxies."""
- asn: Optional[str] = None
- """Autonomous system number. See https://bgp.potaroo.net/cidr/autnums.html"""
-
- carrier: Optional[
- Literal[
- "a1",
- "aircel",
- "airtel",
- "att",
- "celcom",
- "chinamobile",
- "claro",
- "comcast",
- "cox",
- "digi",
- "dt",
- "docomo",
- "dtac",
- "etisalat",
- "idea",
- "kyivstar",
- "meo",
- "megafon",
- "mtn",
- "mtnza",
- "mts",
- "optus",
- "orange",
- "qwest",
- "reliance_jio",
- "robi",
- "sprint",
- "telefonica",
- "telstra",
- "tmobile",
- "tigo",
- "tim",
- "verizon",
- "vimpelcom",
- "vodacomza",
- "vodafone",
- "vivo",
- "zain",
- "vivabo",
- "telenormyanmar",
- "kcelljsc",
- "swisscom",
- "singtel",
- "asiacell",
- "windit",
- "cellc",
- "ooredoo",
- "drei",
- "umobile",
- "cableone",
- "proximus",
- "tele2",
- "mobitel",
- "o2",
- "bouygues",
- "free",
- "sfr",
- "digicel",
- ]
- ] = None
- """Mobile carrier."""
-
city: Optional[str] = None
- """City name (no spaces, e.g.
-
- `sanfrancisco`). If provided, `country` must also be provided.
- """
+ """Provider city alias. Mobile carrier routing can make observed geo vary."""
country: Optional[str] = None
"""ISO 3166 country code"""
state: Optional[str] = None
- """Two-letter state code."""
-
- zip: Optional[str] = None
- """US ZIP code."""
+ """US-only state code. Mobile carrier routing can make observed geo vary."""
class ProxyListResponseItemConfigCustomProxyConfig(BaseModel):
diff --git a/src/kernel/types/proxy_retrieve_response.py b/src/kernel/types/proxy_retrieve_response.py
index 6b0b1bb..77d113e 100644
--- a/src/kernel/types/proxy_retrieve_response.py
+++ b/src/kernel/types/proxy_retrieve_response.py
@@ -59,87 +59,14 @@ class ConfigResidentialProxyConfig(BaseModel):
class ConfigMobileProxyConfig(BaseModel):
"""Configuration for mobile proxies."""
- asn: Optional[str] = None
- """Autonomous system number. See https://bgp.potaroo.net/cidr/autnums.html"""
-
- carrier: Optional[
- Literal[
- "a1",
- "aircel",
- "airtel",
- "att",
- "celcom",
- "chinamobile",
- "claro",
- "comcast",
- "cox",
- "digi",
- "dt",
- "docomo",
- "dtac",
- "etisalat",
- "idea",
- "kyivstar",
- "meo",
- "megafon",
- "mtn",
- "mtnza",
- "mts",
- "optus",
- "orange",
- "qwest",
- "reliance_jio",
- "robi",
- "sprint",
- "telefonica",
- "telstra",
- "tmobile",
- "tigo",
- "tim",
- "verizon",
- "vimpelcom",
- "vodacomza",
- "vodafone",
- "vivo",
- "zain",
- "vivabo",
- "telenormyanmar",
- "kcelljsc",
- "swisscom",
- "singtel",
- "asiacell",
- "windit",
- "cellc",
- "ooredoo",
- "drei",
- "umobile",
- "cableone",
- "proximus",
- "tele2",
- "mobitel",
- "o2",
- "bouygues",
- "free",
- "sfr",
- "digicel",
- ]
- ] = None
- """Mobile carrier."""
-
city: Optional[str] = None
- """City name (no spaces, e.g.
-
- `sanfrancisco`). If provided, `country` must also be provided.
- """
+ """Provider city alias. Mobile carrier routing can make observed geo vary."""
country: Optional[str] = None
"""ISO 3166 country code"""
state: Optional[str] = None
- """Two-letter state code."""
-
- zip: Optional[str] = None
- """US ZIP code."""
+ """US-only state code. Mobile carrier routing can make observed geo vary."""
class ConfigCustomProxyConfig(BaseModel):