Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
2add42e
feat(api): api update
stainless-app[bot] May 26, 2026
88c9ae0
feat(api): manual updates
stainless-app[bot] May 29, 2026
3a0956a
codegen metadata
stainless-app[bot] May 30, 2026
b58be1c
feat(api): api update
stainless-app[bot] May 30, 2026
472689f
feat(api): api update
stainless-app[bot] May 30, 2026
6413e60
codegen metadata
stainless-app[bot] May 30, 2026
13645e2
feat(api): api update
stainless-app[bot] Jun 5, 2026
dff2733
codegen metadata
stainless-app[bot] Jun 5, 2026
b01d496
feat(api): enable workflows
stainless-app[bot] Jun 8, 2026
1a4d40d
feat(api): manual updates
stainless-app[bot] Jun 8, 2026
080b0a8
feat(api): api update
stainless-app[bot] Jun 8, 2026
d6eca19
codegen metadata
stainless-app[bot] Jun 9, 2026
ec80ec3
feat(api): add agents-api
stainless-app[bot] Jun 9, 2026
7fa7979
feat(api): manual updates
stainless-app[bot] Jun 9, 2026
1b32b0d
feat(api): manual updates
stainless-app[bot] Jun 9, 2026
f41d4d3
codegen metadata
stainless-app[bot] Jun 9, 2026
f4a6867
codegen metadata
stainless-app[bot] Jun 9, 2026
16e622e
feat(api): manual updates
stainless-app[bot] Jun 9, 2026
7856951
feat(api): mobilerun connect endpoints
stainless-app[bot] Jun 9, 2026
e6b356d
codegen metadata
stainless-app[bot] Jun 9, 2026
83866db
feat(api): api update
stainless-app[bot] Jun 12, 2026
556d797
feat(api): api update
stainless-app[bot] Jun 13, 2026
35bde7e
feat(api): api update
stainless-app[bot] Jun 15, 2026
e97def7
codegen metadata
stainless-app[bot] Jun 15, 2026
e3d86bb
feat(api): manual updates
stainless-app[bot] Jun 15, 2026
4095487
feat(api): api update
stainless-app[bot] Jun 16, 2026
77d7940
codegen metadata
stainless-app[bot] Jun 17, 2026
2653f69
feat(api): api update
stainless-app[bot] Jun 18, 2026
503a23c
feat(api): webhooks
stainless-app[bot] Jun 18, 2026
dddc34a
release: 5.0.0
stainless-app[bot] Jun 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "3.2.0"
".": "5.0.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 104
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/droidrun/droidrun-cloud-9c5542353ace880640fb7e8946c5c8d008480abb8d1952595ba2ee9323aed724.yml
openapi_spec_hash: afa528f0921063291f66c56c6093f2ab
config_hash: 27cfddf59d8227e89667fa012952335c
configured_endpoints: 163
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/droidrun/droidrun-cloud-a00f37a39074e0b00cf6a706aa69307a8ee8f7012966f71037085c5f0fa3ce39.yml
openapi_spec_hash: 8e7f2e32d8d7dfe18060c45f56d8cf48
config_hash: dcea68e3d1becafc8b349671e3a0763d
27 changes: 27 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,32 @@
# Changelog

## 5.0.0 (2026-06-18)

Full Changelog: [v3.2.0...v5.0.0](https://github.com/droidrun/mobilerun-sdk-python/compare/v3.2.0...v5.0.0)

### Features

* **api:** add agents-api ([ec80ec3](https://github.com/droidrun/mobilerun-sdk-python/commit/ec80ec35e333e302f8b09cd8ddf81d69d297f027))
* **api:** api update ([2653f69](https://github.com/droidrun/mobilerun-sdk-python/commit/2653f69563f3120b0d5bbe396d633e7467b06761))
* **api:** api update ([4095487](https://github.com/droidrun/mobilerun-sdk-python/commit/409548750b1d07cd99c5307af6ddf49a1424fe1e))
* **api:** api update ([35bde7e](https://github.com/droidrun/mobilerun-sdk-python/commit/35bde7eff2e6f17347b74f666cfe27efefadf7f1))
* **api:** api update ([556d797](https://github.com/droidrun/mobilerun-sdk-python/commit/556d7977b4aa19bc46ad5d2653b6b533641ee951))
* **api:** api update ([83866db](https://github.com/droidrun/mobilerun-sdk-python/commit/83866db2fe093e794bb103b0289fa09902ecea2e))
* **api:** api update ([080b0a8](https://github.com/droidrun/mobilerun-sdk-python/commit/080b0a8a668e792ddfc8f2ceacb30ca59ac0f45a))
* **api:** api update ([13645e2](https://github.com/droidrun/mobilerun-sdk-python/commit/13645e2290241b8930ad56231b0aac9ffb0d8b9d))
* **api:** api update ([472689f](https://github.com/droidrun/mobilerun-sdk-python/commit/472689f40d0225edcedb331fabda5d9b5ddbe390))
* **api:** api update ([b58be1c](https://github.com/droidrun/mobilerun-sdk-python/commit/b58be1c00be168f8719a56d2ce5c1806ac30ef92))
* **api:** api update ([2add42e](https://github.com/droidrun/mobilerun-sdk-python/commit/2add42ec33a0accad90ab5afe8d27ce22629b871))
* **api:** enable workflows ([b01d496](https://github.com/droidrun/mobilerun-sdk-python/commit/b01d4969bea4f20289720122c261a9897af656f2))
* **api:** manual updates ([e3d86bb](https://github.com/droidrun/mobilerun-sdk-python/commit/e3d86bb03a5d2610bbd71715bc07f4f3cdf423be))
* **api:** manual updates ([16e622e](https://github.com/droidrun/mobilerun-sdk-python/commit/16e622e471e8043c80c30f9904eb74bd168f1b00))
* **api:** manual updates ([1b32b0d](https://github.com/droidrun/mobilerun-sdk-python/commit/1b32b0daa46383c045df0b9ec5e8903d0c6b8808))
* **api:** manual updates ([7fa7979](https://github.com/droidrun/mobilerun-sdk-python/commit/7fa7979dda9d7827014ec82d390c622c3f096929))
* **api:** manual updates ([1a4d40d](https://github.com/droidrun/mobilerun-sdk-python/commit/1a4d40df9fc939af3fc0c1cd7885b450821b7ce2))
* **api:** manual updates ([88c9ae0](https://github.com/droidrun/mobilerun-sdk-python/commit/88c9ae09fe4979789e30e859bf9f7d57f39887c2))
* **api:** mobilerun connect endpoints ([7856951](https://github.com/droidrun/mobilerun-sdk-python/commit/785695138d9ad132ef6ea86802c6b26d89ed9337))
* **api:** webhooks ([503a23c](https://github.com/droidrun/mobilerun-sdk-python/commit/503a23c43caae5325ae2046b5a4d2bca52677816))

## 3.2.0 (2026-05-21)

Full Changelog: [v3.1.0...v3.2.0](https://github.com/droidrun/mobilerun-sdk-python/compare/v3.1.0...v3.2.0)
Expand Down
364 changes: 330 additions & 34 deletions api.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "mobilerun-sdk"
version = "3.2.0"
version = "5.0.0"
description = "The official Python library for the mobilerun API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
169 changes: 125 additions & 44 deletions src/mobilerun_sdk/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,31 @@
)

if TYPE_CHECKING:
from .resources import apps, hooks, tasks, agents, models, devices, proxies, carriers, profiles, credentials
from .resources import (
apps,
hooks,
tasks,
models,
connect,
devices,
proxies,
carriers,
profiles,
webhooks,
workflows,
credentials,
)
from .resources.apps import AppsResource, AsyncAppsResource
from .resources.hooks import HooksResource, AsyncHooksResource
from .resources.agents import AgentsResource, AsyncAgentsResource
from .resources.models import ModelsResource, AsyncModelsResource
from .resources.proxies import ProxiesResource, AsyncProxiesResource
from .resources.carriers import CarriersResource, AsyncCarriersResource
from .resources.profiles import ProfilesResource, AsyncProfilesResource
from .resources.tasks.tasks import TasksResource, AsyncTasksResource
from .resources.connect.connect import ConnectResource, AsyncConnectResource
from .resources.devices.devices import DevicesResource, AsyncDevicesResource
from .resources.webhooks.webhooks import WebhooksResource, AsyncWebhooksResource
from .resources.workflows.workflows import WorkflowsResource, AsyncWorkflowsResource
from .resources.credentials.credentials import CredentialsResource, AsyncCredentialsResource

__all__ = [
Expand Down Expand Up @@ -120,13 +135,6 @@ def __init__(
_strict_response_validation=_strict_response_validation,
)

@cached_property
def agents(self) -> AgentsResource:
"""Agents API"""
from .resources.agents import AgentsResource

return AgentsResource(self)

@cached_property
def apps(self) -> AppsResource:
"""App Management"""
Expand Down Expand Up @@ -180,13 +188,31 @@ def proxies(self) -> ProxiesResource:

return ProxiesResource(self)

@cached_property
def connect(self) -> ConnectResource:
from .resources.connect import ConnectResource

return ConnectResource(self)

@cached_property
def tasks(self) -> TasksResource:
"""Tasks API"""
from .resources.tasks import TasksResource

return TasksResource(self)

@cached_property
def workflows(self) -> WorkflowsResource:
from .resources.workflows import WorkflowsResource

return WorkflowsResource(self)

@cached_property
def webhooks(self) -> WebhooksResource:
from .resources.webhooks import WebhooksResource

return WebhooksResource(self)

@cached_property
def with_raw_response(self) -> MobilerunWithRawResponse:
return MobilerunWithRawResponse(self)
Expand Down Expand Up @@ -371,13 +397,6 @@ def __init__(
_strict_response_validation=_strict_response_validation,
)

@cached_property
def agents(self) -> AsyncAgentsResource:
"""Agents API"""
from .resources.agents import AsyncAgentsResource

return AsyncAgentsResource(self)

@cached_property
def apps(self) -> AsyncAppsResource:
"""App Management"""
Expand Down Expand Up @@ -431,13 +450,31 @@ def proxies(self) -> AsyncProxiesResource:

return AsyncProxiesResource(self)

@cached_property
def connect(self) -> AsyncConnectResource:
from .resources.connect import AsyncConnectResource

return AsyncConnectResource(self)

@cached_property
def tasks(self) -> AsyncTasksResource:
"""Tasks API"""
from .resources.tasks import AsyncTasksResource

return AsyncTasksResource(self)

@cached_property
def workflows(self) -> AsyncWorkflowsResource:
from .resources.workflows import AsyncWorkflowsResource

return AsyncWorkflowsResource(self)

@cached_property
def webhooks(self) -> AsyncWebhooksResource:
from .resources.webhooks import AsyncWebhooksResource

return AsyncWebhooksResource(self)

@cached_property
def with_raw_response(self) -> AsyncMobilerunWithRawResponse:
return AsyncMobilerunWithRawResponse(self)
Expand Down Expand Up @@ -568,13 +605,6 @@ class MobilerunWithRawResponse:
def __init__(self, client: Mobilerun) -> None:
self._client = client

@cached_property
def agents(self) -> agents.AgentsResourceWithRawResponse:
"""Agents API"""
from .resources.agents import AgentsResourceWithRawResponse

return AgentsResourceWithRawResponse(self._client.agents)

@cached_property
def apps(self) -> apps.AppsResourceWithRawResponse:
"""App Management"""
Expand Down Expand Up @@ -628,27 +658,38 @@ def proxies(self) -> proxies.ProxiesResourceWithRawResponse:

return ProxiesResourceWithRawResponse(self._client.proxies)

@cached_property
def connect(self) -> connect.ConnectResourceWithRawResponse:
from .resources.connect import ConnectResourceWithRawResponse

return ConnectResourceWithRawResponse(self._client.connect)

@cached_property
def tasks(self) -> tasks.TasksResourceWithRawResponse:
"""Tasks API"""
from .resources.tasks import TasksResourceWithRawResponse

return TasksResourceWithRawResponse(self._client.tasks)

@cached_property
def workflows(self) -> workflows.WorkflowsResourceWithRawResponse:
from .resources.workflows import WorkflowsResourceWithRawResponse

return WorkflowsResourceWithRawResponse(self._client.workflows)

@cached_property
def webhooks(self) -> webhooks.WebhooksResourceWithRawResponse:
from .resources.webhooks import WebhooksResourceWithRawResponse

return WebhooksResourceWithRawResponse(self._client.webhooks)


class AsyncMobilerunWithRawResponse:
_client: AsyncMobilerun

def __init__(self, client: AsyncMobilerun) -> None:
self._client = client

@cached_property
def agents(self) -> agents.AsyncAgentsResourceWithRawResponse:
"""Agents API"""
from .resources.agents import AsyncAgentsResourceWithRawResponse

return AsyncAgentsResourceWithRawResponse(self._client.agents)

@cached_property
def apps(self) -> apps.AsyncAppsResourceWithRawResponse:
"""App Management"""
Expand Down Expand Up @@ -702,27 +743,38 @@ def proxies(self) -> proxies.AsyncProxiesResourceWithRawResponse:

return AsyncProxiesResourceWithRawResponse(self._client.proxies)

@cached_property
def connect(self) -> connect.AsyncConnectResourceWithRawResponse:
from .resources.connect import AsyncConnectResourceWithRawResponse

return AsyncConnectResourceWithRawResponse(self._client.connect)

@cached_property
def tasks(self) -> tasks.AsyncTasksResourceWithRawResponse:
"""Tasks API"""
from .resources.tasks import AsyncTasksResourceWithRawResponse

return AsyncTasksResourceWithRawResponse(self._client.tasks)

@cached_property
def workflows(self) -> workflows.AsyncWorkflowsResourceWithRawResponse:
from .resources.workflows import AsyncWorkflowsResourceWithRawResponse

return AsyncWorkflowsResourceWithRawResponse(self._client.workflows)

@cached_property
def webhooks(self) -> webhooks.AsyncWebhooksResourceWithRawResponse:
from .resources.webhooks import AsyncWebhooksResourceWithRawResponse

return AsyncWebhooksResourceWithRawResponse(self._client.webhooks)


class MobilerunWithStreamedResponse:
_client: Mobilerun

def __init__(self, client: Mobilerun) -> None:
self._client = client

@cached_property
def agents(self) -> agents.AgentsResourceWithStreamingResponse:
"""Agents API"""
from .resources.agents import AgentsResourceWithStreamingResponse

return AgentsResourceWithStreamingResponse(self._client.agents)

@cached_property
def apps(self) -> apps.AppsResourceWithStreamingResponse:
"""App Management"""
Expand Down Expand Up @@ -776,27 +828,38 @@ def proxies(self) -> proxies.ProxiesResourceWithStreamingResponse:

return ProxiesResourceWithStreamingResponse(self._client.proxies)

@cached_property
def connect(self) -> connect.ConnectResourceWithStreamingResponse:
from .resources.connect import ConnectResourceWithStreamingResponse

return ConnectResourceWithStreamingResponse(self._client.connect)

@cached_property
def tasks(self) -> tasks.TasksResourceWithStreamingResponse:
"""Tasks API"""
from .resources.tasks import TasksResourceWithStreamingResponse

return TasksResourceWithStreamingResponse(self._client.tasks)

@cached_property
def workflows(self) -> workflows.WorkflowsResourceWithStreamingResponse:
from .resources.workflows import WorkflowsResourceWithStreamingResponse

return WorkflowsResourceWithStreamingResponse(self._client.workflows)

@cached_property
def webhooks(self) -> webhooks.WebhooksResourceWithStreamingResponse:
from .resources.webhooks import WebhooksResourceWithStreamingResponse

return WebhooksResourceWithStreamingResponse(self._client.webhooks)


class AsyncMobilerunWithStreamedResponse:
_client: AsyncMobilerun

def __init__(self, client: AsyncMobilerun) -> None:
self._client = client

@cached_property
def agents(self) -> agents.AsyncAgentsResourceWithStreamingResponse:
"""Agents API"""
from .resources.agents import AsyncAgentsResourceWithStreamingResponse

return AsyncAgentsResourceWithStreamingResponse(self._client.agents)

@cached_property
def apps(self) -> apps.AsyncAppsResourceWithStreamingResponse:
"""App Management"""
Expand Down Expand Up @@ -850,13 +913,31 @@ def proxies(self) -> proxies.AsyncProxiesResourceWithStreamingResponse:

return AsyncProxiesResourceWithStreamingResponse(self._client.proxies)

@cached_property
def connect(self) -> connect.AsyncConnectResourceWithStreamingResponse:
from .resources.connect import AsyncConnectResourceWithStreamingResponse

return AsyncConnectResourceWithStreamingResponse(self._client.connect)

@cached_property
def tasks(self) -> tasks.AsyncTasksResourceWithStreamingResponse:
"""Tasks API"""
from .resources.tasks import AsyncTasksResourceWithStreamingResponse

return AsyncTasksResourceWithStreamingResponse(self._client.tasks)

@cached_property
def workflows(self) -> workflows.AsyncWorkflowsResourceWithStreamingResponse:
from .resources.workflows import AsyncWorkflowsResourceWithStreamingResponse

return AsyncWorkflowsResourceWithStreamingResponse(self._client.workflows)

@cached_property
def webhooks(self) -> webhooks.AsyncWebhooksResourceWithStreamingResponse:
from .resources.webhooks import AsyncWebhooksResourceWithStreamingResponse

return AsyncWebhooksResourceWithStreamingResponse(self._client.webhooks)


Client = Mobilerun

Expand Down
2 changes: 1 addition & 1 deletion src/mobilerun_sdk/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "mobilerun_sdk"
__version__ = "3.2.0" # x-release-please-version
__version__ = "5.0.0" # x-release-please-version
Loading